線性規劃問題之MATLAB實現

2021-07-09 08:14:03 字數 1979 閱讀 5333

by wc  1.7.2016
1.matlab規定線性規劃的標準形式為:

幾個不等式是問題的約束條件,記為 s.t.(即 subject to)。 matlab中求解線性規劃的命令為:

[ x,fval ]=linprog(f,a,b)

[ x,fval ]=linprog(f,a,b,aeq,beq)

[ x,fval ]=linprog(f,a,b,aeq,beq,lb,ub)

其中:返回的x為決策向量的取值; 返回的fval是目標函式的最大值;f為價值向量;a和b對應的是線性不等式約束;aeq和beq對應的是線性等式約束;lb和ub分別對應的是決策向量的下界向量和上界向量。

(1)化為matlab標準型,即

minw=−

2x1−

3x2+

5x3s

.t.[

−215

3−11

]⎡⎣⎢

x1x2

x3⎤⎦

⎥≤[−

1012][

111]

[x1x

2x3]

t=7

(2)求解的matlab程式如下:

f=[-2,-3,5]'

a=[-2,5,-1;1,3,1]; b=[-10;12];

aeq=[1,1,1]; beq=7;

[x,fval]=linprog(f,a,b,aeq,beq,zeros(3,1));

xfval=-fval

這裡的zeros(3,1)是為了產生3行1列的全0矩陣,對應著x1,x2,x3均大於等於0的約束條件。

得出結果如下如所示:

2.可以轉化為線性規劃的問題

做變數變換

並把新變數重新排列成一維向量

即可把模型變換為線性規劃模型,其中:

計算的matlab程式如下所示:

c=[1:4];c=[c,c]';

a=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3]; a=[a,-a];

b=[-2;-1;1/2];

[y,fval]=linprog(c,a,b,,,zeros(8,1));

x=y(1:4)-y(5:8)

得出的結果如下圖所示:

matlab實現之線性規劃

這個實際上就是高中學習過的內容了,不同的是我們需要在matlab上實現它。下面基本上都用的向量和矩陣來描述了。假設我們要求 z ax1 bx2 cx3 那麼z可以描述為z ftx f a,b c x x1x 2x3 然後就是會有一系列的約數條件,讓你求z的max或min 這裡在matlab裡有乙個專...

線性規劃(matlab實現)

那天上了線性規劃,老師總是說,程式設計怎麼實現,一本天大出的薄薄的最優化方法的書,還有程式設計的步驟,我晚上就試了試,這個陣列設定,是按照書上的乙個例題。高興的是單純型表的遍歷正確,但還沒有最後輸出最有值,當時有點困了。b 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 b 6 8 ...

matlab實現線性規劃

標準形式 x,fval exitflag output lambda linprog f a,b aeq,beq,lb,ub 目標函式為最小值 x,fval exitflag output lambda linprog f,a,b,aeq,beq,lb,ub 目標函式為最大值 線性規劃標準形式是 對...