二阶段法matlab矩阵描述.docxVIP

  • 18
  • 0
  • 约4.38千字
  • 约 11页
  • 2017-05-29 发布于北京
  • 举报
functionTwo_stage(zflag,b,A,Aflag,c)clear;clcformat ratfprintf(\n);zflag=input(请输入所求目标函数的状态(求最大值为1,求最小值为-1):);b=input(请输入资源矩阵b:);A=input(请输入约束矩阵A:);Aflag=input(请输入约束方程的状态矩阵(小于号为-1,等于为0,大于号为1););c=input(请输入目标函数价值系数矩阵c:);%zflag=1;%b=[9 15 5];%A=[5 3 1;-5 6 15;2 1 1];%c=[10 15 12];%Aflag=[-1 -1 1];%-------------------------------------------------标准化ifzflag==-1 c=-1*c;endnb=size(b);[mA,nA]=size(A);fori=1:nbif b(i)0b(i)=-1*b(i);A(i,:)=-1*A(i,:);endend num1=find(Aflag==-1); num2=find(Aflag==0); num3=find(Aflag==1); N=[]; c1=zeros(1,length(c)); %构造第一阶段目标函数系数矩阵 fori=1:length(num1)A(num1(i),nA+1)=1;c(nA+1)=0;c1(nA+1)=0;nA=nA+1;N(i)=nA;endfori=1:length(num3)A(num3(i),nA+1)=-1;A(num3(i),nA+2)=1;c(nA+1)=0;c1(nA+1)=0;c1(nA+2)=-1;nA=nA+2;N(end+1)=nA;endfori=1:length(num2)A(num2(i),nA+1)=1;c1(nA+1)=-1;nA=nA+1;N(end+1)=nA;end%以下部分初始化基变量的下标值矩阵N,基变量的系数矩阵CB%--------------------------------------------------------CB=zeros(1,mA);[mA,nA]=size(A);fori=1:mA CB(i)=c1(N(i)) ; %确定基变量的系数endif (length(num2)+length(num3))~=0 [A,b,c1,N,CB]=first_stage(A,b,c1,N,CB); [A,b,c,N,CB]=second_stage(A,b,c,c1,N,CB);elsefprintf(标准化后初始单纯形表为:);c p=[CB,N,b,A]disp(***********************************************************); [A,b,c,N,CB,t1]=second_stage_diedai(A,b,c,N,CB);%只调用第二阶段迭代过程end% 单纯形法第一阶段函数 %============================================================function [A,b,c1,N,CB]=first_stage(A,b,c1,N,CB)k=1; % k是times=0;Isend=0;temp1= 第;temp2=次后单纯形表为:; b=b;whileIsend==0if (times==0)fprintf(标准化后初始单纯形表为:);elsefprintf(%s%d%s,temp1,times,temp2);endtimes=times+1; [mA,nA]=size(A); t=zeros(1,mA);for j=1:nA %start fort(j)=c1(j)-CB*A(:,j);end %End for c1 p=[CB,N,b,A]t [m1,j]=max(t); %确定导入基,导入基的列下标为col k=max(t);if m1=0 X=zeros(1,nA);fori=1:length(N)X

文档评论(0)

1亿VIP精品文档

相关文档