【數學建模】day01-線性規划問題


 

線性規划問題是在一組線性約束條件下,求線性目標函數最大/最小值的問題。這些約束條件有不等式約束、等式約束以及邊界約束,這和中學講的線性規划無異。

 

此類問題的MATLAB標准形式為:

  image

其中,max問題可以轉換為min求解,三個約束條件分別為不等、等式、邊界約束。

MATLAB求解函數:

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)

param:

  c是目標系數;

  A、b對應不等條件;

  Aeq、beq對用等式條件;

  LB、UB為邊界;

  x0是求解的初始值;

  OPTIONS是控制參數,一般不用。

return:

   x向量是使得目標函數最小的x取值;

  fval是相應的目標函數最優值,若是由max問題轉化為min,還要取反。

 

例題以及matlab求解:

一、求解線性規划問題

  image

求解的matlab程序如下:

 

 1 f = [-2;-3;5];
 2 A = [-2,5,-1;1,3,1];
 3 b = [-10;12];
 4 Aeq = [1,1,1];
 5 beq = 7;
 6 lb = [0;0;0];
 7 ub = [inf;inf;inf];
 8 [x,y]=linprog(f,A,b,Aeq,beq,zeros(3,1));
 9 x
10 y = -y

 

 

 

二、其他可以轉換為線性規划問題,如目標為絕對值函數,指派問題(匈牙利算法),對偶理論與敏感度分析,在此略過,使用時查閱。

 

三、應用建模:投資的收益與風險

imageimage

image

image

image

模型一的求解:

image

image

 

 1 clc,clear
 2 a = 0;
 3 hold on
 4 while a<0.05
 5     c = [-0.05,-0.27,-0.19,-0.185,-0.185]
 6     A = [zeros(4,1),diag([0.025,0.015,0.055,0.026])];
 7     b = a*ones(4,1);
 8     Aeq = [1,1.01,1.02,1.045,1.065];
 9     beq = 1;
10     LB = zeros(5,1);
11     [X,Q] = linprog(c,A,b,Aeq,beq,LB);
12     Q = -Q;
13     Q
14     plot(a,Q,'*k');
15     a = a + 0.001;
16 end
17 xlabel('風險水平a');
18 ylabel('最大收益Q');

 

結果分析:

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM