单纯形法matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法实现与分析
算法1.单纯形法
具体算例:
标准化后:
用单纯形法求解,程序如下:
clear
clc
M=1000000;
A=[3,2,-3,1,0;1,-2,1,0,1];%系数矩阵
C=[-3,1,2,M,M,0];%价值矩阵
B=[6;4];
Xt=[4 5];
for i=1:length(C)-1
D=0;
for j=1:length(Xt)
D=D+A(j,i)*C(Xt(j));
end
xi(i)=C(i)-D;
end
s=[];
for i=1:length(xi)
if xi(i)<0
s=[s,i];
end
end
f=length(s);
h=1;
while(f)
for k=1:length(s)
j=1;
A
x=[];
for i=1:length(Xt)
if A(i,s(k))>0
x(j)=i;
j=j+1;
end
end
x
if(length(x)+1==1)
break;
end
y=1
x
for i=1:length(x)
if B(x(i))/A(x(i),s(k))
end
end
y=x(y);
end
y1=Xt(y);%»»³ö±äÁ¿
s
k
aa=A(y,s(k))%s(k)Ϊ»»Èë±äÁ¿
A(y,:)=A(y,:)、/aa;
B(y,:)=B(y,:)、/aa;
z=[];
for i=1:length(Xt)
z=[z,i];
end
z
z(y)=[];
z
Xt
for i=1:length(z);
yz=-A(z(i),s(k))
A(z(i),:)=A(z(i),:)+A(y,:)、*yz
B(z(i))
B(y)
yz
B(z(i))=B(z(i))+B(y)、*yz
end
for i=1:length(Xt)
if Xt(i)==y1
Xt(i)=s(k);
break
end
end
Xt
disp('ת»»ºó')
A=A
B=B
AB=[A,B];
for i=1:length(C)
D=0;
for j=1:length(Xt)
D=D+AB(j,i)*C(Xt(j));
end
xi(i)=C(i)-D;
end
xi
s=[];
for i=1:length(xi)-1
if xi(i)<0
s=[s,i];
end
end
s
vpa([A,B;C]);
f=length(s);
h=h+1;
if h==5
break
end
end
-xi(length(xi))