文章目录







一、单纯形法原理



参考博客 :​ ​​【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 )​



单纯形法的理论基础 :



定理 1 1 1 ( 可行域是凸集 ) :​ 如果线性规划的问题 存在可行解 , 其 ​可行域​ 必定是 凸集 ;

定理 2 2 2 ( 基可行解是凸集顶点 ) :​ 线性规划的 ​基可行解 X B X_B XB​ 对应了上述 可行域 ( 凸集 ) 的顶点位置 ;

定理 3 3 3 ( 某个基可行解是最优解 ) :​ 如果线性规划问题 存在最优解 , 那么 一定存在一个基可行解是最优解 ;



参考上一篇博客 ​​【运筹学】线性规划 图解法 ( 唯一最优解 | 无穷最优解 | 无界解 | 无可行解 )​​ 进行分析 :



给定线性规划 :

m a x Z = 2 x 1 + x 2 s . t = { x 1 + 1.9 x 2 ≥ 3.8 x 1 − 1.9 x 2 ≤ 3.8 x 1 + 1.9 x 2 ≤ 10.2 x 1 − 1.9 x 2 ≥ − 3.8 x 1 , x 2 ≥ 0 \begin{array}{lcl} max Z = 2x_1 + x_2\\\\ s.t = \begin{cases} x_1 + 1.9x_2 \geq 3.8\\\\ x_1 - 1.9x_2 \leq 3.8\\\\ x_1 + 1.9x_2 \leq 10.2\\\\ x_1 - 1.9x_2 \geq -3.8\\\\ x_1 , x_2 \geq 0 \end{cases} \end{array} maxZ=2x1+x2s.t=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧x1+1.9x2≥3.8x1−1.9x2≤3.8x1+1.9x2≤10.2x1−1.9x2≥−3.8x1,x2≥0



使用图解法进行分析 , 得到如下结果 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数

使用迭代的思想进行求解 :


  • 无限个解中迭代 :​ 上图中的 可行域 D D D 中的点是无限的 , 可以在所有的无限个可行域 D D D 解中进行迭代 , 逐个迭代很难 ;
  • 有限个解中迭代 :​ 因此选取 可行域 ( 凸集 ) 的顶点 , 也就是 基可行解 进行迭代 , 该线性规划问题的基可行解是有限的 , 只有 4 4 4 个 , 即该凸集有 4 4 4 个顶点 ;

上图的凸集中的 4 4 4 个顶点 , 必然有一个是最优解 , 因此迭代的时候 , 不用从 D D D 可行域中的无限个点中进行迭代 , 只需要在有限个基可行解中进行迭代 , ​即可找到最优解​ ;



单纯形法的原理的基础就是源自上述理论 , 在线性规划的有限个基可行解中 , 必定存在一个解释最优解 , 逐个迭代 , 将这个最优解找出即可 ;



从无限个可行解中进行迭代 , 到有限个基可行解中进行迭代 , 简单了很多 ;

但是对于 m × n m \times n m×n 阶的线性规划系数矩阵 , 其基可行解的个数可能有 C n m C_n^m Cnm 个 , 如果 n n n 和 m m m 很大的话 , 基可行解的数目还是很大 , 这是一个指数级的数 , 因此使用多项式算法 , 完成上述操作 , 计算量还是很大的 ;



这里使用单纯形法 , 进行迭代 , 要比使用多项式法计算量更少 ;






二、单纯形法流程



参考博客 :​ ​​【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 )​



【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_02

单纯形法的基本流程 :



① 初始基可行解 :​ 首先找到初始的基可行解 ;

② 判定是否最优解 :​ 需要一个准则 , 判定该初始基可行解 , 是否是最优解 ; 这里是单纯形法最核心问题 ;

③ 是最优解 :​ 如果该基可行解是最优解 , 那么结束迭代 ;

④ 不是最优解 :​ 如果该基可行解不是最优解 , 那么迭代到下一个基可行解 , 继续判定是否是最优解 ; 如何迭代也需要一个准则 ;




这里涉及到了两个准则 :


  • 判断最优解 :​ 判断一个 基可行解 是否是最优解 ;
  • 迭代原则 :​ 如何从一个 基可行解 迭代到下一个基可行解 ;



单纯形法涉及到的问题 :



① 初始解 :​ 如何找到初始基可行解 ;

② 最优解 :​ 如何找到一个准则 , 用于判定基可行解是否是最优解 ;

③ 迭代解 :​ 如果一个基可行解不满足准则 , 如何去选择下一个基可行解进行迭代 ;

解决上述 3 3 3 个问题 , 基可行解的算法 , 也就可以得出 ;






三、单纯形法案例一





1、线性规划示例



使用单纯形法求解线性规划最优解 :



m a x Z = 3 x 1 + 4 x 2 { 2 x 1 + x 2 ≤ 40 x 1 + 3 x 2 ≤ 30 x j ≥ 0 ( j = 1 , 2 ) \begin{array}{lcl} max Z = 3x_1 + 4x_2 \\ \\ \begin{cases} 2 x_1 + x_2 \leq 40 \\\\ x_1 + 3x_2 \leq 30 \\ \\x_j \geq 0 & (j = 1 , 2 ) \end{cases}\end{array} maxZ=3x1+4x2⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧2x1+x2≤40x1+3x2≤30xj≥0(j=1,2)




2、转化标准形式



首先将该线性规划转为标准形式 :

参考 ​​【运筹学】线性规划数学模型标准形式 ( 标准形式 | 目标函数转化 | 决策变量转化 | 约束方程转化 | 固定转化顺序 | 标准形式转化实例 ) 线性规划 普通形式 -> 标准形式 转化顺序说明 ​​ 博客 , 先处理变量约束 , 再将不等式转为等式 , 最后更新目标函数 ;



① 变量约束 :​ 首先查看变量约束 , 两个变量都是 ≥ 0 \geq 0 ≥0 的 , 符合线性规划标准形式要求 ;

② 不等式转换 :​ 两个等式都是 小于等于不等式 , 需要 在不等式左侧加入松弛变量 , 将其转为等式 ;


  • 2 x 1 + x 2 ≤ 40 2 x_1 + x_2 \leq 40 2x1+x2≤40 , 左侧加入松弛变量 x 3 x_3 x3 , 变为 2 x 1 + x 2 + x 3 = 40 2 x_1 + x_2 + x_3 = 40 2x1+x2+x3=40
  • x 1 + 3 x 2 ≤ 30 x_1 + 3x_2 \leq 30 x1+3x2≤30 , 左侧加入松弛变量 x 4 x_4 x4 , 变为 x 1 + 3 x 2 + x 4 = 30 x_1 + 3x_2 + x_4 = 30 x1+3x2+x4=30

③ 更新目标函数 :​ 将 x 3 x_3 x3 和 x 4 x_4 x4 加入到目标函数中 , 得到新的目标函数 m a x Z = 3 x 1 + 4 x 2 + 0 x 3 + 0 x 4 max Z = 3x_1 + 4x_2 + 0x_3 + 0x_4 maxZ=3x1+4x2+0x3+0x4 ;




此时线性规划标准形式为 :

m a x Z = 3 x 1 + 4 x 2 + 0 x 3 + 0 x 4 { 2 x 1 + x 2 + x 3 + 0 x 4 = 40 x 1 + 3 x 2 + 0 x 3 + x 4 = 30 x j ≥ 0 ( j = 1 , 2 , 3 , 4 ) \begin{array}{lcl} max Z = 3x_1 + 4x_2 + 0x_3 + 0x_4 \\ \\ \begin{cases} 2 x_1 + x_2 + x_3 + 0x_4 = 40 \\\\ x_1 + 3x_2 + 0x_3 + x_4 = 30 \\\\ x_j \geq 0 & (j = 1 , 2 , 3 , 4 ) \end{cases}\end{array} maxZ=3x1+4x2+0x3+0x4⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧2x1+x2+x3+0x4=40x1+3x2+0x3+x4=30xj≥0(j=1,2,3,4)




3、查找初始基可行解



找基矩阵 :



上述线性规划标准形式的系数矩阵为 [ 2 1 1 0 1 3 0 1 ] \begin{bmatrix} &2 & 1 & 1 & 0 & \\\\ & 1 & 3 & 0 & 1 & \end{bmatrix} ⎣⎡21131001⎦⎤ , 其中子矩阵中有 [ 1 0 0 1 ] \begin{bmatrix} & 1 & 0 & \\\\ & 0 & 1 & \end{bmatrix} ⎣⎡1001⎦⎤ 单位阵 I I I ;



使用该单位阵 I I I 作为基矩阵 , 单位阵肯定是可逆的 , 其对应的基解 , 解出后的值就是右侧的常数值 , 肯定大于等于 0 0 0 , 是基可行解 ;




列出单纯形表 :




c j c_j cj

c j c_j cj

3 3 3

4 4 4

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

θ i \theta_i θi

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

40 40 40

2 2 2

1 1 1

1 1 1

0 0 0

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4)

x 4 x_4 x4

30 30 30

1 1 1

3 3 3

0 0 0

1 1 1

σ j \sigma_j σj

3 3 3

4 4 4

0 0 0

0 0 0


基变量是 x 3 x_3 x3 和 x 4 x_4 x4 , 基变量在约束条件中的系数矩阵 [ 1 0 0 1 ] \begin{bmatrix} &1 & 0 & \\\\ &0 & 1 & \end{bmatrix} ⎣⎡1001⎦⎤ 就是基矩阵 , 这是个单位阵 ;

基变量是 x 3 x_3 x3 和 x 4 x_4 x4 在目标函数中的系数是 ( 0 0 ) \begin{pmatrix} \quad 0 \quad 0 \quad \end{pmatrix} (00) ;

此时的基解是 ( 0 0 40 30 ) \begin{pmatrix} \quad 0 \quad \\ \quad 0 \quad \\ \quad 40 \quad \\ \quad 30 \quad \\ \end{pmatrix} ⎝⎜⎜⎛004030⎠⎟⎟⎞ , 该解是初始解 , 下面判定该解是否是最优解 ;




4、初始基可行解的最优解判定



使用 检验数矩阵 ( C N T − C B T B − 1 N ) ( C_N^T - C_B^T B^{-1}N ) (CNT−CBTB−1N) 判断上述解 , 是否是最优解 , 该矩阵计算结果中所有的数 , 都是检验数 σ \sigma σ , 如果 所有的数都小于等于 0 0 0 , 说明该解就是最优解 ;



这里只求非基变量的检验数 , 即 x 1 x_1 x1 , x 2 x_2 x2 的检验数 ;



列出目标函数非基变量系数 ( C N T − C B T B − 1 N ) ( C_N^T - C_B^T B^{-1}N ) (CNT−CBTB−1N) 矩阵 :


  • 非基变量在目标函数中的系数矩阵 :​ C N T = ( 3 4 ) C_N^T=\begin{pmatrix} \quad 3 \quad 4 \quad \end{pmatrix} CNT​=(34​)
  • 基变量在目标函数中的叙述矩阵 :​ C B T = ( 0 0 ) C_B^T = \begin{pmatrix} \quad 0 \quad 0 \quad \end{pmatrix} CBT​=(00​)
  • B − 1 N B^{-1}N B−1N 是系数矩阵中经过矩阵变换后 , 基变量系数是单位阵 I I I , 非基变量系数是 B − 1 N B^{-1}N B−1N :​ B − 1 N = [ 2 1 1 3 ] B^{-1}N =\begin{bmatrix} &2 & 1 & \\\\ &1 & 3 & \end{bmatrix} B−1N=⎣⎡​​21​13​​⎦⎤


( C N T − C B T B − 1 N ) = C N T = ( 3 4 ) − ( 0 0 ) × [ 2 1 1 3 ] ( C_N^T - C_B^T B^{-1}N ) = C_N^T=\begin{pmatrix} \quad 3 \quad 4 \quad \end{pmatrix} - \begin{pmatrix} \quad 0 \quad 0 \quad \end{pmatrix} \times \begin{bmatrix} &2 & 1 & \\\\ &1 & 3 & \end{bmatrix} (CNT−CBTB−1N)=CNT=(34)−(00)×⎣⎡2113⎦⎤

= ( σ 1 σ 2 ) = \begin{pmatrix} \quad \sigma_{1} \quad \sigma_{2} \quad \end{pmatrix} =(σ1σ2)



其中 σ 1 \sigma_{1} σ1 是目标函数中 x 1 x_1 x1 的系数 , σ 2 \sigma_{2} σ2 是目标函数中的 x 2 x_2 x2 的系数 ;

如果上述两个系数都小于等于 0 0 0 , 那么当 非基变量 X N = ( x 1 x 2 ) X_N =\begin{pmatrix} x_{1} \\ x_{2} \end{pmatrix} XN=(x1x2) 取值为 0 0 0 时 , 目标函数取值最大 ;



系数的计算公式为 : σ j = c j − ∑ c i a i j \sigma_j = c_j - \sum c_i a_{ij} σj=cj−∑ciaij , 其中 c j c_j cj 对应的是非基变量在目标函数系数 , c i c_i ci 是基变量在目标函数中的系数 , a i j a_{ij} aij 是 B − 1 N B^{-1}N B−1N 中的矩阵向量 , 代表一列 ;




σ 1 = c 1 − ( c 3 a 11 + c 4 a 12 ) \sigma_{1} = c_1 - ( c_3 a_{11} + c_4 a_{12} ) σ1=c1−(c3a11+c4a12)

σ 1 = 3 − ( 0 × 2 ) − ( 0 × 1 ) = 3 \sigma_{1} =3 - (0 \times 2) - (0 \times 1) = 3 σ1=3−(0×2)−(0×1)=3 , 是从下面的单纯形表中的如下位置提取的数值 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形法_03

σ 2 = c 2 − ( c 3 a 21 + c 4 a 22 ) \sigma_{2} = c_2 - ( c_3 a_{21} + c_4 a_{22} ) σ2=c2−(c3a21+c4a22)

σ 2 = 4 − ( 0 × 1 ) − ( 0 × 3 ) = 4 \sigma_{2} =4 - (0 \times 1) - (0 \times 3) = 4 σ2=4−(0×1)−(0×3)=4 , 是从下面的单纯形表中的如下位置提取的数值 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_04



如果这两个系数 , 如果都小于等于 0 0 0 , 该 基可行解 ( 0 0 40 30 ) \begin{pmatrix} \quad 0 \quad \\ \quad 0 \quad \\ \quad 40 \quad \\ \quad 30 \quad \\ \end{pmatrix} ⎝⎜⎜⎛004030⎠⎟⎟⎞ 才是最优解 , 这两个系数都大于 0 0 0 , 因此不是最优解 ;




5、第一次迭代 : 入基与出基变量选择



入基变量选择 :​ 具体哪个变量入基 , 是由检验数决定的 , 检验数 σ j \sigma_j σj 较大的入基 ; x 2 x_2 x2 的检验数 σ 2 \sigma_2 σ2 是 4 4 4 , 大于 σ 1 = 3 \sigma_1 = 3 σ1=3 , 因此这里选择 x 2 x_2 x2 作为入基变量 ;



出基变量选择 :​ 系数矩阵中 , 常数列 b = ( 40 30 ) b =\begin{pmatrix} \quad 40 \quad \\ \quad 30 \quad \end{pmatrix} b=(4030) , 分别除以除以入基变量大于 0 0 0 的系数列 ( 1 3 ) \begin{pmatrix} \quad 1 \quad \\ \quad 3 \quad \end{pmatrix} (13) , 得出结果是 ( 40 10 ) \begin{pmatrix} \quad 40 \quad \\ \quad 10 \quad \end{pmatrix} (4010) , 然后选择一个最小值 10 10 10 , 查看该最小值对应的变量是 x 4 x_4 x4 , 选择该变量作为出基变量 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_05



这里将出基变量与入基变量选择好了​ , x 2 x_2 x2 的检验数较大 , 选择 x 2 x_2 x2 作为入基变量 , x 4 x_4 x4 的 θ 4 \theta_4 θ4 较小 , 选择 x 4 x_4 x4 作为出基变量 ;



入基出基操作完成后 , 基变量变成了 x 3 , x 2 x_3, x_2 x3,x2 ;




6、第一次迭代 : 方程组同解变换



方程组做同解变换 :




线性规划原始方程组为 { 2 x 1 + x 2 + x 3 + 0 x 4 = 40 x 1 + 3 x 2 + 0 x 3 + x 4 = 30 \begin{cases} 2 x_1 + x_2 + x_3 + 0x_4 = 40 \\\\ x_1 + 3x_2 + 0x_3 + x_4 = 30 \end{cases} ⎩⎪⎨⎪⎧2x1+x2+x3+0x4=40x1+3x2+0x3+x4=30 , 需要将 x 2 x_2 x2 的系数变为 ( 0 1 ) \begin{pmatrix} \quad 0 \quad \\ \quad 1 \quad \end{pmatrix} (01) , x 3 x_3 x3 的系数保持 ( 1 0 ) \begin{pmatrix} \quad 1 \quad \\ \quad 0 \quad \end{pmatrix} (10) 不变 ;




方程 2 2 2 同解变换 :​ 在 x 1 + 3 x 2 + 0 x 3 + x 4 = 30 x_1 + 3x_2 + 0x_3 + x_4 = 30 x1+3x2+0x3+x4=30 中 , 需要将 x 2 x_2 x2 的系数变成 1 1 1 , 在方程两端乘以 1 3 \dfrac{1}{3} 31 , 此时方程变成 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 = 10 \dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4 = 10 31x1+x2+0x3+31x4=10 ;



方程 1 1 1 同解变换 :​ 将上述方程 2 2 2 作同解变换后 , 方程组变成 { 2 x 1 + x 2 + x 3 + 0 x 4 = 40 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 = 10 \begin{cases} 2 x_1 + x_2 + x_3 + 0x_4 = 40 \\\\ \dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4 = 10 \end{cases} ⎩⎪⎪⎨⎪⎪⎧2x1+x2+x3+0x4=4031x1+x2+0x3+31x4=10 , 目前的需求是将方程 1 1 1 的 x 2 x_2 x2 系数变为 0 0 0 , 使用方程 1 1 1 减去 方程 2 2 2 即可得到要求的矩阵 :

( 2 − 1 3 ) x 1 + 0 x 2 + x 3 + ( 0 − 1 3 ) x 4 = 40 − 10 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 \begin{array}{lcl} (2 - \dfrac{1}{3}) x_1 + 0 x_2 + x_3 + (0 - \dfrac{1}{3}) x_4 &=& 40 - 10 \\\\ \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 &=& 30 \end{array} (2−31)x1+0x2+x3+(0−31)x435x1+0x2+x3−31x4==40−1030



最终方程 1 1 1 转化为​ 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 30 35x1+0x2+x3−31x4=30 ;




同解变换完成后的方程组为​ { 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 = 10 \begin{cases} \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 30 \\\\ \dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4 = 10 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧35x1+0x2+x3−31x4=3031x1+x2+0x3+31x4=10






7、第一次迭代 : 生成新的单纯形表



单纯形表变成如下形式 :​ 下面的单纯形表中 , 上面部分是初始基可行解对应的单纯形表 , 下面的部分是本次迭代后生成的新的单纯形表 ;



将同解变换后的方程组中的 系数矩阵 , 和 常数 , 填入新的单纯形表中 ;



c j c_j cj

c j c_j cj

3 3 3

4 4 4

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

θ i \theta_i θi

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

40 40 40

2 2 2

1 1 1

1 1 1

0 0 0

40 40 40 ( θ 3 \theta_3 θ3 )

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4)

x 4 x_4 x4

30 30 30

1 1 1

3 3 3

0 0 0

1 1 1

10 10 10 ( θ 4 \theta_4 θ4 )

σ j \sigma_j σj

3 3 3 ( σ 1 \sigma_1 σ1 )

4 4 4 ( σ 2 \sigma_2 σ2 )

0 0 0

0 0 0

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

30 30 30

5 3 \dfrac{5}{3} 35

0 0 0

1 1 1

− 1 3 -\dfrac{1}{3} −31

? ? ? ( θ 3 \theta_3 θ3 )

4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

10 10 10

1 3 \dfrac{1}{3} 31

1 1 1

0 0 0

1 3 \dfrac{1}{3} 31

? ? ? ( θ 2 \theta_2 θ2 )

σ j \sigma_j σj ( 检验数 )

5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 )

0 0 0

0 0 0

− 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 )



8、第一次迭代 : 解出基可行解



新的 基变量是 x 3 , x 2 x_3 , x_2 x3,x2 , 对应的基矩阵是 ( 1 0 0 1 ) \begin{pmatrix} \quad 1 \quad 0 \quad \\ \quad 0 \quad 1 \quad \end{pmatrix} (1001) , 非基变量是 x 1 , x 4 x_1, x_4 x1,x4 , 对应的非基矩阵是 ( 5 3 − 1 3 1 3 1 3 ) \begin{pmatrix} \quad \dfrac{5}{3} \quad -\dfrac{1}{3} \quad \\ \quad \dfrac{1}{3} \quad \dfrac{1}{3} \quad \end{pmatrix} ⎝⎜⎛35−313131⎠⎟⎞ , 将非基变量设置为 0 0 0 , 方程组为 { 5 3 × 0 + 0 x 2 + x 3 − 1 3 × 0 = 30 1 3 × 0 + x 2 + 0 x 3 + 1 3 × 0 = 10 \begin{cases} \dfrac{5}{3} \times 0 + 0x_2 + x_3 - \dfrac{1}{3} \times 0 = 30 \\\\ \dfrac{1}{3} \times 0 + x_2 + 0x_3 + \dfrac{1}{3} \times 0 = 10 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧35×0+0x2+x3−31×0=3031×0+x2+0x3+31×0=10 , 解出基变量为 { x 3 = 30 x 2 = 10 \begin{cases} x_3 = 30 \\\\ x_2 = 10 \end{cases} ⎩⎪⎨⎪⎧x3=30x2=10 , ​基可行解​ 为 ( 0 10 30 0 ) \begin{pmatrix} \quad 0 \quad \\ \quad 10 \quad \\ \quad 30 \quad \\ \quad 0 \quad \end{pmatrix} ⎝⎜⎜⎛010300⎠⎟⎟⎞




9、第一次迭代 : 计算检验数 σ j \sigma_j σj 判定最优解 并选择入基变量



根据 ​​【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | 系数计算方法 | 根据系数是否小于等于 0 判定最优解 )​​ 博客中分析 , 检验数计算公式为 :


  • 矩阵形式 :​ C N T − C B T B − 1 N C_N^T - C_B^T B^{-1}N CNT−CBTB−1N
  • 单个检验数计算公式 :​ σ j = c j − ∑ c i a i j \sigma_j = c_j - \sum c_i a_{ij} σj=cj−∑ciaij


基变量的检验数是 0 0 0 , 主要是求非基变量的检验数 σ 1 , σ 4 \sigma_1 , \sigma_4 σ1,σ4 ;



σ 1 = c 1 − ( c 3 a 11 + c 2 a 12 ) \sigma_{1} = c_1 - ( c_3 a_{11} + c_2 a_{12} ) σ1=c1−(c3a11+c2a12)

σ 1 = 3 − ( 0 × 5 3 ) − ( 4 × 1 3 ) = 5 3 \sigma_{1} =3 - (0 \times \dfrac{5}{3}) - (4 \times \dfrac{1}{3}) = \dfrac{5}{3} σ1=3−(0×35)−(4×31)=35 , 是从下面的单纯形表中的如下位置提取的数值 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形表_06



σ 4 = c 4 − ( c 3 a 41 + c 2 a 42 ) \sigma_{4} = c_4 - ( c_3 a_{41} + c_2 a_{42} ) σ4=c4−(c3a41+c2a42)

σ 4 = 0 − ( 0 × − 1 3 ) − ( 4 × 1 3 ) = − 4 3 \sigma_{4} =0 - (0 \times -\dfrac{1}{3}) - (4 \times \dfrac{1}{3}) = -\dfrac{4}{3} σ4=0−(0×−31)−(4×31)=−34 , 是从下面的单纯形表中的如下位置提取的数值 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_07



检验数 { σ 1 = 3 − ( 0 × 5 3 ) − ( 4 × 1 3 ) = 5 3 σ 4 = 0 − ( 0 × − 1 3 ) − ( 4 × 1 3 ) = − 4 3 \begin{cases} \sigma_{1} =3 - (0 \times \dfrac{5}{3}) - (4 \times \dfrac{1}{3}) = \dfrac{5}{3} \\\\ \sigma_{4} =0 - (0 \times -\dfrac{1}{3}) - (4 \times \dfrac{1}{3}) = -\dfrac{4}{3} \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧σ1=3−(0×35)−(4×31)=35σ4=0−(0×−31)−(4×31)=−34 , σ 1 \sigma_1 σ1 是大于 0 0 0 的 , 两个检验数必须都小于等于 0 0 0 , 该基可行解才算作是最优解 , 因此 该基可行解不是最优解 ;



根据检验数选择入基变量 : 继续迭代 , 选择检验数较大的非基变量 , 作为入基变量 , 这里入基变量是 x 1 x_1 x1 ;




10、第一次迭代 : 根据入基变量计算并选择出基变量



参考博客 ​​【运筹学】线性规划数学模型 ( 单纯形法 | 迭代原则 | 入基 | 出基 | 线性规划求解示例 ) 五、出基与入基变量选择​



入基变量 根据检验数 σ \sigma σ 选择的是 x 1 x_1 x1 ;



出基变量是根据 θ \theta θ 值来选择的 , 选择 θ \theta θ 值较小的值对应的基变量作为出基变量 ;



θ \theta θ 值计算 :​ 常数列 b = ( 30 10 ) b =\begin{pmatrix} \quad 30 \quad \\ \quad 10 \quad \end{pmatrix} b=(3010) , 分别除以除以入基变量 x 1 x_1 x1 大于 0 0 0 的系数列 ( 5 3 1 3 ) \begin{pmatrix} \quad \dfrac{5}{3} \quad \\\\ \quad \dfrac{1}{3} \quad \end{pmatrix} ⎝⎜⎜⎛3531⎠⎟⎟⎞ , 计算过程如下 ( 30 5 3 10 1 3 ) \begin{pmatrix} \quad \cfrac{30}{\dfrac{5}{3}} \quad \\\\ \quad \cfrac{10}{\dfrac{1}{3}} \quad \end{pmatrix} ⎝⎜⎜⎜⎜⎜⎜⎜⎛35303110⎠⎟⎟⎟⎟⎟⎟⎟⎞ , 得出结果是 ( 18 30 ) \begin{pmatrix} \quad 18 \quad \\\\ \quad 30 \quad \end{pmatrix} ⎝⎛1830⎠⎞ , 然后选择一个最小值 18 18 18 , 查看该最小值对应的变量是 x 3 x_3 x3 , ​选择该变量作为出基变量​ ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_08



x 1 x_1 x1 作入基变量 , x 3 x_3 x3 作出基变量 ;​ ​使用 x 1 x_1 x1 替代基变量中 x 3 x_3 x3 的位置 ;

迭代后的基变量为 x 1 , x 2 x_1 ,x_2 x1,x2 ;



更新一下单纯形表 :

c j c_j cj

c j c_j cj

3 3 3

4 4 4

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

θ i \theta_i θi

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

40 40 40

2 2 2

1 1 1

1 1 1

0 0 0

40 40 40 ( θ 3 \theta_3 θ3 )

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4)

x 4 x_4 x4

30 30 30

1 1 1

3 3 3

0 0 0

1 1 1

10 10 10 ( θ 4 \theta_4 θ4 )

σ j \sigma_j σj

3 3 3 ( σ 1 \sigma_1 σ1 )

4 4 4 ( σ 2 \sigma_2 σ2 )

0 0 0

0 0 0

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

30 30 30

5 3 \dfrac{5}{3} 35

0 0 0

1 1 1

− 1 3 -\dfrac{1}{3} −31

18 18 18 ( θ 3 \theta_3 θ3 )

4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

10 10 10

1 3 \dfrac{1}{3} 31

1 1 1

0 0 0

1 3 \dfrac{1}{3} 31

30 30 30 ( θ 2 \theta_2 θ2 )

σ j \sigma_j σj ( 检验数 )

5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 )

0 0 0

0 0 0

− 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 )



11、第二次迭代 : 方程组同解变换



当前的方程组为 { 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 = 10 \begin{cases} \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 30 \\\\ \dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4 = 10 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧35x1+0x2+x3−31x4=3031x1+x2+0x3+31x4=10 , 选择 x 1 , x 2 x_1, x_2 x1,x2 作为基变量 , 基矩阵为 ( 5 3 0 1 3 1 ) \begin{pmatrix} \quad \dfrac{5}{3} \quad 0 \quad \\\\ \quad \dfrac{1}{3} \quad 1 \quad \end{pmatrix} ⎝⎜⎜⎛350311⎠⎟⎟⎞ , ​进行同解变换 , 将基矩阵转为单位阵 ;






方程 1 1 1 同解变换 :



将 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 30 35x1+0x2+x3−31x4=30 方程中的 x 1 x_1 x1 的系数变为 1 1 1 , x 2 x_2 x2 的系数为 0 0 0 保持不变 ;



方程的左右变量乘以 3 5 \dfrac{3}{5} 53 :

5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 = 30 ( 5 3 x 1 + 0 x 2 + x 3 − 1 3 x 4 ) × 3 5 = 30 × 3 5 x 1 + 0 x 2 + 3 5 x 3 − 1 5 x 4 = 18 \begin{array}{lcl} \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 &=& 30 \\\\ ( \dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 ) \times \dfrac{3}{5} &=& 30 \times \dfrac{3}{5} \\\\ x_1 + 0x_2 + \dfrac{3}{5} x_3 - \dfrac{1}{5}x_4 &=& 18 \end{array} 35x1+0x2+x3−31x4(35x1+0x2+x3−31x4)×53x1+0x2+53x3−51x4===3030×5318



当前方程组变成​ { x 1 + 0 x 2 + 3 5 x 3 − 1 5 x 4 = 18 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 = 10 \begin{cases} x_1 + 0x_2 + \dfrac{3}{5} x_3 - \dfrac{1}{5}x_4 = 18 \\\\ \dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4 = 10 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x1+0x2+53x3−51x4=1831x1+x2+0x3+31x4=10





方程 2 2 2 同解变换 :​ 将方程 1 1 1 乘以 − 1 3 -\dfrac{1}{3} −31 , 与方程 2 2 2 相加 ;



① 方程 1 1 1 乘以 − 1 3 -\dfrac{1}{3} −31 :

( x 1 + 0 x 2 + 3 5 x 3 − 1 5 x 4 ) × − 1 3 = 18 × − 1 3 − 1 3 x 1 + 0 x 2 + − 1 5 x 3 + 1 15 x 4 = − 6 \begin{array}{lcl} ( x_1 + 0x_2 + \dfrac{3}{5} x_3 - \dfrac{1}{5}x_4 ) \times -\dfrac{1}{3} &=& 18 \times -\dfrac{1}{3} \\\\ -\dfrac{1}{3} x_1 + 0x_2 + -\dfrac{1}{5}x_3 + \dfrac{1}{15} x_4 &=& -6 \end{array} (x1+0x2+53x3−51x4)×−31−31x1+0x2+−51x3+151x4==18×−31−6

② 与方程 2 2 2 相加 :

( − 1 3 x 1 + 0 x 2 + − 1 5 x 3 + 1 15 x 4 ) + ( 1 3 x 1 + x 2 + 0 x 3 + 1 3 x 4 ) = − 6 + 10 0 x 1 + x 2 − 1 5 x 3 + 2 5 x 4 = 4 \begin{array}{lcl} (-\dfrac{1}{3} x_1 + 0x_2 + -\dfrac{1}{5}x_3 + \dfrac{1}{15} x_4) + (\dfrac{1}{3}x_1 + x_2 + 0x_3 + \dfrac{1}{3}x_4)&=& -6 + 10 \\\\ 0x_1 + x_2 -\dfrac{1}{5}x_3 + \dfrac{2}{5} x_4 &=& 4 \end{array} (−31x1+0x2+−51x3+151x4)+(31x1+x2+0x3+31x4)0x1+x2−51x3+52x4==−6+104



当前方程组变成​ { x 1 + 0 x 2 + 3 5 x 3 − 1 5 x 4 = 18 0 x 1 + x 2 − 1 5 x 3 + 6 15 x 4 = 4 \begin{cases} x_1 + 0x_2 + \dfrac{3}{5} x_3 - \dfrac{1}{5}x_4 = 18 \\\\ 0x_1 + x_2 -\dfrac{1}{5}x_3 + \dfrac{6}{15} x_4 = 4 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x1+0x2+53x3−51x4=180x1+x2−51x3+156x4=4




12、第二次迭代 : 生成新的单纯形表



更新一下单纯形表 :​ ​将第三次迭代的矩阵填入下面的单纯形表中 ;

c j c_j cj

c j c_j cj

3 3 3

4 4 4

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

θ i \theta_i θi

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

40 40 40

2 2 2

1 1 1

1 1 1

0 0 0

40 40 40 ( θ 3 \theta_3 θ3 )

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4)

x 4 x_4 x4

30 30 30

1 1 1

3 3 3

0 0 0

1 1 1

10 10 10 ( θ 4 \theta_4 θ4 )

σ j \sigma_j σj

3 3 3 ( σ 1 \sigma_1 σ1 )

4 4 4 ( σ 2 \sigma_2 σ2 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 3 x_3 x3 系数 c 3 c_3 c3 )

x 3 x_3 x3

30 30 30

5 3 \dfrac{5}{3} 35

0 0 0

1 1 1

− 1 3 -\dfrac{1}{3} −31

18 18 18 ( θ 3 \theta_3 θ3 )

4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

10 10 10

1 3 \dfrac{1}{3} 31

1 1 1

0 0 0

1 3 \dfrac{1}{3} 31

30 30 30 ( θ 2 \theta_2 θ2 )

σ j \sigma_j σj ( 检验数 )

5 3 \dfrac{5}{3} 35 ( σ 1 \sigma_1 σ1 )

0 0 0

0 0 0

− 4 3 -\dfrac{4}{3} −34 ( σ 4 \sigma_4 σ4 )

第二次迭代

3 3 3 ( 目标函数 x 1 x_1 x1 系数 c 1 c_1 c1 )

x 1 x_1 x1

18 18 18

1 1 1

0 0 0

3 5 \dfrac{3}{5} 53

− 1 5 -\dfrac{1}{5} −51

? ? ? ( θ 3 \theta_3 θ3 )

4 4 4 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

4 4 4

0 0 0

1 1 1

− 1 5 -\dfrac{1}{5} −51

2 5 \dfrac{2}{5} 52

? ? ? ( θ 2 \theta_2 θ2 )

σ j \sigma_j σj ( 检验数 )

0 0 0

0 0 0

? ? ? ( σ 3 \sigma_3 σ3 )

? ? ? ( σ 4 \sigma_4 σ4 )



13、第二次迭代 : 计算检验数、最优解判定



计算检验数 σ \sigma σ :

σ 3 = 0 − 3 × 3 5 − 4 × ( − 1 5 ) = − 9 5 + 4 5 = − 1 \sigma_3 = 0 - 3 \times \dfrac{3}{5} - 4 \times (-\dfrac{1}{5}) = -\dfrac{9}{5} + \dfrac{4}{5} = -1 σ3=0−3×53−4×(−51)=−59+54=−1



σ 4 = 0 − 3 × ( − 1 5 ) − 4 × 2 5 = 3 5 − 8 5 = − 1 \sigma_4 = 0 - 3 \times (-\dfrac{1}{5}) - 4 \times \dfrac{2}{5} = \dfrac{3}{5} - \dfrac{8}{5} = -1 σ4=0−3×(−51)−4×52=53−58=−1



两个非基变量的检验数都是小于等于 0 0 0 的 , 因此该基可行解 ( 18 4 0 0 ) \begin{pmatrix} \quad 18 \quad \\ \quad 4 \quad \\ \quad 0 \quad \\ \quad 0 \quad \end{pmatrix} ⎝⎜⎜⎛18400⎠⎟⎟⎞是最优解 ;






四、单纯形法案例二





1、线性规划示例



线性规划示例 :​ 使用单纯形法求解下面的线性规划 ;

m a x Z = x 1 + 2 x 2 + x 3 s . t { 2 x 1 − 3 x 2 + 2 x 3 ≤ 15 1 3 x 1 + x 2 + 5 x 3 ≤ 20 x j ≥ 0 ( j = 1 , 2 , 3 ) \begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 \leq 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 \leq 20 \\ \\x_j \geq 0 & (j = 1 , 2 , 3 ) \end{cases}\end{array} maxZ=x1+2x2+x3s.t⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧2x1−3x2+2x3≤1531x1+x2+5x3≤20xj≥0(j=1,2,3)




2、转化成标准形式



首先将现行规划转化成标准形式 :

参考 ​​【运筹学】线性规划数学模型标准形式 ( 标准形式 | 目标函数转化 | 决策变量转化 | 约束方程转化 | 固定转化顺序 | 标准形式转化实例 ) 线性规划 普通形式 -> 标准形式 转化顺序说明 ​​ 博客 , 先处理变量约束 , 再将不等式转为等式 , 最后更新目标函数 ;



1 . 处理约束变量 :​ 所有的约束变量都大于等于 0 0 0 , 这里无需处理 ;




2 . 将不等式转为等式 :​ 两个不等式都是小于等于不等式 , 在左侧加入松弛变量即可 ;



① 添加松弛变量 :​ 上述两个不等式 { 2 x 1 − 3 x 2 + 2 x 3 ≤ 15 1 3 x 1 + x 2 + 5 x 3 ≤ 20 \begin{cases} 2 x_1 - 3x_2 + 2x_3 \leq 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 \leq 20 \end{cases} ⎩⎪⎪⎨⎪⎪⎧2x1−3x2+2x3≤1531x1+x2+5x3≤20 , 在左侧分别添加 x 4 , x 5 x_4 , x_5 x4,x5 松弛变量 ;



② 最终结果 :​ 转化后的结果是 { 2 x 1 − 3 x 2 + 2 x 3 + x 4 = 15 1 3 x 1 + x 2 + 5 x 3 + x 5 = 20 x j ≥ 0 ( j = 1 , 2 , 3 , 4 , 5 ) \begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧2x1−3x2+2x3+x4=1531x1+x2+5x3+x5=20xj≥0(j=1,2,3,4,5)




3 . 处理目标函数取最大值 :​ 目标函数就是取最大值 , 无需处理 ;




4 . 最终的标准形结果是 :

m a x Z = x 1 + 2 x 2 + x 3 + 0 x 4 + 0 x 5 s . t { 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 = 15 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 x j ≥ 0 ( j = 1 , 2 , 3 , 4 , 5 ) \begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array} maxZ=x1+2x2+x3+0x4+0x5s.t⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧2x1−3x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20xj≥0(j=1,2,3,4,5)




3、初始基可行解



找初始基可行解 :



① 查找单位阵 :​ 该线性规划标准形的系数矩阵中 , x 4 , x 5 x_4 , x_5 x4,x5 的系数矩阵是 ( 1 0 0 1 ) \begin{pmatrix} \quad 1 \quad 0 \quad \\ \quad 0 \quad 1 \quad \\ \end{pmatrix} (1001) , 该矩阵是单位阵 ;

② 可行基 :​ 选择该矩阵作为可行基 ;

③ 初始基可行解 :​ 其对应的解是基可行解 ( 0 0 0 15 20 ) \begin{pmatrix} \quad 0 \quad \\ \quad 0 \quad \\ \quad 0 \quad \\ \quad 15 \quad \\ \quad 20 \quad \\ \end{pmatrix} ⎝⎜⎜⎜⎜⎛0001520⎠⎟⎟⎟⎟⎞ ;




## 4、列出单纯形表


m a x Z = x 1 + 2 x 2 + x 3 + 0 x 4 + 0 x 5 s . t { 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 = 15 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 x j ≥ 0 ( j = 1 , 2 , 3 , 4 , 5 ) \begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array} maxZ=x1+2x2+x3+0x4+0x5s.t⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧2x1−3x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20xj≥0(j=1,2,3,4,5)



c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 1 -1 −1

2 2 2

1 1 1

0 0 0

− - −

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0



5、计算检验数



计算非基变量的检验数 :

单个检验数计算公式 :​ σ j = c j − ∑ c i a i j \sigma_j = c_j - \sum c_i a_{ij} σj=cj−∑ciaij , 其中 c j c_j cj 是对应目标函数非基变量系数 , c i c_i ci 是目标函数中基变量系数 , a i j a_{ij} aij 是系数矩阵中对应的 x j x_j xj 非基变量列向量 ;



① σ 1 \sigma_1 σ1 检验数计算 :​ σ 1 = 1 − ( 0 × 2 + 0 × 1 3 ) = 1 \sigma_1 = 1 - ( 0 \times 2 + 0 \times \dfrac{1}{3} ) = 1 σ1=1−(0×2+0×31)=1

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形表_09

② σ 2 \sigma_2 σ2 检验数计算 :​ σ 2 = 2 − ( 0 × ( − 1 ) + 0 × 1 ) = 2 \sigma_2 = 2 - ( 0 \times (-1) + 0 \times 1 ) = 2 σ2​=2−(0×(−1)+0×1)=2

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形法_10

③ σ 1 3 \sigma_13 σ13 检验数计算 :​ σ 3 = 1 − ( 0 × 2 + 0 × 5 ) = 1 \sigma_3 = 1 - ( 0 \times 2 + 0 \times 5 ) = 1 σ3=1−(0×2+0×5)=1

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_11




6、选择入基变量与出基变量



入基变量选择 :​ 选择检验数 σ j \sigma_j σj 较大的非基变量作为入基变量 , 即 x 2 x_2 x2 ;



出基变量是根据 θ \theta θ 值来选择的 , 选择 θ \theta θ 值较小的值对应的基变量作为出基变量 ;



出基变量选择 :​ 常数列 b = ( 15 20 ) b =\begin{pmatrix} \quad 15 \quad \\ \quad 20 \quad \end{pmatrix} b=(1520) , 分别除以除以入基变量 x 2 x_2 x2 大于 0 0 0 的系数列 ( − 1 1 ) \begin{pmatrix} \quad -1 \quad \\\\ \quad 1 \quad \end{pmatrix} ⎝⎛−11⎠⎞ , 计算过程如下 ( 系 数 小 于 0 不 计 算 20 1 ) \begin{pmatrix} \quad 系数小于0 不计算 \quad \\\\ \quad \cfrac{20}{1} \quad \end{pmatrix} ⎝⎜⎜⎛系数小于0不计算120⎠⎟⎟⎞ , 得出结果是 ( 无 效 值 20 ) \begin{pmatrix} \quad 无效值 \quad \\\\ \quad 20 \quad \end{pmatrix} ⎝⎛无效值20⎠⎞ , 如果系数小于等于 0 0 0 , 该值就是无效值 , 默认为无穷大 , 不进行比较 , 选择 20 20 20 对应的基变量作为出基变量 , 查看该最小值对应的变量是 x 5 x_5 x5 , ​选择该 x 5 x_5 x5 变量作为出基变量​ ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_12




7、第一次迭代 : 列出单纯形表



上述已经得到 x 2 x_2 x2 作为入基变量 , 由非基变量转为基变量 , x 5 x_5 x5 作为出基变量 , 由基变量转为非基变量 ; 使用 x 2 x_2 x2 , 替换基变量中的 x 5 x_5 x5 的位置 ;

基变量为 x 4 , x 2 x_4 , x_2 x4,x2 , 注意顺序不要写反 ;



c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 1 -1 −1

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

? ? ?

1 1 1

? ? ?

1 1 1

? ? ?

? ? ? ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

? ? ?

0 0 0

? ? ?

0 0 0

? ? ?

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

0 0 0

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

? ? ? ( σ 2 \sigma_2 σ2 )



8、第一次迭代 : 进行行变换



当前的线性规划标准形式等式方程组 :​ { 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 = 15 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 \begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \end{cases} ⎩⎪⎪⎨⎪⎪⎧2x1−3x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20



当前的单纯性表 :



c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ? ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

? ? ? ( σ 1 \sigma_1 σ1 )

0 0 0

? ? ? ( σ 3 \sigma_3 σ3 )

0 0 0

? ? ? ( σ 2 \sigma_2 σ2 )


下面进行矩阵变换 :


  • 入基变量是 x 2 x_2 x2
  • 出基变量是 x 5 x_5 x5


中心元 :​ 在下面单纯形表中 , x 2 x_2 x2 列 ( 红色选框 ) , 与 x 5 x_5 x5 行 ( 绿色选框 ) , 上述 行列相交的部分 是 ​中心元​ ,

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_入基出基_13

以上述 中心元 为轴做变换 , 变换目的是把 中心元位置变换成 1 1 1 , 把中心元所在列的另一个位置变换成 0 0 0 ;



该行中 x 2 x_2 x2 的系数 , 就是 1 1 1 , 不用改变 , 因此这里将第二行的系数原封不动填入第一次迭代的单纯形表中 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_14

接下来要将上图 蓝色选框 部分的位置 , 变为 0 0 0 , 变换过程如下 :


  • 将 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 31x1+x2+5x3+0x4+x5=20 方程 等式左右两边乘以 3 3 3 ;
  • 与 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 = 15 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 2x1−3x2+2x3+x4+0x5=15 相加 ;

( 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 ) × 3 + ( 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 ) = 20 × 3 + 15 ( x 1 + 3 x 2 + 15 x 3 + 3 x 5 ) + ( 2 x 1 − 3 x 2 + 2 x 3 + x 4 + 0 x 5 ) = 75 3 x 1 + 0 x 2 + 17 x 3 + x 4 + 3 x 5 = 75 \begin{array}{lcl} (\dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 ) \times 3 + ( 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 ) &=& 20 \times 3 + 15 \\\\ ( x_1 + 3x_2 + 15x_3 + 3x_5 ) + ( 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 ) &=& 75 \\\\ 3 x_1 + 0x_2 + 17x_3 + x_4 + 3x_5 &=& 75 \end{array} (31x1+x2+5x3+0x4+x5)×3+(2x1−3x2+2x3+x4+0x5)(x1+3x2+15x3+3x5)+(2x1−3x2+2x3+x4+0x5)3x1+0x2+17x3+x4+3x5===20×3+157575



【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形表_15



新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

? ? ? ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

? ? ? ( σ 1 \sigma_1 σ1 )

0 0 0

? ? ? ( σ 3 \sigma_3 σ3 )

0 0 0

? ? ? ( σ 5 \sigma_5 σ5 )



9、第一次迭代 : 计算检验数



1 . 计算非基变量 x 1 x_1 x1 的检验数 σ 1 \sigma_1 σ1 :



σ 1 = 1 − ( 0 2 ) × ( 3 1 3 ) = 1 − ( 0 × 3 + 2 × 1 3 ) = 1 3 \sigma_1 = 1 - \begin{pmatrix} \quad 0 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad 3 \quad \\\\ \quad \dfrac{1}{3} \quad \\ \end{pmatrix} = 1- ( 0 \times 3 + 2 \times \dfrac{1}{3} ) = \dfrac{1}{3} σ1=1−(02)×⎝⎜⎛331⎠⎟⎞=1−(0×3+2×31)=31

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_16



2 . 计算非基变量 x 3 x_3 x3 的检验数 σ 3 \sigma_3 σ3 :



σ 3 = 1 − ( 0 2 ) × ( 17 5 ) = 1 − ( 0 × 17 + 2 × 5 ) = − 9 \sigma_3 = 1 - \begin{pmatrix} \quad 0 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad 17 \quad \\\\ \quad 5 \quad \\ \end{pmatrix} = 1- ( 0 \times 17 + 2 \times 5 ) = -9 σ3=1−(02)×⎝⎛175⎠⎞=1−(0×17+2×5)=−9

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_17


3 . 计算非基变量 x 5 x_5 x5 的检验数 σ 5 \sigma_5 σ5 :



σ 5 = 0 − ( 0 2 ) × ( 3 1 ) = 0 − ( 0 × 3 + 2 × 1 ) = − 2 \sigma_5 = 0 - \begin{pmatrix} \quad 0 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad 3 \quad \\\\ \quad 1 \quad \\ \end{pmatrix} = 0- ( 0 \times 3 + 2 \times 1 ) = -2 σ5=0−(02)×⎝⎛31⎠⎞=0−(0×3+2×1)=−2

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_检验数_18



新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

? ? ? ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 3 \dfrac{1}{3} 31 ( σ 1 \sigma_1 σ1 )

0 0 0

− 9 -9 −9 ( σ 3 \sigma_3 σ3 )

0 0 0

− 2 -2 −2 ( σ 5 \sigma_5 σ5 )



10、第一次迭代 : 最优解判定



上述三个检验数 , { σ 1 = 1 3 σ 3 = − 9 σ 5 = − 2 \begin{cases} \sigma_1 = \dfrac{1}{3} \\\\ \sigma_3= -9 \\\\ \sigma_5 = -2 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧σ1=31σ3=−9σ5=−2 , 其中 σ 1 \sigma_1 σ1 大于 0 0 0 , 只有当检验数都小于等于 0 0 0 时 , 该基可行解才是最优解 ; 该解不是最优解 ;




无穷多最优解 :​ 当有检验数等于 0 0 0 时 , 其它都小于 0 0 0 , 该线性规划有无穷多个最优解 ;
无界解 :​ 找不到出基变量 , 则该线性规划是无界解 ;





11、第一次迭代 : 入基变量



根据上述三个检验数 { σ 1 = 1 3 σ 3 = − 9 σ 5 = − 2 \begin{cases} \sigma_1 = \dfrac{1}{3} \\\\ \sigma_3= -9 \\\\ \sigma_5 = -2 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧σ1=31σ3=−9σ5=−2 的值 , 选择检验数最大的非基变量作为入基变量 , 这里选择 x 1 x_1 x1 ;




12、第一次迭代 : 出基变量



出基变量选择 :​ 常数列 b = ( 75 20 ) b =\begin{pmatrix} \quad 75 \quad \\ \quad 20 \quad \end{pmatrix} b=(7520) , 分别除以除以入基变量 x 1 x_1 x1 大于 0 0 0 的系数列 ( 3 1 3 ) \begin{pmatrix} \quad 3 \quad \\\\ \quad \cfrac{1}{3} \quad \end{pmatrix} ⎝⎜⎜⎛331⎠⎟⎟⎞ , 计算过程如下 ( 75 3 20 1 3 ) \begin{pmatrix} \quad \cfrac{75}{3} \quad \\\\ \quad \cfrac{20}{ \dfrac{1}{3}} \quad \end{pmatrix} ⎝⎜⎜⎜⎜⎜⎛3753120⎠⎟⎟⎟⎟⎟⎞ , 得出结果是 ( 25 60 ) \begin{pmatrix} \quad 25 \quad \\\\ \quad 60 \quad \end{pmatrix} ⎝⎛2560⎠⎞ , 如果系数小于等于 0 0 0 , 该值就是无效值 , 默认为无穷大 , 不进行比较 , 选择 25 25 25 对应的基变量作为出基变量 , 查看该最小值对应的变量是 x 4 x_4 x4 , ​选择该 x 4 x_4 x4 变量作为出基变量​ ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_单纯形表_19

新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

25 25 25 ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

60 60 60 ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 3 \dfrac{1}{3} 31 ( σ 1 \sigma_1 σ1 )

0 0 0

− 9 -9 −9 ( σ 3 \sigma_3 σ3 )

0 0 0

− 2 -2 −2 ( σ 5 \sigma_5 σ5 )




13、第二次迭代 : 进行矩阵变换



在上一篇博客中 , 第一次迭代后 , 找到 入基变量 x 1 x_1 x1 , 出基变量 x 4 x_4 x4 , 使用 x 1 x_1 x1 替换基变量中的 x 4 x_4 x4 位置 ;



新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

25 25 25 ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

60 60 60 ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 3 \dfrac{1}{3} 31 ( σ 1 \sigma_1 σ1 )

0 0 0

− 9 -9 −9 ( σ 3 \sigma_3 σ3 )

0 0 0

− 2 -2 −2 ( σ 5 \sigma_5 σ5 )

第二次迭代

1 1 1 ( 目标函数 x 1 x_1 x1 系数 c 1 c_1 c1 )

x 1 x_1 x1

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ? ( θ 1 \theta_1 θ1 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ?

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

0 0 0

0 0 0

? ? ? ( σ 3 \sigma_3 σ3 )

? ? ? ( σ 4 \sigma_4 σ4 )

? ? ? ( σ 5 \sigma_5 σ5 )


中心元 :​ 入基变量 x 1 x_1 x1 所在列 , 与出基变量 x 4 x_4 x4 所在行 , 相交的位置叫做中心元 ;


  • 中心元系数 :​ 转换成 1 1 1 ;
  • 中心元所在列另一个系数 :​ 转换成 0 0 0 ;

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_入基出基_20



当前的线性规划标准形式等式方程组 :​ { 3 x 1 + 0 x 2 + 17 x 3 + x 4 + 3 x 5 = 75 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 \begin{cases} 3 x_1 + 0x_2 + 17x_3 + x_4 + 3x_5 = 75 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \end{cases} ⎩⎪⎪⎨⎪⎪⎧3x1+0x2+17x3+x4+3x5=7531x1+x2+5x3+0x4+x5=20



中心元转换为 1 1 1 :​ 将 3 x 1 + 0 x 2 + 17 x 3 + x 4 + 3 x 5 = 75 3 x_1 + 0x_2 + 17x_3 + x_4 + 3x_5 = 75 3x1+0x2+17x3+x4+3x5=75 中的 x 1 x_1 x1 系数变成 1 1 1 , 只需要将方程等式两边都乘以 1 3 \cfrac{1}{3} 31 即可 ;

( 3 x 1 + 0 x 2 + 17 x 3 + x 4 + 3 x 5 ) × 1 3 = 75 × 1 3 x 1 + 0 x 2 + 17 3 x 3 + 1 3 x 4 + x 5 = 25 \begin{array}{lcl} ( 3 x_1 + 0x_2 + 17x_3 + x_4 + 3x_5 ) \times \cfrac{1}{3} &=& 75 \times \cfrac{1}{3}\\\\ x_1 + 0 x_2 + \cfrac{17}{3} x_3 + \dfrac{1}{3}x_4 + x_5 &=& 25 \end{array} (3x1+0x2+17x3+x4+3x5)×31x1+0x2+317x3+31x4+x5==75×3125



与中心元同一列的 x 1 x_1 x1 的系数转换为 0 0 0 :​ 将 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 31x1+x2+5x3+0x4+x5=20 中的 x 1 x_1 x1 系数转为 0 0 0 :


  • 将 x 1 + 0 x 2 + 17 3 x 3 + 1 3 x 4 + x 5 = 25 x_1 + 0 x_2 + \cfrac{17}{3} x_3 + \dfrac{1}{3}x_4 + x_5 = 25 x1+0x2+317x3+31x4+x5=25 方程 左右变量乘以 − 1 3 -\dfrac{1}{3} −31 ;
  • 将上个步骤得到的等式与 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 = 20 \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 31x1+x2+5x3+0x4+x5=20 相加 , 即可使 x 1 x_1 x1 系数为 0 0 0 ;

( x 1 + 0 x 2 + 17 3 x 3 + 1 3 x 4 + x 5 ) × − 1 3 + ( 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 ) = 25 × − 1 3 + 20 ( − x 1 + 0 x 2 − 17 9 x 3 − 1 9 x 4 − 1 3 x 5 ) + ( 1 3 x 1 + x 2 + 5 x 3 + 0 x 4 + x 5 ) = 35 3 0 x 1 + x 2 + 28 9 x 3 − 1 9 x 4 + 2 3 x 5 = 35 3 \begin{array}{lcl} ( x_1 + 0 x_2 + \cfrac{17}{3} x_3 + \dfrac{1}{3}x_4 + x_5 ) \times -\dfrac{1}{3} + ( \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 )= 25 \times -\dfrac{1}{3} + 20 \\\\ (-x_1 + 0x_2 -\cfrac{17}{9} x_3 - \dfrac{1}{9}x_4 -\dfrac{1}{3} x_5 ) + ( \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 ) = \dfrac{35}{3} \\\\ 0x_1 + x_2 + \cfrac{28}{9} x_3 - \dfrac{1}{9}x_4 + \cfrac{2}{3} x_5 = \dfrac{35}{3} \end{array} (x1+0x2+317x3+31x4+x5)×−31+(31x1+x2+5x3+0x4+x5)=25×−31+20(−x1+0x2−917x3−91x4−31x5)+(31x1+x2+5x3+0x4+x5)=3350x1+x2+928x3−91x4+32x5=335

新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

25 25 25 ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

60 60 60 ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 3 \dfrac{1}{3} 31 ( σ 1 \sigma_1 σ1 )

0 0 0

− 9 -9 −9 ( σ 3 \sigma_3 σ3 )

0 0 0

− 2 -2 −2 ( σ 5 \sigma_5 σ5 )

第二次迭代

1 1 1 ( 目标函数 x 1 x_1 x1 系数 c 1 c_1 c1 )

x 1 x_1 x1

25 25 25

1 1 1

0 0 0

17 3 \dfrac{17}{3} 317

1 3 \dfrac{1}{3} 31

1 1 1

? ? ? ( θ 1 \theta_1 θ1 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

35 3 \dfrac{35}{3} 335

0 0 0

1 1 1

28 9 \dfrac{28}{9} 928

− 1 9 -\dfrac{1}{9} −91

2 3 \dfrac{2}{3} 32

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

0 0 0

0 0 0

? ? ? ( σ 3 \sigma_3 σ3 )

? ? ? ( σ 4 \sigma_4 σ4 )

? ? ? ( σ 5 \sigma_5 σ5 )



14、第二次迭代 : 计算检验数



1 . 计算非基变量 x 3 x_3 x3 的检验数 σ 3 \sigma_3 σ3 :



σ 3 = 1 − ( 1 2 ) × ( 17 3 28 9 ) = 1 − ( 1 × 17 3 + 2 × 28 9 ) = 9 − 17 × 3 + 28 × 2 9 = − 98 9 \sigma_3 = 1 - \begin{pmatrix} \quad 1 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad \dfrac{17}{3} \quad \\\\ \quad \dfrac{28}{9} \quad \\ \end{pmatrix} = 1- ( 1 \times \dfrac{17}{3} + 2 \times \dfrac{28}{9} ) = \dfrac{9 - 17 \times 3 + 28 \times 2}{9} = - \dfrac{98}{9} σ3=1−(12)×⎝⎜⎜⎛317928⎠⎟⎟⎞=1−(1×317+2×928)=99−17×3+28×2=−998

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_入基出基_21

2 . 计算非基变量 x 4 x_4 x4 的检验数 σ 4 \sigma_4 σ4 :



σ 4 = 0 − ( 1 2 ) × ( 1 3 − 1 9 ) = 0 − ( 1 × 1 3 − 2 × 1 9 ) = − 1 9 \sigma_4 = 0 - \begin{pmatrix} \quad 1 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad \dfrac{1}{3} \quad \\\\ \quad -\dfrac{1}{9} \quad \\ \end{pmatrix} = 0- ( 1 \times \dfrac{1}{3} - 2 \times \dfrac{1}{9} ) = - \dfrac{1}{9} σ4=0−(12)×⎝⎜⎜⎛31−91⎠⎟⎟⎞=0−(1×31−2×91)=−91

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_22

3 . 计算非基变量 x 5 x_5 x5 的检验数 σ 5 \sigma_5 σ5 :



σ 5 = 0 − ( 1 2 ) × ( 1 2 3 ) = 0 − ( 1 × 1 + 2 × 2 3 ) = − 7 3 \sigma_5 = 0 - \begin{pmatrix} \quad 1 \quad 2 \quad \\ \end{pmatrix} \times \begin{pmatrix} \quad 1 \quad \\\\ \quad \dfrac{2}{3} \quad \\ \end{pmatrix} = 0- ( 1 \times 1 + 2 \times \dfrac{2}{3} ) = - \dfrac{7}{3} σ5=0−(12)×⎝⎜⎛132⎠⎟⎞=0−(1×1+2×32)=−37

【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★_运筹学_23

新的单纯形表为 :

c j c_j cj

c j c_j cj

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1

x 2 x_2 x2

x 3 x_3 x3

x 4 x_4 x4

x 5 x_5 x5

θ i \theta_i θi

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

15 15 15

2 2 2

− 3 -3 −3

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4)

0 0 0 ( 目标函数 x 5 x_5 x5 系数 c 5 c_5 c5)

x 5 x_5 x5

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5 )

σ j \sigma_j σj ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1 )

2 2 2 ( σ 2 \sigma_2 σ2 )

1 1 1 ( σ 3 \sigma_3 σ3 )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4 系数 c 4 c_4 c4 )

x 4 x_4 x4

75 75 75

3 3 3

0 0 0

17 17 17

1 1 1

3 3 3

25 25 25 ( θ 4 \theta_4 θ4 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

20 20 20

1 3 \dfrac{1}{3} 31

1 1 1

5 5 5

0 0 0

1 1 1

60 60 60 ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

1 3 \dfrac{1}{3} 31 ( σ 1 \sigma_1 σ1 )

0 0 0

− 9 -9 −9 ( σ 3 \sigma_3 σ3 )

0 0 0

− 2 -2 −2 ( σ 5 \sigma_5 σ5 )

第二次迭代

1 1 1 ( 目标函数 x 1 x_1 x1 系数 c 1 c_1 c1 )

x 1 x_1 x1

25 25 25

1 1 1

0 0 0

17 3 \dfrac{17}{3} 317

1 3 \dfrac{1}{3} 31

1 1 1

? ? ? ( θ 1 \theta_1 θ1 )

2 2 2 ( 目标函数 x 2 x_2 x2 系数 c 2 c_2 c2)

x 2 x_2 x2

35 3 \dfrac{35}{3} 335

0 0 0

1 1 1

28 9 \dfrac{28}{9} 928

− 1 9 -\dfrac{1}{9} −91

2 3 \dfrac{2}{3} 32

? ? ? ( θ 2 \theta_2 θ2)

σ j \sigma_j σj ( 检验数 )

0 0 0

0 0 0

− 98 9 - \dfrac{98}{9} −998 ( σ 3 \sigma_3 σ3 )

− 1 9 - \dfrac{1}{9} −91 ( σ 4 \sigma_4 σ4 )

− 7 3 - \dfrac{7}{3} −37 ( σ 5 \sigma_5 σ5 )



15、第二次迭代 : 最优解判定



上述三个检验数 , { σ 3 = − 98 9 σ 4 = − 1 9 σ 5 = − 7 3 \begin{cases} \sigma_3 =- \dfrac{98}{9} \\\\ \sigma_4= - \dfrac{1}{9} \\\\ \sigma_5 = - \dfrac{7}{3} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧σ3=−998σ4=−91σ5=−37 , 三个检验数都小于等于 0 0 0 , 该基可行解是最优解 ;






五、线性规划最优解分析





1、唯一最优解



使用单纯形法求解线性规划时 , 得到最优解时 , 所有的非基变量对应的检验数都小于 0 0 0 , 该线性规划有唯一最优解 ;




2、无穷多最优解



使用单纯形法求解线性规划时 , 得到最优解时 , 存在一个或多个非基变量对应的检验数等于 0 0 0 , 那么该线性规划有无穷多最优解 ;




3、无界解



使用单纯形法求解线性规划时 , 某个非基变量 x j x_j xj , 其对应的检验数 σ j ≤ 0 \sigma_j \leq 0 σj≤0 , 但是该非基变量的所有系数都是小于等于 0 0 0 的 , 此时该线性规划有 无界解 ;




4、无可行解



使用人工变量法 ( 大 M M M 单纯形法 ) 求解线性规划 , 得到最优解时 , 此时基变量中还存在人工变量 , 人工添加的变量没有迭代出去 , 这种情况下 , 该线性规划没有可行解 ;