线性规划的求解算法.doc

线性规划的求解算法.doc

ID:49872319

大小:198.50 KB

页数:9页

时间:2020-03-05

线性规划的求解算法.doc_第1页
线性规划的求解算法.doc_第2页
线性规划的求解算法.doc_第3页
线性规划的求解算法.doc_第4页
线性规划的求解算法.doc_第5页
资源描述:

《线性规划的求解算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、线性规划的求解算法线性规划(linearprogramming)是运筹学中的一个重要分支,在现代工业、农业、商业、交通运输、国防军事及经济管理等诸多领域都有着广泛重要的应用。在数学系的竞赛数学建模中,也多次应用线性规划来建模从而解决实际问题。在这里介绍单纯性法和对偶单纯形法两种求解线性规划的方法。一、单纯形法算法主体思想标准线性规划简记如下:LP-maxLP-mins.t{s.t{这里只以LP-min为例。1、算法思想单纯形法是在已知一个可行基的前提下采用的解决线性规划的算法。步骤如下:(1)输入初始矩阵:,并化为典则形式。用R(i)记录单位矩阵I中元素1的位置。(2)求若t不存

2、在,则得到最优解;(i=1,2,...m).其他9=0,停。否则,转到(3)。(3)求。若不存在,则LP-min无下届,所以无最优解,停;否则,求,转到(4)。(4),(j=1,2....n+1),(i=0,1,2...m;is;j=1,2,....,n+1),,转到(2).二、对偶单纯形法对偶单纯形法是在已知一个正则基的条件下的求解线性规划的方法。步骤如下:(1)输入初始矩阵:,并化为典则形式。用R(i)记录单位矩阵I中元素1的位置。(2)求若s不存在,则得到最优解;(i=1,2,...m).其他=0,停。否则,转到(3)。(3)求。若不存在,则LP-min无下届,所以无最优解

3、,停;否则,求,转到(4)。9(4),(j=1,2....n+1),(i=0,1,2...m;is;j=1,2,....,n+1),,转到(2).三、程序代码1、单纯形法。%求解标准型线性规划:maxc*x;s.t.A*x=b;x>=0%A1是标准系数矩阵及最后一列是资源向量,C是目标函数的系数向量%N是(初始的)基变量的下标%M=10000人工变量系数%本函数中的A是单纯形表,包括:最后一行是初始的检验数,最后一列是资源向量b%c1是基变量系数%输出变量sol是最优解%输出变量val是最优值,k是迭代次数%flag1的值代表有无最优解,0无界解,1无可行解,2无穷多解,3唯一最

4、优解function[sol,val,k,flag1]=ssimplex(A1,C,N)M=10000;[mA1,nA1]=size(A1);C1=[C,0];val=zeros(1,length(C));fori=1:length(N)c1(i)=C1(N(i));endfori=1:nA1a(i)=C1(i)-c1*A1(:,i);%计算初始检验数endA=[A1;a];%构造初始单纯形表[mA,nA]=size(A);k=0;%迭代次数flag=1;whileflagfori=1:(nA-1)ifA(mA,i)<=0flag=0;elseflag=1;9break;ende

5、ndifflag==0%已找到最优解val1=A(1:(mA-1),nA)';fori=1:length(N)if(val1(i)~=0&&abs(C(N(i)))==M)disp('无可行解');sol=inf;val=inf;flag3=0;flag1=1;break;elseflag3=1;endendifflag3iflength(find(A(mA,1:(nA-1))==0))>length(N)disp('存在无穷多最优解');flag1=2;elsedisp('存在最优解');flag1=3;endsol=c1*val1';endelseifflag==1forj=

6、1:(mA-1)ifA(j,i)<=0flag2=1;elseflag2=0;break;endendifflag==1&&flag2==1disp('此线性规划问题存在无界解');sol=inf;val=inf;flag1=0;flag=0;%跳出while循环break;endmaxq=max(A(mA,1:(nA-1)));[m,nb]=find(A(mA,:)==maxq);%确定入基变量的纵坐标9fors=1:(mA-1)ifA(s,nb)>0temp(s)=A(s,nA)/A(s,nb);elsetemp(s)=10000;endendk=k+1;mino=min(t

7、emp);[n,mb]=find(temp==mino);%确定入基变量的横坐标iflength(mb)>1mb=mb(1);endab=A(mb,nb);A2=A;fori=1:(mA-1)forj=1:nAifi==mbA(mb,j)=A2(mb,j)/ab;elseA(i,j)=A2(i,j)-A2(i,nb)*(A2(mb,j)/ab);endendendfori=1:length(N)ifi==mbN(i)=nb;endendfori=1:length(N)c1(i)=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。