您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 修正单纯形法-MATLAB程序
clearA=[121100;123010;215001];[m,n]=size(A);b=[10;15;20];r=[-1-2-31];c=[-1-2-31];bs=[1:3];nbs=[4:4];a1=A(:,4);T=A(:,bs);a2=inv(T)*a1;b=inv(T)*b;A=[eye(m),a2];B=eye(m);xb=B\b;cb=c(bs);cn=c(nbs);con=1;M=zeros(1);whileconM=M+1;t=cb/B;r=c-t*A;ifall(r=0)x(bs)=xb;x(nbs)=0;fx=cb*xb;disp(['当前解是最优解,minz=',num2str(fx)])disp('对应的最优解为,x=')disp(x)breakendrnbs=r(nbs);kk=find(rnbs==min(rnbs));k=kk(1);Anbs=A(:,nbs);yik=B\Anbs(:,k);xb=B\b;%yi0ifall(yik=0)disp('此LP问题无有限的最优解,计算结束',x)disp(xb)breakelsei=find(yik0);w=abs(xb(i,1)./yik(i,1));l=find(w==min(w));rr=min(l);yrrk=yik(rr,1);Abs=A(:,bs);D=Anbs(:,k);Anbs(:,k)=Abs(:,rr);Abs(:,rr)=D;F=bs(rr);bs(rr)=nbs(k);nbs(k)=F;AA=[Anbs,Abs];EE=eye(m);EE(:,rr)=-yik./yrrk;Errk=EE;Errk(rr,rr)=1/yrrk;BB=Errk/B;B=inv(BB);cb=c(:,bs);xb=Errk*xb;x(bs)=xb;x(nbs)=0;fx=cb*xb;endifM=1000disp('此问题无有限最优解')breakendend%结果%当前解是最优解,minz=-15%%对应的最优解为,x=%2.50002.50002.50000
本文标题:修正单纯形法-MATLAB程序
链接地址:https://www.777doc.com/doc-4538721 .html