091单纯形法_作业1单纯形法
091单纯形法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“作业1单纯形法”。
2013-2014(1)专业课程实践论文
题目:单纯形法求解线性规划
一、算法理论
对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。设初始基为B,然后执行如下步骤:
(1)解BxBb,求得xBB1b,令xN0,计算目标函数值fcBxB以bii1,2,,m记B1b的第i个分量。
(2)计算单纯形乘子w, wBCB,得到wCBB1,对于非基变量,计算判别数izicicBB1pici,令 kmaxzici,R为非基变量集合。若判别数
iRk0,则得到一个最优基本可行解,运算结束;否则,转到下一步。(3)解Bykpk,得到ykB1pk;若yk0,即yk的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4)。
btbrmin,且ytk0,xB为离基变量。xk为进基变(4)确定下标r,使yrkt:ytk0ytk量,用Pk替换PBr,得到新的基矩阵B,返回步骤(1)。
对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。对于极大化问题,应令
ZkCkminzjcj
二、算法框图
三、算法程序
function [x,fval,it,op]=singl(c,a,b)%求解如下线性规划问题的单纯形法函数
%max cx
其中c=[c1 c2...cn] %s.t ax=0)%函数形式 function [x,fval,it,op]=singl(c,a,b)%输出中 x为最优解 %fval为最优值
%it为迭代次数
%无最优解 op=0
%有最优解 op=1 %初始解设为x=[zeros(1,n),ones(1,m)];[m,n]=size(a);A=[a eye(m)b;c zeros(1,m+1)];
C=[c,zeros(1,m)];fval=0;op=1;it=0;e=zeros(1,m);cb=zeros(1,m);for j=1:m+n
r(j)=C(j)-cb*A(1:m,j);end d=find(r>0);l=length(d);while l>0
for s=1:l
if d(s)>=n+1 & A(:,d(s))
op=0;
break
end
end
if op==1
[d1,j]=max(r);
for i=1:m
if A(i,j)>0
e(i)=A(i,end)/A(i,j);
else
e(i)=inf;
end
end
[g h]=min(e);
for w=1:m+1
if w==h
A(w,:)=A(w,:)/A(h,j);
else
A(w,:)=A(w,:)-A(h,:)*A(w,j)/A(h,j);
end
end
it=it+1;
cb(h)=C(j);
for j=1:m+n
r(j)=C(j)-cb*A(1:m,j);
end
d=find(r>0);
l=length(d);
end end for i=1:(m+n)
ix=find(A(:,i));
if(length(ix)==1)&(ix
x(i)=A(ix,end);
else
x(i)=0;
end end fval=-A(end,end);
四、算法实现
例1.用单纯形法求解
minz2x13x2,x12x210, 3x1x215,x1,x20.stx1x22,解:(1)在MATLAB界面中依次输入
c=[2 3];a=[-1 1;1 2;3 1];b=[2;10;15];[x,fval,it,op]=singl(c,a,b)(2)得到下图所示的结果(其中it为迭代次数,无最优解 op0,有最优解op1)。
(3)从图中读出最优解:x14,x23,x33,x4x50,若把引进的松弛变量略去,则最优解为x*4,3,最优值为
Tz*17。
例2.用单纯形法求解
minstz2x13x2,x12x28,4x116,4x212,x1,x20.解:(1)在MATLAB界面中依次输入
c=[2 3];a=[1 2;4 0;0 4];b=[8;16;12];[x,fval,it,op]=singl(c,a,b)(2)得到下图所示的结果(其中it为迭代次数,无最优解 op0,有最优解op1)。
(3)从图中读出最优解:x14,x22,x30,x40,x54,若把引进的松弛变量略去,则最优解为x*4,2,最优值为
Tz*14。
例3.用单纯形法求解
maxstzx12x2x3,x1x2x312,2x1x2x36, x13x29,x1,x2,x30.解:(1)在MATLAB界面中依次输入
c=[1-2 1];a=[1 1 1;2 1-1;-1 3 0];b=[12;6;9];[x,fval,it,op]=singl(c,a,b)(2)得到下图所示的结果(其中it为迭代次数,无最优解 op0,有最优解op1)。
(3)从图中读出最优解:x16,x20,x36,x40,x50,x615,若把引进的松弛变量略去,则最优解为x*6,0,6,最优值为
Tz*12
例4.用单纯形法求解
minstz2x1x23x35x4,x12x24x3x46,2x13x2x3x412, x1x3x44x1,x2,x3,x40.解:(1)在MATLAB界面中依次输入
c=[2 1-3 5];a=[1 2 4-1;2 3-1 1;1 0 1 1];b=[6;12;4];[x,fval,it,op]=singl(c,a,b)(2)得到下图所示的结果(其中it为迭代次数,无最优解 op0,有最优解op1)。
(3)从图中读出最优解:
814x10,x2,x30,x44,x5,x60,x70,338若把引进的松弛变量略去,则最优解为x0,0,4,最优值为
3*Tz*68。3