線性規劃(matlab實現)

2021-05-22 01:36:00 字數 1344 閱讀 7711

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

b=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];

b=[6;8;4;3];

cb=[0;0;0;0];

c=[-2;-3;0;0;0;0];

a=[ ];

a=[1 1 1 0 0 0;1 2 0 1 0 0;1 0 0 0 1 0;0 1 0 0 0 1];

bin=inv(b);

tb=[ ];%單純型表

tb(1:4,1)=bin*b;

tb(1:4,2:7)=a;

tb(1:4,8)=[inf;inf;inf;inf];

tb(5,1)=inf;

tb(5,2:7)=c'-cb'*bin*a;

tb(5,8)=inf;

display(tb)%單純型表製造完畢

while 1

p=find(tb(5,2:7)<0);%step2

if(isempty(p)) 

check=1;

break;

else

[out_mean,out_order]=min(tb(5,2:7));

q=find(tb(1:4,out_order+1)>0);

if(isempty(q))%step3

check=0;

break;

endend

for i=1:4

s=out_order+1;

if tb(i,s)>0

tb(i,8)=tb(i,1)/tb(i,s)

else

tb(i,8)=inf

endend

[in_mean,in_order]=min(tb(1:4,8));

tb(in_order,:)=tb(in_order,:)/tb(in_order,s);

for i=1:4

if i~=in_order

tb(i,1)=tb(i,1)-tb(in_order,1)*tb(i,s)/tb(in_order,s);

endend

z=tb(5,s);

for j=2:7

tb(5,j)=tb(5,j)-z*tb(in_order,j)/tb(in_order,s);

endfor i=1:4

if i~=in_order

tb(i,2:7)=tb(i,2:7)-tb(in_order,2:7).*tb(i,s)

endend

end

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 目標函式為最大值 線性規劃標準形式是 對...

matlab實現之線性規劃

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

線性規劃問題之MATLAB實現

by wc 1.7.20161.matlab規定線性規劃的標準形式為 幾個不等式是問題的約束條件,記為 s.t.即 subject to matlab中求解線性規劃的命令為 x,fval linprog f,a,b x,fval linprog f,a,b,aeq,beq x,fval linpro...