欢迎来到天天文库
浏览记录
ID:47060296
大小:1.71 MB
页数:20页
时间:2019-07-11
《单纯形算法MATLAB编程报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、标准文档机械优化设计课程作业题目:单纯形程序算法学院:机电工程学院专业:机械工程姓名:郑璐颖学号:2015020287指导老师:王玉林实用文案标准文档2016年4月24日基于MATLAB的单纯形算法实现一.算法简述为求解下面线性规划问题:其中初始可行基为松弛变量对应的列组成.对于一般标准线性规划问题:1.求解上述一般标准线性规划的单纯形算法步骤如下:对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。设初始基为B,然后执行如下步骤:(1).解,求得,(2).计算单纯形乘子w,,得到,对于
2、非基变量,计算判别数,可直接计算令,R为非基变量集合若判别数,则得到一个最优基本可行解,运算结束;否则,转到下一步实用文案标准文档(3).解,得到;若,即的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4).确定下标r,使一.算法框图初始化初始可行基B是否实用文案标准文档输出结果,得到最优解结束是否不存在有限最优解确定下标r,使得高斯迭代三.计算程序Clear%清空工作区Clc%清空命令输入框A=input('A=');b=input('b=');实用文案标准文档c=input('c='
3、);formatrat%可以让结果用分数输出[m,n]=size(A);%取维数E=1:m;E=E';F=n-m+1:n;F=F';D=[E,F];%创建一个一一映射,为了结果能够标准输出X=zeros(1,n);%初始化Xif(n4、相当于求逆panbieshu=w*A-c%计算判别数,后面没有加分号,就是为了计算后能够显示出来[z,k]=max(panbieshu)%k作为进基变量下标fprintf('确定下标并选择进基变量和离基变量为',k);b'./(BA(:,k))%这个式子是为了确定进基变量和离基变量的下标if(z<0.00000000001)%为了使判别数尽可能趋近于零flag=0;%所有判别数都小于0时达到最优解fprintf('已找到最优解!');xB=(Bb')';f=cB*xB';fori=1:nmark=5、0;forj=1:m实用文案标准文档if(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)=0endendfprintf('基向量为:');Xfprintf('目标函数值为:');felseif(BA(:,k)<=0)%如果BA(;,k)中的每一个分量都小于零flag=0;fprintf('此问题不存在最优解!');%若BA(:,k)的第k列均不大于6、0,则该问题不存在最优解elseb1=Bb';temp=inf;fori=1:mif((A(i,k)>0)&&(b1(i)/(A(i,k)+eps))7、dend【备注:文件名字为danchunxing11zly.m】实用文案标准文档四.使用方法以及运算实例在命令窗口中输入rundanchunxing11zly,然后依次按照提示完成约束以及目标函数的矩阵。例1:minS.t窗口输入rundanchunxing11zlyA=[11-2100;2-14010;-12-4001];b=[1084];c=[1-21000]运行结果为:w=000实用文案标准文档panbieshu=-12-1000z=2k=2确定下标并选择进基变量和离基变量为ans=10-82x(2)进8、基,x(6)离基B=实用文案标准文档10101-1002cB=00-2w=00-1panbieshu=00300-1z=3k=实用文案标准文档3确定下标并选择进基变量和离基变量为ans=1/04-2x(3)进基,x(5)离基B=1-2104-10-42cB=01-2w=0-3/2-7/4实用文案标准文档panbieshu=-9/4000-3/2-7/4z=0k=2确定下标并选择进基变量和离基变量为a
4、相当于求逆panbieshu=w*A-c%计算判别数,后面没有加分号,就是为了计算后能够显示出来[z,k]=max(panbieshu)%k作为进基变量下标fprintf('确定下标并选择进基变量和离基变量为',k);b'./(BA(:,k))%这个式子是为了确定进基变量和离基变量的下标if(z<0.00000000001)%为了使判别数尽可能趋近于零flag=0;%所有判别数都小于0时达到最优解fprintf('已找到最优解!');xB=(Bb')';f=cB*xB';fori=1:nmark=
5、0;forj=1:m实用文案标准文档if(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)=0endendfprintf('基向量为:');Xfprintf('目标函数值为:');felseif(BA(:,k)<=0)%如果BA(;,k)中的每一个分量都小于零flag=0;fprintf('此问题不存在最优解!');%若BA(:,k)的第k列均不大于
6、0,则该问题不存在最优解elseb1=Bb';temp=inf;fori=1:mif((A(i,k)>0)&&(b1(i)/(A(i,k)+eps))7、dend【备注:文件名字为danchunxing11zly.m】实用文案标准文档四.使用方法以及运算实例在命令窗口中输入rundanchunxing11zly,然后依次按照提示完成约束以及目标函数的矩阵。例1:minS.t窗口输入rundanchunxing11zlyA=[11-2100;2-14010;-12-4001];b=[1084];c=[1-21000]运行结果为:w=000实用文案标准文档panbieshu=-12-1000z=2k=2确定下标并选择进基变量和离基变量为ans=10-82x(2)进8、基,x(6)离基B=实用文案标准文档10101-1002cB=00-2w=00-1panbieshu=00300-1z=3k=实用文案标准文档3确定下标并选择进基变量和离基变量为ans=1/04-2x(3)进基,x(5)离基B=1-2104-10-42cB=01-2w=0-3/2-7/4实用文案标准文档panbieshu=-9/4000-3/2-7/4z=0k=2确定下标并选择进基变量和离基变量为a
7、dend【备注:文件名字为danchunxing11zly.m】实用文案标准文档四.使用方法以及运算实例在命令窗口中输入rundanchunxing11zly,然后依次按照提示完成约束以及目标函数的矩阵。例1:minS.t窗口输入rundanchunxing11zlyA=[11-2100;2-14010;-12-4001];b=[1084];c=[1-21000]运行结果为:w=000实用文案标准文档panbieshu=-12-1000z=2k=2确定下标并选择进基变量和离基变量为ans=10-82x(2)进
8、基,x(6)离基B=实用文案标准文档10101-1002cB=00-2w=00-1panbieshu=00300-1z=3k=实用文案标准文档3确定下标并选择进基变量和离基变量为ans=1/04-2x(3)进基,x(5)离基B=1-2104-10-42cB=01-2w=0-3/2-7/4实用文案标准文档panbieshu=-9/4000-3/2-7/4z=0k=2确定下标并选择进基变量和离基变量为a
此文档下载收益归作者所有