數學建模(二)線性規劃

課程推薦:6 線性規劃模型基本原理與編程實現_嗶哩嗶哩_bilibili

目錄

一、線性規劃的實例與定義

1.1 線性規劃的實例

1.2 線性規劃的定義

1.3 最優解

1.4 線性規劃的Mathlab標準形式

1.5 使用linprog函數

二、線性規劃模型建模實戰與代碼

2.1 問題提出

2.2 基本假設

2.3 模型的分析與建立?

2.3.1 模型分析

2.3.2 建立模型

2.3.3 多目標線性規劃模型轉化為單目標線性規劃模型——制定界限

2.3.4 求解


在人們的生產實踐中,經常會遇到如何利用現有資源來安排生產,以取得最大經濟效益的問題。此類問題構成了運籌學的一個重要分支:數學規劃。而線性規劃(Linear Programming 簡記LP)則是數學規劃的一個重要分支。

一、線性規劃的實例與定義

1.1 線性規劃的實例

例:某機床廠生產甲、乙兩種機床,每臺銷售后的利潤分別為4千元與3千元。生產甲機床需用A、B機器加工,加工時間分別為每臺 2小時和1小時;生產乙機床需用A、B、C三種機器加工,加工時間為每臺各一小時。若每天可用于加工的機器時數分別為A機器10小時、B機器8小時和C機器7小時,問該廠應生產甲、乙機床各幾臺,才能使總利潤最大?

上述問題的數學模型:設該廠生產x1臺甲機床和x2乙機床時總利潤z最大,則x1,x2應滿足:

以上便是一個線性規劃問題的數學模型,其中變量x1,x2稱之為決策變量,(1.1)式被稱為問題的目標函數,(1.2)中的幾個不等式是問題的約束條件,記為s.t.(即subject to)。

1.2 線性規劃的定義

目標函數約束條件均為線性函數,故被稱為線性規劃問題。線性規劃問題是在一組線性約束條件的限制下,求一線性目標函數最大或最小的問題。

1.3 最優解

滿足約束條件的解x=[x,,L ,xI',稱為線性規劃問題的可行解,而使目標函數達到最大值的可行解叫最優解。

1.4 線性規劃的Mathlab標準形式

線性規劃的目標函數可以是求最大值,也可以是求最小值,約束條件的不等號可以是小于號也可以是大于號。為了避免這種形式多樣性帶來的不便,Matlab中規定線性規劃的標準形式:

其中c和x為n維列向量,A、Aeq為適當維數的矩陣,b、beq為適當維數的列向量。

Matlab中求解線性規劃的命令為

Matlab中的linprog函數是一個線性規劃求解器,可以用于求解線性規劃問題。使用條件滿足Mathlab線性規劃標準形式

[x,fval] = linprog(c,A,b)
[x,fval] = linprog(c,A,b,Aeq,beq)
[x,fval] = linprog(c,A,b,Aeq,beq,lb,ub)

其中,x返回的是決策向量的取值,fval返回的是目標函數的最優值,c為價值向量,A,b對應的是線性不等式約束,Aeq,beq對應的是線性等式約束,lb和ub分別對應的是決策向量的下界向量和上界向量

1.5 使用linprog函數

求解的Matlab程序如下:

f=[-2;-3;5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
x, y=-y

1. 目標函數中求max時,將目標函數的系數全部取反,即可看作求min,代入linprog函數,求得目標函數的最優值再取反回來,便得到了求max時目標函數的最優值(y)。這時,決策向量(x)的取值正對應著求max時目標函數的最優值,所以不變。

2. 約束條件中的不等號為大于號時,系數全部取反,代入linprog函數即可。

二、線性規劃模型建模實戰與代碼

2.1 問題提出

??????? 市場上有n種資產 s_i (i= 1,2,L ,n)可以選擇,現用數額為M的相當大的資金作一個時期的投資。這n種資產在這一時期內購買 s_i平均收益率為r_i風險損失率為q_i,投資越分散,總的風險越少,總體風險可用投資的s_i中最大的一個風險來度量。
????????購買 s_i 時要付交易費費率為p_i,當購買額不超過給定值u_i時,交易費按購買u_i計算。另外,假定同期銀行存款利率是r_0既無交易費又無風險(r_0= 5%)。


????????已知n=4時相關數據如表1.1。

????????試給該公司設計一種投資組合方案,即用給定資金M,有選擇地購買若干種資產或存銀行生息,使凈收益盡可能大,使總體風險盡可能小。

2.2 基本假設

  • (1)投資數額M相當大,為了便于計算,假設M=1。
  • (2)投資越分散,總的風險越小。
  • (3)總體風險用投資項目s_i中最大的一個風險來度量。
  • (4)n+1 種 s_i資產之間是相互獨立的。其中s0表示存入銀行的資產。
  • (5)在投資的這一時期內,r_ip_iq_i為定值,不受意外因素影響。
  • (6)凈收益和總體風險只受r_ip_iq_i影響,不受其它因素干擾。

2.3 模型的分析與建立?

2.3.1 模型分析

  • 1. 首先,我們要明確兩個目標,即收益最大和風險最小,因此這是一個多目標規劃模型
  • 2. 總體風險用所投資的 s_i 中最大的一個風險來衡量,即

????????????????????????????????????????????????????????max\{q_ix_i|i= 1,2,L ,n\}

  • 3. 購買 s_i (i= 1,L ,n) 所付交易費是一個分段函數,即

而所給的定值 u_i (單位:元)相對總投資M很小,p_iu_i更小可以忽略不計,這樣購買 s_i凈收益可以簡化為(r_i-p_i)x_i

2.3.2 建立模型

其中,x_i 表示投資項目 s_i 的資金,i= 0,1,…,n;x0表示存入銀行的資產。約束條件表示總資金投入必須等于M,投資項目 s_i 的資金必須大于等于0。

2.3.3 多目標線性規劃模型轉化為單目標線性規劃模型——制定界限

方案一:固定風險水平,優化收益

在實際投資中,投資者承受風險的程度不一樣, 若給定風險一個界限a,使最大的一個風險\frac{q_ix}{M}\leq a,可找到相應的投資方案。這樣把多目標規劃變成一個目標的線性規劃。

方案二:固定盈利水平,極小化最大風險

給定收益一個界限k。

方案三:設置投資偏好系數

投資者在權衡資產風險和預期收益兩方面時,希望選擇一個令自己滿意的投資組合。因此對風險、收益分別賦予權重s (0<s≤1)和1-s,s稱為投資偏好系數。

2.3.4 求解

模型一:

由于a是任意給定的風險度,沒有一個確定的準則,不同的投資者有不同的風險度。我們從a= 0開始,以步長\Delta a = 0.001進行循環搜索,編制程序如下:

clc,clear
a=0;hold on
while a<0.05c=[-0.05,-0.27,-0.19,-0.185,-0.185];A=[zeros(4,1 ),diag([0.025,0.015,0.055,0.026])];b=a*ones(4,1);Aeq=[1,1.01,1.02,1.045,1.065];beq=1; LB= zeros(5,1);[x,Q]=linprog(C,A,b,Aeq,beq,LB);Q=-Q; plot(a,Q,'*k');a=a+0.001;
end
xlabel('a'),ylabel('Q')

可以看出,在a=0.006附近有一個轉折點,在這一點左邊,風險增加很少時,利潤增長很快。在這一點右邊,風險增加很大時,利潤增長很緩慢,所以對于風險和收益沒有特殊偏好的投資者來說,應該選擇曲線的轉折點作為最優投資組合,所對應投資方案為風險度a= 0.006,收益Q=0.2019,x0=0,x1= 0.24,x1= 0.4,x3= 0.1091,x4= 0.2212。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35425.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35425.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35425.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習深度學習——seq2seq實現機器翻譯(詳細實現與原理推導)

&#x1f468;?&#x1f393;作者簡介&#xff1a;一位即將上大四&#xff0c;正專攻機器學習的保研er &#x1f30c;上期文章&#xff1a;機器學習&&深度學習——seq2seq實現機器翻譯&#xff08;數據集處理&#xff09; &#x1f4da;訂閱專欄&#xff1a;機器學習&…

機器學習編譯系列

機器學習編譯MLC 1. 引言2. 機器學習編譯--概述2.1 什么是機器學習編譯 1. 引言 陳天奇目前任教于CMU&#xff0c;研究方向為機器學習系統。他是TVM、MXNET、XGBoost的主要作者。2022年夏天&#xff0c;陳天奇在B站開設了《機器學習編譯》的課程。 ??《機器學習編譯》課程共分…

立即開始使用 3D 圖像

一、說明 這個故事介紹了使用這種類型的數據來訓練機器學習3D模型。特別是&#xff0c;我們討論了Kaggle中可用的MNIST數據集的3D版本&#xff0c;以及如何使用Keras訓練模型識別3D數字。 3D 數據無處不在。由于我們希望構建AI來與我們的物理世界進行交互&#xff0c;因此使用3…

了解 Langchain?是個啥?:第 1 部分

一、說明 在日常生活中&#xff0c;我們主要致力于構建端到端的應用程序。我們可以使用許多自動 ML 平臺和 CI/CD 管道來自動化 ml 管道。我們還有像Roboflow和Andrew N.G.的登陸AI這樣的工具來自動化或創建端到端的計算機視覺應用程序。 如果我們想在OpenAI或擁抱臉的幫助下創…

Day 26 C++ list容器(鏈表)

文章目錄 list基本概念定義結構雙向迭代器優點缺點List和vector區別存儲結構內存管理迭代器穩定性隨機訪問效率 list構造函數——創建list容器函數原型示例 list 賦值和交換函數原型 list 大小操作函數原型示例 list 插入和刪除函數原型示例 list 數據存取函數原型注意示例 lis…

論文詳解 ——《SNR-Aware Low-light Image Enhancement》

文章目錄 Abstract1.Introduction2. Related Work3. Our Method3.1 Long- and Short-range Branches3.2 SNR-based Spatially-varying Feature Fusion3.3 SNR-guided Attention in Transformer3.4 Loss Function 4. Experiments4.1. Datasets and Implementation Details4.2 Co…

SpringBoot | 使用newWorkStealingPool和CompletableFuture進行并發異步處理

關注wx&#xff1a; CodingTechWork 需求 一個列表操作需要異步處理每個元素&#xff0c;最終需要將列表各個元素的操作結果統一返回&#xff0c;無需關注該列表中的順序執行。這個線程池不會保證任務的順序執行&#xff0c;即為WorkStealing搶占式的工作。 開發模板 線程池…

基于SpringBoot實現MySQL備份與還原

基于SpringBoot實現MySQL備份與還原&#xff0c;需求是在頁面上對所有的平臺數據執行備份和恢復操作&#xff0c;那么就需要使用代碼去調用MySQL備份和恢復的指令&#xff0c;下面是具體實現步驟&#xff1b; MySQL備份表設計 CREATE TABLE IF NOT EXISTS mysql_backups (id …

6.1 安全漏洞與網絡攻擊

數據參考&#xff1a;CISP官方 目錄 安全漏洞及產生原因信息收集與分析網絡攻擊實施后門設置與痕跡清除 一、安全漏洞及產生原因 什么是安全漏洞 安全漏洞也稱脆弱性&#xff0c;是計算機系統存在的缺陷 漏洞的形式 安全漏洞以不同形式存在漏洞數量逐年遞增 漏洞產生的…

前端開發:數組對象判斷重復的方法詳解

前言 在前端開發過程中,關于數據處理是非常常用的操作,尤其是通過算法處理從后端獲取的數據甚為重要。而且在前端開發中,兩大類型的數據處理是必備的:數組和對象。與其說是數據處理,不如說是數組和對象的處理。實際開發中,關于數組數據的處理所占比例更高,尤其是涉及到表…

使用Flask.Request的方法和屬性,獲取get和post請求參數(二)

1、Flask中的request 在Python發送Post、Get等請求時&#xff0c;我們使用到requests庫。Flask中有一個request庫&#xff0c;有其特有的一些方法和屬性&#xff0c;注意跟requests不是同一個。 2、Post請求&#xff1a;request.get_data() 用于服務端獲取客戶端請求數據。注…

理解ConcurrentSkipListMap(有點類似于并發的TreeMap)

是一個分層的結構。 從最上面開始查找&#xff0c;最后層層往下查。 插入和刪除有可能會引起節點Level的變更。 key是有序的&#xff0c;因此可以看做是并發的TreeMap

ubuntu18.04下配置muduoC++11環境

1.安裝muduo依賴的編譯工具及庫 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…

帶你了解SpringBoot支持的復雜參數--自定義對象參數-自動封裝

&#x1f600;前言 本篇博文是關于SpringBoot 在響應客戶端請求時支持的復雜參數和自定義對象參數&#xff0c;希望您能夠喜歡&#x1f60a; &#x1f3e0;個人主頁&#xff1a;晨犀主頁 &#x1f9d1;個人簡介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…

go struct 的常見問題

go struct 的常見問題 1. 什么是struct&#xff1f;2. 如何聲明、定義和創建一個struct&#xff1f;3. struct和其他數據類型&#xff08;如數組、切片、map等&#xff09;有什么區別&#xff1f;4. 如何訪問struct字段&#xff1f;5. struct是否支持繼承&#xff0c;是否支持重…

JavaWeb_xml

文章目錄 1.xml是什么&#xff1f;2.xml的用途 1.xml是什么&#xff1f; xml 是可擴展的標記性語言 2.xml的用途 1、用來保存數據&#xff0c;而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式&#xff08;現在 JSON 為主…

【Github】SourceTree技巧匯總

sourceTree登錄github賬戶 會跳轉到瀏覽器端 按照Git Flow 初始化倉庫分支 克隆遠程倉庫到本地 推送變更到遠程倉庫 合并分支 可以看到目前的本地分支&#xff08;main、iOS_JS&#xff09;和遠程分支&#xff08;origin/main、origin/HEAD、origin/iOS_JS&#xff09;目前所處…

5134. 簡單判斷

文章目錄 Question輸入樣例1&#xff1a; 3 7 0 輸出樣例1&#xff1a; IdeasCode Question 給定三個非負整數 x,y,z &#xff0c;請你按如下要求進行判斷并輸出相應結果&#xff1a; 如果 x>yz &#xff0c;則輸出 。 如果 y>xz &#xff0c;則輸出 -。 如果 xy 且 z0…

pip install總是報錯:ValueError: Trusted host URL must include a host part: ‘#‘

一、問題現象 報錯信息如下&#xff1a; Traceback (most recent call last):File "/user_name/anaconda3/bin/pip", line 11, in <module>sys.exit(main())^^^^^^File "/user_name/anaconda3/lib/python3.11/site-packages/pip/_internal/cli/main.py&…