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