用matlab实现线性规划代码 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; end end 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 end end [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); end end
用matlab实现线性规划代码 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; end end 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 end end [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); end end
z=TB(5,s); for j=2:7
TB(5,j)=TB(5,j)-z*TB(in_order,j)/TB(in_order,s); end
for i=1:4
if i~=in_order
TB(i,2:7)=TB(i,2:7)-TB(in_order,2:7).*TB(i,s) end end end