单纯形法步骤详解(附例题)

用单纯形法求解下列问题:
M a x 6 x 1 + 14 x 2 + 13 x 3 Max 6x_1 + 14x_2 + 13x_3 Max6x1+14x2+13x3
s . t . { x 1 + 4 x 2 + 2 x 3 ≤ 48 x 1 + 2 x 2 + 4 x 3 ≤ 60 x 1 , x 2 , x 3 ≥ 0 s.t.\left\{ \begin{aligned} x_1+4x_2+2x_3&\le48\\ x_1+2x_2+4x_3&\le60\\ x_1,x_2,x_3&\ge0 \end{aligned} \right. s.t. x1+4x2+2x3x1+2x2+4x3x1,x2,x348600

将模型转化为标准形式

首先进行标准化,线性规划的标准形式:
( L P ) { M a x C T X s . t . A x = b x ≥ 0 (LP)\left\{ \begin{aligned} &MaxC^TX\\ &s.t.Ax=b\\ &x\ge0 \end{aligned} \right. LP MaxCTXs.t.Ax=bx0
即约束条件都是等式,等式约束的右端项为非负的常数,每个变量都要求取非负数值(无约束也不行)

方法
  1. 若目标函数为最小值,将目标函数取一个负数转换为求最大值即可
  2. 若约束为不等式。约束方程为“≤”不等式,则可在“≤”不等式的左端加入非负松弛变量,把原不等式变为等式;约束方程为“≥”不等式,则可在“≥”不等式的左端减去非负剩余变量(也可称松弛变量),把原不等式变为等式约束条件。
  3. 若表达式 x i x_i xi没有约束。用 x i − x j x_i-x_j xixj代替 x i x_i xi即可。
例题

M i n − x 1 + 2 x 2 − 3 x 3 Min -x_1 + 2x_2 - 3x_3 Minx1+2x23x3
s . t . { x 1 + x 2 + x 3 ≤ 7 x 1 − x 2 + x 3 ≥ 2 3 x 1 − x 2 − 2 x 3 = − 5 x 1 , x 2 ≥ 0 , x 3 无约束 s.t.\left\{ \begin{aligned} x_1+x_2+x_3&\le7\\ x_1-x_2+x_3&\ge2\\ 3x_1-x_2-2x_3&=-5\\ x_1,x_2\ge0,x_3&无约束 \end{aligned} \right. s.t. x1+x2+x3x1x2+x33x1x22x3x1,x20,x372=5无约束
将该LP问题转化为标准型:
M a x x 1 − 2 x 2 + 3 ( x 3 − x 4 ) + 0 x 5 + 0 x 6 Max x_1 - 2x_2 + 3(x_3-x_4)+0x_5+0x_6 Maxx12x2+3(x3x4)+0x5+0x6
s . t . { x 1 + x 2 + x 3 − x 4 + x 5 = 7 x 1 − x 2 + x 3 − x 4 − x 6 = 2 − 3 x 1 + x 2 + 2 ( x 3 − x 4 ) = 5 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ≥ 0 s.t.\left\{ \begin{aligned} x_1+x_2+x_3-x_4+x_5&=7\\ x_1-x_2+x_3-x_4-x_6&=2\\ -3x_1+x_2+2(x_3-x_4)&=5\\ x_1,x_2,x_3,x_4,x_5,x_6&\ge0 \end{aligned} \right. s.t. x1+x2+x3x4+x5x1x2+x3x4x63x1+x2+2(x3x4)x1,x2,x3,x4,x5,x6=7=2=50

接原问题, \textbf{接原问题,} 接原问题,将原LP问题化为标准型可得:
M a x 6 x 1 + 14 x 2 + 13 x 3 + 0 x 4 + 0 x 5 Max 6x_1 + 14x_2 + 13x_3+0x_4+0x_5 Max6x1+14x2+13x3+0x4+0x5
s . t . { x 1 + 4 x 2 + 2 x 3 + x 4 = 48 x 1 + 2 x 2 + 4 x 3 + x 5 = 60 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 s.t.\left\{ \begin{aligned} x_1+4x_2+2x_3+x_4&=48\\ x_1+2x_2+4x_3+x_5&=60\\ x_1,x_2,x_3,x_4,x_5&\ge0 \end{aligned} \right. s.t. x1+4x2+2x3+x4x1+2x2+4x3+x5x1,x2,x3,x4,x5=48=600

初始化单纯形表

取初始基本可行解 x 1 = x 2 = x 3 = 0 , x 4 = 48 , x 5 = 60 x_1 = x_2 = x_3 = 0, x_4 = 48, x_5 = 60 x1=x2=x3=0x4=48x5=60;它的基 [p4, p5]= ∣ 1 0 0 1 ∣ \begin{vmatrix} 1 & 0\\ 0 & 1 \end{vmatrix} 1001 为单位矩阵。
由标准形式可知
C = [ 6 , 14 , 13 , 0 , 0 ] T C=[6,14,13,0,0]^T C=[6,14,13,0,0]T, C B = [ 0 , 0 ] T C_B=[0,0]^T CB=[0,0]T,
A= ∣ 1 4 2 1 0 1 2 4 0 1 ∣ \begin{vmatrix} 1 & 4 & 2 & 1 & 0\\ 1 & 2 & 4 & 0 & 1 \end{vmatrix} 1142241001 = [ P 1 , P 2 , P 3 , P 4 , P 5 ] [P_1,P_2,P_3,P_4,P_5] [P1,P2,P3,P4,P5],
b = [ 48 , 60 ] T b=[48,60]^T b=[48,60]T
此时, − z = − 0 × 48 − 0 × 60 = 0 -z=-0\times48-0\times60=0 z=0×480×60=0
则初始的单纯形表为:

c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
0 x 4 x_4 x4481421012
0 x 5 x_5 x5601240130
-z:06141300

检验数

其中,最后一行为检验数:
σ i = c i − ∑ m k = 1 c k a k i \sigma_i=c_i-\displaystyle \sum{m \atop k=1}c_ka_{ki} σi=cik=1mckaki
σ 1 = 6 − 0 × 1 − 0 × 1 = 6 \sigma_1=6-0\times1-0\times1=6 σ1=60×10×1=6,
σ 2 = 14 − 0 × 4 − 0 × 2 = 14 \sigma_2=14-0\times4-0\times2=14 σ2=140×40×2=14,
σ 3 = 13 − 0 × 2 − 0 × 4 = 13 \sigma_3=13-0\times2-0\times4=13 σ3=130×20×4=13,
σ 4 = 0 − 0 × 1 − 0 × 0 = 0 \sigma_4=0-0\times1-0\times0=0 σ4=00×10×0=0
σ 5 = 0 − 0 × 0 − 0 × 1 = 0 \sigma_5=0-0\times0-0\times1=0 σ5=00×00×1=0
易知第一次单纯性表的检验数分别为对应系数 c i c_i ci

进基变量

取非负检验数中的最大值为进基变量(对于检验数这一行值,当检验数均为非正后,达到最优(一定是对Max问题),如果此时非基变量检验数有0值,则有无限多最优解;如果计算过程中出现检验数大于0的列对应的系数列向量中所有分量都有 a i k ≤ 0 a_{ik}\le0 aik0,则无有限最优解),在此题中,14为正数中的最大值,则 x 2 x_2 x2为进基变量。

离基变量

计算最后一列的 θ \theta θ值,设进基变量的下角标为k,即 x k x_k xk为进基变量, θ \theta θ = b i / a i k b_i/a_{ik} bi/aik,如果 a i k = 0 a_{ik}=0 aik=0,该 θ i \theta_i θi设为无穷大,选择最小的作为离基变量。
θ 1 = b 1 / a 12 = 48 / 4 = 12 \theta_1=b_1/a_{12}=48/4=12 θ1=b1/a12=48/4=12 θ 2 = b 2 / a 22 = 60 / 2 = 30 \theta_2=b_2/a_{22}=60/2=30 θ2=b2/a22=60/2=30
该题中的最小值为12,所以离基变量为 x 4 x_4 x4

初等行变换

继续计算单纯性表,将进基变量通过初等行变换为单位向量,即从 ∣ 4 2 ∣ \begin{vmatrix} 4\\ 2 \end{vmatrix} 42 变为 ∣ 1 0 ∣ \begin{vmatrix} 1\\ 0 \end{vmatrix} 10
为此,我们将第一行乘以1/4,在将第二行减去2倍的第一行,注意,加粗部分均需参与初等行变换。 C B C_B CB系数部分按照相应的进基变量、离基变量进行修改。

c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
0 x 2 x_2 x2481421012
0 x 5 x_5 x5601240130
-z:06141300
c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
14 x 2 x_2 x2121/411/21/4024
0 x 5 x_5 x5361/203-1/2112
-z:-1685/206-7/20

对斜体部分进行计算得到 − z = − 14 × 12 − 0 × 36 = − 168 -z=-14\times12-0\times36=-168 z=14×120×36=168
计算检验数:
σ 1 = 6 − 14 × 1 / 4 − 0 × 1 / 2 = 6 − 14 / 4 = 5 / 2 \sigma_1=6-14\times1/4-0\times1/2=6-14/4=5/2 σ1=614×1/40×1/2=614/4=5/2,
σ 2 = 14 − 14 × 1 − 0 × 0 = 0 \sigma_2=14-14\times1-0\times0=0 σ2=1414×10×0=0,
σ 3 = 13 − 14 × 1 / 2 − 0 × 3 = 6 \sigma_3=13-14\times1/2-0\times3=6 σ3=1314×1/20×3=6,
σ 4 = 0 − 14 × 1 / 4 − 0 × ( − 1 / 2 ) = − 7 / 2 \sigma_4=0-14\times1/4-0\times(-1/2)=-7/2 σ4=014×1/40×1/2=7/2
σ 5 = 0 − 14 × 0 − 0 × 1 = 0 \sigma_5=0-14\times0-0\times1=0 σ5=014×00×1=0
基变量对应的检验数一定为0。
6最大, x 3 x_3 x3进基;
计算 θ i \theta_i θi
θ 1 = b 1 / a 12 = 12 / ( 1 / 2 ) = 24 \theta_1=b_1/a_{12}=12/(1/2)=24 θ1=b1/a12=12/1/2=24 θ 2 = b 2 / a 22 = 36 / 3 = 12 \theta_2=b_2/a_{22}=36/3=12 θ2=b2/a22=36/3=12
12最小, x 5 x_5 x5离基。
同理继续进行变换、计算:

c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
0 x 4 x_4 x4481421012
0 x 5 x_5 x5601240130
-z:06141300
c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
14 x 2 x_2 x2121/411/21/4024
0 x 5 x_5 x5361/203-1/2112
-z:-1685/206-7/20
c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
14 x 2 x_2 x261/6101/3-1/636
13 x 3 x_3 x3121/601-1/61/372
-z:–2403/200-5/2-2
c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3 c 4 c_4 c4 c 5 c_5 c5
C B C_B CB X B X_B XBb6141300 θ \theta θ
6 x 1 x_1 x1361602-1
13 x 3 x_3 x360-11-1/21/2
-z:–2940-90-11/2-1/2

此时,检验数全为非正数,当前解即为最优解, x ∗ = [ 36 , 0 , 6 , 0 , 0 ] T x^*=[36,0,6,0,0]^T x=[36,0,6,0,0]T,最优解为 z = 294 z=294 z=294
值得注意的是、变量非负约束是单纯形表中所隐含的,任何时候b列的值都应是非负的,如果出现负值,则表示当前基本解不是可行解,求解也就无法进行。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性规划是一种最优化问题,目标是在一组线性约束条件下,找到一个最优的线性方程组解。单纯形法是一种求解线性规划问题的算法。 下面我会通过一个例题来详细解释单纯形法的具体步骤: 假设我们有一个线性规划问题,如下所示: Maximize: 3x1 + 4x2 Subject to: 2x1 + x2 <= 8 x1 + 2x2 <= 6 x1, x2 >= 0 首先,我们需要将这个问题转化为标准形式。为了达到这个目的,我们引入两个松弛变量s1和s2,并将不等式约束转化为等式约束。此时,我们的问题变为: Maximize: 3x1 + 4x2 Subject to: 2x1 + x2 + s1 = 8 x1 + 2x2 + s2 = 6 x1, x2, s1, s2 >= 0 接下来,我们需要将这个问题表示为一个线性方程组的形式。我们可以使用一个表格来表示问题的各个部分,如下所示: | | x1 | x2 | s1 | s2 | RHS | |---|----|----|----|----|-----| | | 3 | 4 | 0 | 0 | 0 | | s1| 2 | 1 | 1 | 0 | 8 | | s2| 1 | 2 | 0 | 1 | 6 | 这个表格称为单纯形表。每一行对应一个约束条件,每一列对应一个变量或松弛变量。RHS列表示右侧的常数项。 现在,我们需要找到一个初始基本可行解。这意味着我们需要选择一些变量来使得方程组的解满足所有的约束条件,并且这些变量的值都应该是非负的。我们可以选择s1和s2作为初始基本变量,它们的值都为0。 接下来,我们需要使用单纯形法来寻找最优解。单纯形法的基本思想是,在当前基本可行解的基础上,找到一个非基本变量,使得将它增加到一个非负值时,我们可以得到更优的解。这个过程一直进行,直到找不到更优的解为止。 现在,我们需要找到一个进入变量。这个变量应该是一个非基本变量,它能够使得目标函数增加。在这个例子中,我们可以看到,x1和x2都能够使得目标函数增加,但是我们需要选择其中一个。我们选择x1作为进入变量。 接下来,我们需要找到一个离开变量。这个变量应该是一个基本变量,它能够使得进入变量增加到一个非负值时,所有的约束条件都能够被满足。在这个例子中,我们可以看到,s1和s2都能够满足这个条件,但是我们需要选择其中一个。我们选择s1作为离开变量。 现在,我们需要使用行变换来更新单纯形表。我们首先将s1行除以2,使得x1系数为1。然后,我们将s1行减去2倍的x1行,使得x1系数变为0。最后,我们将目标函数行减去3倍的x1行,使得目标函数系数减少3。经过这些操作,我们得到了下面的单纯形表: | | x1 | x2 | s1 | s2 | RHS | |---|----|----|----|----|-----| | 0 | 1 | 0 | 1/2| 0 | 4 | | s1| 0 | 1 | 1/2| 0 | 4 | | s2| 0 | 2 | -1 | 1 | 2 | 现在,我们需要重新选择进入变量。由于x2的系数比x1更大,我们选择x2作为进入变量。 接下来,我们需要选择离开变量。在这个例子中,我们可以看到,s2是唯一满足所有约束条件的基本变量。因此,我们选择s2作为离开变量。 现在,我们需要使用行变换来更新单纯形表。我们首先将s2行除以2,使得x2系数为1。然后,我们将s2行减去2倍的x2行,使得x2系数变为0。最后,我们将目标函数行减去4倍的x2行,使得目标函数系数减少16。经过这些操作,我们得到了下面的单纯形表: | | x1 | x2 | s1 | s2 | RHS | |---|----|----|----|----|-----| | 0 | 1 | 0 | 1/4| 1/2| 5 | | s1| 0 | 1 | 1/4|-1/2| 1 | | s2| 0 | 0 | -3/2|1 | 2 | 现在,我们可以看到所有的系数都是非负的。因此,我们得到了一个最优解,它的值为5。此时,x1的值为1,x2的值为1,s1的值为0,s2的值为0。 这就是单纯形法的基本步骤。需要注意的是,在实际应用中,可能会出现无解或者无界的情况。在这种情况下,我们需要使用其他的算法来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值