资源描述:
《单纯形法matlab程序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、算法实现与分析算法1.单纯形法具体算例:minz=-3x1+x2+2x33x1+2x2-3x3=6x1-2x2+x3+x5=4x1,x2,x3≥0标准化后:minz=-3x1+x2+2x3+Mx4+Mx53x1+2x2-3x3+x4=6x1-2x2+x3+x5=4x1,x2,x3,x4,x5≥0用单纯形法求解,程序如下:clearclcM=1000000;A=[3,2,-3,1,0;1,-2,1,0,1];%系数矩阵C=[-3,1,2,M,M,0];%价值矩阵B=[6;4];Xt=[45];fori=1:length(C)-1D=0;forj=1:length(
2、Xt)D=D+A(j,i)*C(Xt(j));endxi(i)=C(i)-D;ends=[];fori=1:length(xi)ifxi(i)<0s=[s,i];endendf=length(s);h=1;while(f)fork=1:length(s)j=1;Ax=[];fori=1:length(Xt)ifA(i,s(k))>0x(j)=i;j=j+1;endendxif(length(x)+1==1)break;endy=1xfori=1:length(x)ifB(x(i))/A(x(i),s(k))
3、endy=x(y);endy1=Xt(y);%»»³ö±äÁ¿skaa=A(y,s(k))%s(k)Ϊ»»Èë±äÁ¿A(y,:)=A(y,:)./aa;B(y,:)=B(y,:)./aa;z=[];fori=1:length(Xt)z=[z,i];endzz(y)=[];zXtfori=1:length(z);yz=-A(z(i),s(k))A(z(i),:)=A(z(i),:)+A(y,:).*yzB(z(i))B(y)yzB(z(i))=B(z(i))+B(y).*yzendfori=1:length(Xt)ifXt(i)==y1Xt(i)=s(k);b
4、reakendendXtdisp('ת»»ºó')A=AB=BAB=[A,B];fori=1:length(C)D=0;forj=1:length(Xt)D=D+AB(j,i)*C(Xt(j));endxi(i)=C(i)-D;endxis=[];fori=1:length(xi)-1ifxi(i)<0s=[s,i];endendsvpa([A,B;C]);f=length(s);h=h+1;ifh==5breakendend-xi(length(xi))