改进单纯形法matlab程序_单纯形法的matlab程序
改进单纯形法matlab程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单纯形法的matlab程序”。
clear clc
X=[1 2 3 4 5];A=[ 1 2 1 0 0;4 0 0 1 0;0 4 0 0 1];C=[2 3 0 0 0 ];b=[8;16;12];t=[3 4 5];B0=A(:,t);while 1
CB0=C(:,t);XN01=X;
for i=1:length(t);
for j=1:length(X);
if XN01(j)==t(i)
XN01(j)=0;
end
end
end j=1;
for i=1:length(X);
if XN01(i)~=0
XN0(j)=XN01(i);
j=j+1;
end
end
for j=1:length(XN0);
CN0(j)=C(XN0(j));
end N0=[];
for i=1:length(XN0);
N0=[N0,A(:,XN0(i))];
end
xiN0=CN0-CB0*B0*N0;j=1;z=[];
for i=1:length(xiN0)
if xiN0(i)>0
z(j)=i;
j=j+1;
end
end
if length(z)+1==1;
break;
end n=1;
for i=1:length(z)
if z(i)>z(n)
n=i;
end
end
k=XN0(z(n));%换入变量 B=B0*b;
P=B0*A(:,k);j=1;
for i=1:length(P)
if P(i)>0
x(j)=i;
j=j+1;
end
end y=1;
for i=1:length(x)
if B(x(y))/P(x(y))>B(x(i))/P(x(i))
y=i;
end
end
y1=x(y);
y=t(y1);%换出变量
for i=1:length(t)
if t(i)==y
m=i;
break;
end
end
t(m)=k;
P2=B0*A(:,k);q=P2(y1);P2(y1)=-1;P2=-P2./q;
E=[1 0 0;0 1 0;0 0 1];E(:,m)=P2;B0=E*B0;end
CB0*B0*b