欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

单纯形法

最编程 2024-07-22 17:28:47
...


单纯形法的基本思想(Simplex method)

简要地讲就是,每次从单纯形上的一个顶点走到一个更好的顶点直到找到最小(大)值

线性规划是由两部分组成的:线性的目标函数和线性的限制条件。

限制条件由等式和不等式组成。每一个线性的等式在几何上就限制了可行解必须在一个超平面上。每一个线性的不等式在几何上就限制了可行解必须在一个超平面的一边。于是这些限制条件就限制了可行解必须在某个单纯形上,所谓单纯形就是很多超平面围成的区域。

由于目标函数也是线性的,所以如果最优解存在,一定有一个最优解是单纯形上的一个顶点。所以目标变成了找单纯形上最好的顶点。

最好的顶点怎么找?最直接的办法就是逐个找。聪明一点的办法是,每次找到的新的顶点都比原来的好。单纯形法就是这类方法。

问题描述


minz=CXs.t.AX=bX≥0

单纯形法基本思路:从一个初始的基本可行解出发,选中一条达到最优基本可行解的最佳途径。

确定初始的基本可行解

约束方程AX=b表示为:


AX=(BN)(XBXN)=BXB+NXN=b

得:XB=B−1b−B−1NXN

若令所有非基变量XN=0,

则基变量XB=B−1b

由此可得初始的基本可行解X=(B−1b0)

判断现行的基本可行解是否最优

假如已经求得一个基本可行解X=(B−1b0)将其代入目标函数,可求得相应的目标函数值


z=CX=(CBCN)(B−1b0)=CBB−1b

其中,CB和CN分别表示基变量和非基变量所对应的目标函数系数子向量.

怎么判断CBB−1b是否已经达到最小值?


minz=CBB−1b+(CN−CBB−1N)XNs.t.XB=B−1b−B−1NXNXB,XN≥0

定理1 (最优化准则)如果σN≥0,则基可行解x=(B−1b0)为原问题的最优解.

其中,σN=CN−CBB−1N=(σm+1,σm+2,⋯,σn)称为非基变量XN的检验向量,它的各个分量称为检验数.

若σN的每一个检验数均大于等于0,即σN≥0,则目前的基本可行解就是最优解.

基本可行解的改建— 基变换

先从检验数为负的非基变量中确定一个换入变量,使它从非基变量变成基变量,再从原来的基变量中确定一个换出变量,试它从基变量变成非基变量,由此可得到一个新的基本可行解.

换入变量的确定—最大减小原则

选取最小负检验数所对应的非基变量为换入变量,即若


min{σj|σj<0,m+1≤j≤n}=σm+k

则选取对应的xm+k为换入变量.

由于σm+k<0且为最小,因此当xm+k由零增至正值时,可使目标函数值最大限度的减小.

换出变量的确定—最小比值原则

如果确定确定xm+k为换入变量,设pm+k为A中与xm+k对应的系数列向量.

现在需要在XB中确定一个基变量为换出变量. 当xm+k由零慢慢增加到某个值时,为保持解的非负性,可以按最小比值原则确定换出变量:


θ=min{(B−1b)i(B−1pm+k)i|(B−1pm+k)i>0,1≤i≤m}=(B−1b)l(B−1pm+k)l

则选取对应的基变量xl为换出变量.

例子


minz=−5x1−2x2−3x3+x4−x5


s.t.⎧⎩⎨x1+2x2+2x3+x4=83x1+4x2+x3+x5=7x1,x2,x3,x4,x5≥0

解:已知A=[1324211001],b=[87],C=(−5,−2,−3,1,−1)

  1. 确定初始基本可行解

基变量x4,x5,B=(P4P5)=[1001],

XB=(x4x5)T,XN=(x1x2x3)T,

B=[1001],N=[132421],

CB=(1−1),XN=(−5−2−3)


b=(87)T

令XN=0,则XB=B−1b=(87)T,X=(00087)T


z=CBB−1b=1

  1. 检验X是否最优

检验向量σN=CN−CBB−1N=(−3,0,−4)

因为σ1和σ3均小于0,所以X=(00087)T不是最优解.

  1. 基本可行解的改进

(1)选取换入变量

因为min{−3,−4}=−4,选取x3为换入变量

(2)选取换出变量

B−1b=(87)T,B−1P3=(21)T>0,

因为min{82,71}=82,选取x4为换出变量.

  1. 求解改进了的基本可行解— 旋转运算

对约束方程组的增广矩阵[Ab]施以初等行变换,使换入变量x3所对应的系数向量P2变换成换出向量x4所对应的单位向量P4,保持x5的系数向量P5为单位向量不变.



(132421100187)⇒⎛⎝⎜⎜1252131012−120143⎞⎠⎟⎟

基变量x3,x5,B=(P3P5)=[1001],

XB=(x3x5)T,XN=(x1x2x4)T,

B=[1001],N=⎡⎣12521312−12⎤⎦,

CB=(−3−1),XN=(−5−2−1)



b=(43)T

令XN=0,则XB=B−1b=(43)T,X=(00403)T



z=CBB−1b=−15

  1. 转2,检验X是否最优

检验向量σN=CN−CBB−1N=(−1,4,2)

因为σ1小于0,所以X=(00403)T不是最优解.

  1. 转3,基本可行解的改进

(1)选取换入变量

因为σ1=−1,选取x1为换入变量

(2)选取换出变量

B−1b=(43)T,B−1P3=(1252)T>0,

因为min{41/2,35/2}=35/2,选取x5为换出变量.

  1. 转4,求解改进了的基本可行解

对约束方程组的增广矩阵施以初等行变换,使换入变量x1所对应的系数向量P1变换成换出向量x5所对应的单位向量P5,保持x3的系数向量P3为单位向量不变.



⎛⎝⎜⎜1252131012−120143⎞⎠⎟⎟⇒⎛⎝⎜⎜0125651035−15−152517565⎞⎠⎟⎟

基变量x3,x1,B=(P3P1)=[1001],

XB=(x3x1)T,XN=(x2x4x5)T,

B=[1001],N=⎡⎣256535−15−1525⎤⎦,

CB=(−3−5),XN=(−21−1)



b=(17565)T

令XN=0,则XB=B−1b=(17565)T,X=(65017500)T



z=CBB−1b=−815

  1. 转2,检验X是否最优

检验向量σN=CN−CBB−1N=(265,95,25)

因为所有检验系数均小于0,所以X=(65017500)T是最优解.

参考资料

​第四讲 单纯形法基本原理​