单纯形法(1)

单纯形法

思路:从某一基本可行解(初始基本可行解)出发,每次寻找比上一个更“好”的基本可行解,而不比上一个“好”的基本可行解不去计算

要解决以下问题:

  1. 如何得到一个初始基本可行解
  2. 如何判别当前基本可行解是否已达到了最优解
  3. 若当前解不是最优解,如何寻找一个更好的基本可行解


m a x   z = 5 x 1 + 2 x 2 max \: z=5x_{1}+2x_{2} maxz=5x1+2x2
s . t .   30 x 1 + 20 x 2 ≤ 160 s.t. \: 30x_{1}+20x_{2}≤160 s.t.30x1+20x2160
5 x 1 + x 2 ≤ 15 \quad 5x_{1}+x_{2}≤15 5x1+x215
x 1 ≤ 4 \quad x_{1}≤4 x14
x 1 , x 2 ≥ 0 x_{1},x_{2}≥0 x1,x20

标准形式:(加入3个松弛变量)
m a x   z = 5 x 1 + 2 x 2 + 0 x 3 + 0 x 4 + x 5 max \: z=5x_{1}+2x_{2}+0x_{3}+0x_{4}+x_{5} maxz=5x1+2x2+0x3+0x4+x5
s . t .   30 x 1 + 20 x 2 + x 3 = 160 s.t. \: 30x_{1}+20x_{2}+x_{3}=160 s.t.30x1+20x2+x3=160
5 x 1 + x 2 + x 4 = 15 \quad 5x_{1}+x_{2}+x_{4}=15 5x1+x2+x4=15
x 1 + x 5 = 4 \quad x_{1}+x_{5}=4 x1+x5=4
x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 x_{1},x_{2},x_{3},x_{4},x_{5}≥0 x1,x2,x3,x4,x50
得到对应的系数矩阵A
B = [ 30 20 1 0 0 5 1 0 1 0 1 0 0 0 1 ] B=\begin{bmatrix} 30 & 20 & 1 & 0 & 0\\ 5 & 1 & 0 & 1 & 0\\ 1 & 0 & 0 & 0 & 1 \end{bmatrix} B=30512010100010001

步骤

① 选择初始基矩阵 B(0)和基变量xB(在约束矩阵Am×n中构造m阶单位矩阵)

B ( 0 ) = [ 1 0 0 0 1 0 0 0 1 ] B^{(0)}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{bmatrix} B(0)=100010001
x B = [ x 3 x 4 x 5 ] x_{B}=\begin{bmatrix}x_{3}\\x_{4}\\x_{5}\end{bmatrix} xB=x3x4x5
所以初始基本可行解为
[ x B x N ] = [ B − 1 b 0 ] \begin{bmatrix} x_{B}\\x_{N}\end{bmatrix}=\begin{bmatrix}B^{-1}b\\0\end{bmatrix} [xBxN]=[B1b0]
经过计算初始基本可行解为(0,0,160,15,4)T,相应的目标函数值为 max z=0

②判断当前解是否为最优解

  1. 将基变量用非基变量表示-典式
    x 3 = 160 − 30 x 1 − 20 x 2 x_{3}=160-30x_{1}-20x_{2} x3=16030x120x2
    x 4 = 15 − 5 x 1 − x 2 x_{4}=15-5x_{1}-x_{2} x4=155x1x2
    x 4 = 4 − x 1 x_{4}=4-x_{1} x4=4x1
  2. 用非基变量表示目标函数-典式
    z = 0 + 5 x 1 + 2 x 2 z=0+5x_{1}+2x_{2} z=0+5x1+2x2

由于x1和x2的系数为正,而x1和x2的值从零开始,所以可以看出当前解不是最优解
对目标函数的典式中非基变量前所有的系数称为检验数
对最大化问题,当所有的检验数≤0时,当前解为最优解
对最小化问题,当所有的检验数≥0时,当前解为最优解

③解的改进
由于x1的系数5比x2大,求max每增加一个单位其贡献更大,所以让x1的取值从零变为正值(从非基变量中选出一个变成非基变量-进基变量
从原来的基变量中选出一个变成基变量 -离基变量


选出进基变量
根据目标函数选出能使结果更优(max)的贡献更大的变量


选出离基变量
在用非基变量表示基变量的式子中,当x1从零值开始增加直到使x3,x4,x5的取值减少到零时停止,此时第一个变为零的基变量为离基变量


由此我们换出x4 其取值变为0 得到新的基本可行解
x ( 1 ) = ( 3 , 0 , 70 , 0 , 1 ) T x^{(1)}=(3,0,70,0,1)^{T} x(1)=(3,0,70,0,1)T
对应的基矩阵为 B ( 1 ) = ( p 3 , p 1 , p 5 ) B^{(1)}=(p_{3},p_{1},p_{5}) B(1)=(p3,p1,p5),基变量是x3,x1,x5非基变量为x2,x4,对应的目标函数值是 z ( x ( 1 ) ) = 15 > z ( x ( 0 ) ) = 0 z(x^{(1)})=15>z(x^{(0)})=0 z(x(1))=15>z(x(0))=0
再次回到第二步判断当前解是否为最优解,重复上面过程

在得到 z ( x ( 2 ) ) = 20 z(x^{(2)})=20 z(x(2))=20时发现目标函数
z = 20 − 1 14 x 3 − 4 7 x 4 z=20-\frac{1}{14} x_{3}-\frac{4}{7}x_{4} z=20141x374x4中非基变量由0增加,只能使z值下降

由此判断当前解为最优解
x ( 2 ) = ( 2 , 5 , 0 , 0 , 2 ) T x^{(2)}=(2,5,0,0,2)^{T} x(2)=(2,5,0,0,2)T
相应的值为
z ∗ = z ( x ( 2 ) ) = 20 z^{*}=z(x^{(2)})=20 z=z(x(2))=20

以上是单纯形法的实际操作过程详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值