资源描述:
《实验二:MATLAB编程单纯形法求解.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯最新资料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯北京联合大学实验报告项目名称:运筹学专题实验报告学院:自动化专业:物流工程班级:1201B学号:2012100358081姓名:管水城成绩:2015年5月6日1⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯最新资料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯实验二:MATLAB编程单纯形法求解一、实验目的:(1)使学生在程序设计方面得到进一步的训练;,掌握Matlab(C或VB)语言进行程序设计中一些常
2、用方法。(2)使学生对线性规划的单纯形法有更深的理解.二、实验用仪器设备、器材或软件环境计算机,MatlabR2006三、算法步骤、计算框图、计算程序等本实验主要编写如下线性规划问题的计算程序:mincxAxbs.t.x0,b0其中初始可行基为松弛变量对应的列组成.对于一般标准线性规划问题:mincxAxbs.t.x0,b01.求解上述一般标准线性规划的单纯形算法(修正)步骤如下:对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。设初始基为B,然后执行如下步骤:1(1).
3、解BxBb,求得xBBb,令xN0,计算目标函数值fcBxB1以bi(i1,2,...,m)记Bb的第i个分量1(2).计算单纯形乘子w,wBCB,得到wCBB,对于非基变量,计算判别11数izicicBBpici,可直接计算cBBAc令kmax{},R为非基变量集合iR0若判别数k,则得到一个最优基本可行解,运算结束;否则,转到下一步1(3).解Bykpk,得到ykBpk;若yk0,即yk的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4).确定下标r,使bbrmint,
4、且y0yrkt:y0ytktkx为离基变量,tkBrxk为进基变量,用pk替换pBr,得到新的基矩阵B,还回步骤(1);2⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯最新资料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2、计算框图为:开始初始可行基B1令xBBb,xN0,fcBxB1计算单纯性乘子wcBB,计算判别数jwpjcj,jR(非基变量)令kmax{j,jR}是0?k否得到最优1解方程Bykpk,得到ykBpk,是yk0?否不存在有限确定下标r,使得brbimin
5、yik0yrkyikx
6、Br为退基变量,xk进基变量,以pk代替pBr,得到新的基矩阵B图13.计算程序(Matlab):A=input('A=');b=input('b=');c=input('c=');formatrat%可以让结果用分数输出3⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯最新资料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯[m,n]=size(A);E=1:m;E=E';F=n-m+1:n;F=F';D=[E,F];%创建一个一一映射,为了结果能够标准输出X=zeros(1,n);%初始化Xif(n
7、8、(B\A(:,%d))为',k);b'./(BA(:,k))if(z<0.000000001)flag=0;%所有判别数都小于0时达到最优解。。fprintf('已找到最优解!');xB=(Bb')';f=cB*xB';fori=1:nmark=0;forj=1:mif(D(j,2)==i)mark=1;X(i)=xB(D(j,1));%利用D找出xB与X之间的关系。。endendifmark==0X(i)=0;%如果D中没有X(i),则X(i)为非基变量,所以X(i)=0。。ende
9、ndfprintf('基向量为:');Xfprintf('目标函数值为:');felseif(BA(:,k)<=0)%如果BA(;,k)中的每一个分量都小于零。。flag=0;4⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯最新资料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯fprintf('此问题不存在最优解!');%若BA(:,k)的第k列均不大于0,则该问题不存在最优解。。elseb1=Bb';temp=inf;fori=1:mif((A(i,k)>0)&&(b1(i)/(A