实验二:MATLAB编程单纯形法求解.docx

上传人:李医生 文档编号:6109909 上传时间:2020-09-11 格式:DOCX 页数:11 大小:120.82KB
返回 下载 相关 举报
实验二:MATLAB编程单纯形法求解.docx_第1页
第1页 / 共11页
实验二:MATLAB编程单纯形法求解.docx_第2页
第2页 / 共11页
实验二:MATLAB编程单纯形法求解.docx_第3页
第3页 / 共11页
实验二:MATLAB编程单纯形法求解.docx_第4页
第4页 / 共11页
实验二:MATLAB编程单纯形法求解.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《实验二:MATLAB编程单纯形法求解.docx》由会员分享,可在线阅读,更多相关《实验二:MATLAB编程单纯形法求解.docx(11页珍藏版)》请在三一文库上搜索。

1、最新资料推荐北京联合大学实验报告项目名称:运筹学专题实验报告学院:自动化专业:物流工程班级:1201B学号: 2012100358081姓名:管水城成绩:2015 年5月6日1最新资料推荐实验二: MATLAB编程单纯形法求解一、实验目的:(1) 使学生在程序设计方面得到进一步的训练 ; ,掌握 Matlab (C 或 VB)语言进行程序设计中一些常用方法。(2) 使学生对线性规划的单纯形法有更深的理解 . 二、实验用仪器设备、器材或软件环境计算机 , Matlab R2006三、算法步骤、计算框图、计算程序等本实验主要编写如下线性规划问题的计算程序:min cxAxbs.t.x0, b0其中

2、初始可行基为松弛变量对应的列组成.对于一般标准线性规划问题:min cxAxbs.t.x0, b0求解上述一般标准线性规划的单纯形算法(修正)步骤如下:对于一般的标准形式线性规划问题 ( 求极小问题 ), 首先给定一个初始基本可行解。设初始基为 B, 然后执行如下步骤:(1).解BxBb, 求得xBB 1b,令 xN0, 计算目标函数值 f cB xB以 b(i1,2,., m)记1的第个分量iBbi(2).计算单纯形乘子w,wBCB, 得到w CB B1, 对于非基变量,计算判别cB B 1 pi1数 izicici, 可直接计算cB B Ac 令kmax ,R 为非基变量集合i R若判别数

3、k0 , 则得到一个最优基本可行解,运算结束;否则,转到下一步Byk pk1y0y(3). 解, 得到 ykB pk ;若k, 即k 的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4). 确定下标 r, 使brminbt ,且 ytk0xB为离基变量 ,yrkt: ytk 0ytkrxk为进基变量 , 用 pk替换 pBr, 得到新的基矩阵 B, 还回步骤 (1);2最新资料推荐、计算框图为:开始初始可行基B令 xBB 1b, xN0, fcB xB计算单纯性乘子 wcB1,计算判别数jwpjcj ,jR 非基变量)B(令 k max j , jR是k0?否得到最优解方

4、程 By kpk , 得到 ykB 1 pk ,yk0 ?是否不存在有限确定下标 r, 使得brminbi| yik 0yrkyikxBr 为退基变量,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(nm)%判断是否为标准型fprintf( 不符合要求需引入

5、松弛变量 )flag=0;elseflag=1;B=A(:,n-m+1:n);%找基矩阵cB=c(n-m+1:n);%基矩阵对应目标值的cwhileflagw=cB/B;%计算单纯形乘子,cB/B=cB*inv(B),用 cB/B 的目的是,为了提高运行速度。 。panbieshu=w*A-c%计算判别数 , 后面没有加分号, 就是为了计算后能够显示出来。z,k=max(panbieshu);% k 作为进基变量下标。fprintf(b./(BA(:,%d)为 ,k);b./(BA(:,k)if(z0.000000001)flag=0;%所有判别数都小于0 时达到最优解。 。fprintf(已

6、找到最优解 !n);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 。endendfprintf( 基向量为 :); Xfprintf( 目标函数值为:) ; felseif(BA(:,k)0) & (b1(i)/(A(i,k)+eps)temp )temp=b1(i)/A(i,k);%找退基变量r=i;endendfprintf(x(%d)进基

7、, x(%d)退基 n,k,D(r,2);%显示进基变量和退基变量B(:,r)=A(:,k);cB(r)=c(k);%确定进基退基变量后,相应的基矩阵及新基对应的目标值的 c也相应改变D(r,2)=k;%改变 D中的映射关系endendendend程序保存为danchunxin.m文件四数值实验及其结果:打开 matlab 软件,点击运行 danchunxin.m ,出现命令符要求输入相应矩阵命令。1. 求解:输入数据矩阵如下:A=9 4 1 0 0;4 5 0 1 0;3 10 0 0 1b=360 200 300c=-7 -12 0 0 0点击运行得如下图:5最新资料推荐图 2由实验结果可

8、知,该问题的最优解为: x1=100,x2=0,x3=540,x4=200,x5=0, 最大值为 700。2. 求解:6最新资料推荐输入数据矩阵如下:A=-3 -2 -1 -6 -18 1 0;-1 -0.5 -0.2 -2 -0.5 0 1;0.5 1 0.2 2 0.8 0 0 b=-700 -30 200c=2 7 4 9 5 0 0点击运行得如下图:7最新资料推荐图 3由实验结果可知,该问题的最优解为:x1=15200/33,x2=0,x3=0,x4=0,x5=1250/33,x6=0,最小值为: 1235/3 。3. 求解:输入数据矩阵如下:A=1 -2 1 1 0;4 -1 -2 0 1;-2 0 1 0 0b=11 -3 1c=3 -1 -1 0 0点击运行得如下图:8最新资料推荐图 4由实验结果可知,该线性问题不存在最优解。五实验总结通过该实验,加深了对线性规划问题的理解,并加深了将实际问题进行数学建模转化为可利用 MATLAB软件处理的线性规划问题,通过使用该软件,能充分的将复杂的线性规划问题通过编写程序实现相应的逻辑求解线性规划问题, 在实际操作过程中, 大大的减少了线性规划问题的运算的复杂性。 编写函数程序代码是遇到了很多问题, 但在老师的帮助下, 逐一的解决了, 为进行下面的实验奠定了一定的基础。9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1