欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/6/17 编程问答 30 豆豆

文章目录

  • 一、单纯形法原理
  • 二、单纯形法流程
  • 三、单纯形法案例一
    • 1、线性规划示例
    • 2、转化标准形式
    • 3、查找初始基可行解
    • 4、初始基可行解的最优解判定
    • 5、第一次迭代 : 入基与出基变量选择
    • 6、第一次迭代 : 方程组同解变换
    • 7、第一次迭代 : 生成新的单纯形表
    • 8、第一次迭代 : 解出基可行解
    • 9、第一次迭代 : 计算检验数 σj\sigma_jσj 判定最优解 并选择入基变量
    • 10、第一次迭代 : 根据入基变量计算并选择出基变量
    • 11、第二次迭代 : 方程组同解变换
    • 12、第二次迭代 : 生成新的单纯形表
    • 13、第二次迭代 : 计算检验数、最优解判定
  • 四、单纯形法案例二
    • 1、线性规划示例
    • 2、转化成标准形式
    • 3、初始基可行解
    • 5、计算检验数
    • 6、选择入基变量与出基变量
    • 7、第一次迭代 : 列出单纯形表
    • 8、第一次迭代 : 进行行变换
    • 9、第一次迭代 : 计算检验数
    • 10、第一次迭代 : 最优解判定
    • 11、第一次迭代 : 入基变量
    • 12、第一次迭代 : 出基变量
    • 13、第二次迭代 : 进行矩阵变换
    • 14、第二次迭代 : 计算检验数
    • 15、第二次迭代 : 最优解判定
  • 五、线性规划最优解分析
    • 1、唯一最优解
    • 2、无穷多最优解
    • 3、无界解
    • 4、无可行解





一、单纯形法原理



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


单纯形法的理论基础 :


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

定理 222 ( 基可行解是凸集顶点 ) : 线性规划的 基可行解 XBX_BXB 对应了上述 可行域 ( 凸集 ) 的顶点位置 ;

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


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


给定线性规划 :

maxZ=2x1+x2s.t={x1+1.9x2≥3.8x1−1.9x2≤3.8x1+1.9x2≤10.2x1−1.9x2≥−3.8x1,x2≥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.9x23.8x11.9x23.8x1+1.9x210.2x11.9x23.8x1,x20


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

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

  • 无限个解中迭代 : 上图中的 可行域 DDD 中的点是无限的 , 可以在所有的无限个可行域 DDD 解中进行迭代 , 逐个迭代很难 ;

  • 有限个解中迭代 : 因此选取 可行域 ( 凸集 ) 的顶点 , 也就是 基可行解 进行迭代 , 该线性规划问题的基可行解是有限的 , 只有 444 个 , 即该凸集有 444 个顶点 ;

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


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


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

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


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





二、单纯形法流程



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


单纯形法的基本流程 :


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

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

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

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



这里涉及到了两个准则 :

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


单纯形法涉及到的问题 :


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

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

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

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





三、单纯形法案例一





1、线性规划示例


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


maxZ=3x1+4x2{2x1+x2≤40x1+3x2≤30xj≥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+4x22x1+x240x1+3x230xj0(j=1,2)



2、转化标准形式


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

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


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

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

  • 2x1+x2≤402 x_1 + x_2 \leq 402x1+x240 , 左侧加入松弛变量 x3x_3x3 , 变为 2x1+x2+x3=402 x_1 + x_2 + x_3 = 402x1+x2+x3=40
  • x1+3x2≤30x_1 + 3x_2 \leq 30x1+3x230 , 左侧加入松弛变量 x4x_4x4 , 变为 x1+3x2+x4=30x_1 + 3x_2 + x_4 = 30x1+3x2+x4=30

③ 更新目标函数 :x3x_3x3x4x_4x4 加入到目标函数中 , 得到新的目标函数 maxZ=3x1+4x2+0x3+0x4max Z = 3x_1 + 4x_2 + 0x_3 + 0x_4maxZ=3x1+4x2+0x3+0x4 ;



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

maxZ=3x1+4x2+0x3+0x4{2x1+x2+x3+0x4=40x1+3x2+0x3+x4=30xj≥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+0x42x1+x2+x3+0x4=40x1+3x2+0x3+x4=30xj0(j=1,2,3,4)



3、查找初始基可行解


找基矩阵 :


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


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



列出单纯形表 :



cjc_jcjcjc_jcj333444000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4θi\theta_iθi
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x3404040222111111000
000 ( 目标函数 x4x_4x4 系数 c4c_4c4)x4x_4x4303030111333000111
σj\sigma_jσj333444000000

基变量是 x3x_3x3x4x_4x4 , 基变量在约束条件中的系数矩阵 [1001]\begin{bmatrix} &1 & 0 & \\\\ &0 & 1 & \end{bmatrix}1001 就是基矩阵 , 这是个单位阵 ;

基变量是 x3x_3x3x4x_4x4 在目标函数中的系数是 (00)\begin{pmatrix} \quad 0 \quad 0 \quad \end{pmatrix}(00) ;

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



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


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


这里只求非基变量的检验数 , 即 x1x_1x1 , x2x_2x2 的检验数 ;


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

  • 非基变量在目标函数中的系数矩阵 : CNT=(34)C_N^T=\begin{pmatrix} \quad 3 \quad 4 \quad \end{pmatrix}CNT=(34)

  • 基变量在目标函数中的叙述矩阵 : CBT=(00)C_B^T = \begin{pmatrix} \quad 0 \quad 0 \quad \end{pmatrix}CBT=(00)

  • B−1NB^{-1}NB1N 是系数矩阵中经过矩阵变换后 , 基变量系数是单位阵 III , 非基变量系数是 B−1NB^{-1}NB1N : B−1N=[2113]B^{-1}N =\begin{bmatrix} &2 & 1 & \\\\ &1 & 3 & \end{bmatrix}B1N=2113


(CNT−CBTB−1N)=CNT=(34)−(00)×[2113]( 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}(CNTCBTB1N)=CNT=(34)(00)×2113

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


其中 σ1\sigma_{1}σ1 是目标函数中 x1x_1x1 的系数 , σ2\sigma_{2}σ2 是目标函数中的 x2x_2x2 的系数 ;

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


系数的计算公式为 : σj=cj−∑ciaij\sigma_j = c_j - \sum c_i a_{ij}σj=cjciaij , 其中 cjc_jcj 对应的是非基变量在目标函数系数 , cic_ici 是基变量在目标函数中的系数 , aija_{ij}aijB−1NB^{-1}NB1N 中的矩阵向量 , 代表一列 ;



σ1=c1−(c3a11+c4a12)\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 , 是从下面的单纯形表中的如下位置提取的数值 ;

σ2=c2−(c3a21+c4a22)\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 , 是从下面的单纯形表中的如下位置提取的数值 ;


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



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


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


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


这里将出基变量与入基变量选择好了 , x2x_2x2 的检验数较大 , 选择 x2x_2x2 作为入基变量 , x4x_4x4θ4\theta_4θ4 较小 , 选择 x4x_4x4 作为出基变量 ;


入基出基操作完成后 , 基变量变成了 x3,x2x_3, x_2x3,x2 ;



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


方程组做同解变换 :



线性规划原始方程组为 {2x1+x2+x3+0x4=40x1+3x2+0x3+x4=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 , 需要将 x2x_2x2 的系数变为 (01)\begin{pmatrix} \quad 0 \quad \\ \quad 1 \quad \end{pmatrix}(01) , x3x_3x3 的系数保持 (10)\begin{pmatrix} \quad 1 \quad \\ \quad 0 \quad \end{pmatrix}(10) 不变 ;



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


方程 111 同解变换 : 将上述方程 222 作同解变换后 , 方程组变成 {2x1+x2+x3+0x4=4013x1+x2+0x3+13x4=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 , 目前的需求是将方程 111x2x_2x2 系数变为 000 , 使用方程 111 减去 方程 222 即可得到要求的矩阵 :

(2−13)x1+0x2+x3+(0−13)x4=40−1053x1+0x2+x3−13x4=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}(231)x1+0x2+x3+(031)x435x1+0x2+x331x4==401030


最终方程 111 转化为 53x1+0x2+x3−13x4=30\dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 3035x1+0x2+x331x4=30 ;



同解变换完成后的方程组为 {53x1+0x2+x3−13x4=3013x1+x2+0x3+13x4=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+x331x4=3031x1+x2+0x3+31x4=10





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


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


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


cjc_jcjcjc_jcj333444000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4θi\theta_iθi
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x3404040222111111000404040 ( θ3\theta_3θ3 )
000 ( 目标函数 x4x_4x4 系数 c4c_4c4)x4x_4x4303030111333000111101010 ( θ4\theta_4θ4 )
σj\sigma_jσj333 ( σ1\sigma_1σ1 )444 ( σ2\sigma_2σ2 )000000
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x330303053\dfrac{5}{3}35000111−13-\dfrac{1}{3}31??? ( θ3\theta_3θ3 )
444 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x210101013\dfrac{1}{3}3111100013\dfrac{1}{3}31??? ( θ2\theta_2θ2 )
σj\sigma_jσj ( 检验数 )53\dfrac{5}{3}35 ( σ1\sigma_1σ1 )000000−43-\dfrac{4}{3}34 ( σ4\sigma_4σ4 )


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


新的 基变量是 x3,x2x_3 , x_2x3,x2 , 对应的基矩阵是 (1001)\begin{pmatrix} \quad 1 \quad 0 \quad \\ \quad 0 \quad 1 \quad \end{pmatrix}(1001) , 非基变量是 x1,x4x_1, x_4x1,x4 , 对应的非基矩阵是 (53−131313)\begin{pmatrix} \quad \dfrac{5}{3} \quad -\dfrac{1}{3} \quad \\ \quad \dfrac{1}{3} \quad \dfrac{1}{3} \quad \end{pmatrix}35313131 , 将非基变量设置为 000 , 方程组为 {53×0+0x2+x3−13×0=3013×0+x2+0x3+13×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+x331×0=3031×0+x2+0x3+31×0=10 , 解出基变量为 {x3=30x2=10\begin{cases} x_3 = 30 \\\\ x_2 = 10 \end{cases}x3=30x2=10 , 基可行解(010300)\begin{pmatrix} \quad 0 \quad \\ \quad 10 \quad \\ \quad 30 \quad \\ \quad 0 \quad \end{pmatrix}010300



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


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

  • 矩阵形式 : CNT−CBTB−1NC_N^T - C_B^T B^{-1}NCNTCBTB1N
  • 单个检验数计算公式 : σj=cj−∑ciaij\sigma_j = c_j - \sum c_i a_{ij}σj=cjciaij

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


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

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


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

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


检验数 {σ1=3−(0×53)−(4×13)=53σ4=0−(0×−13)−(4×13)=−43\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 是大于 000 的 , 两个检验数必须都小于等于 000 , 该基可行解才算作是最优解 , 因此 该基可行解不是最优解 ;


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



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


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


入基变量 根据检验数 σ\sigmaσ 选择的是 x1x_1x1 ;


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


θ\thetaθ 值计算 : 常数列 b=(3010)b =\begin{pmatrix} \quad 30 \quad \\ \quad 10 \quad \end{pmatrix}b=(3010) , 分别除以除以入基变量 x1x_1x1 大于 000 的系数列 (5313)\begin{pmatrix} \quad \dfrac{5}{3} \quad \\\\ \quad \dfrac{1}{3} \quad \end{pmatrix}3531 , 计算过程如下 (30531013)\begin{pmatrix} \quad \cfrac{30}{\dfrac{5}{3}} \quad \\\\ \quad \cfrac{10}{\dfrac{1}{3}} \quad \end{pmatrix}35303110 , 得出结果是 (1830)\begin{pmatrix} \quad 18 \quad \\\\ \quad 30 \quad \end{pmatrix}1830 , 然后选择一个最小值 181818 , 查看该最小值对应的变量是 x3x_3x3 , 选择该变量作为出基变量 ;


x1x_1x1 作入基变量 , x3x_3x3 作出基变量 ; 使用 x1x_1x1 替代基变量中 x3x_3x3 的位置 ;

迭代后的基变量为 x1,x2x_1 ,x_2x1,x2 ;


更新一下单纯形表 :

cjc_jcjcjc_jcj333444000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4θi\theta_iθi
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x3404040222111111000404040 ( θ3\theta_3θ3 )
000 ( 目标函数 x4x_4x4 系数 c4c_4c4)x4x_4x4303030111333000111101010 ( θ4\theta_4θ4 )
σj\sigma_jσj333 ( σ1\sigma_1σ1 )444 ( σ2\sigma_2σ2 )000000
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x330303053\dfrac{5}{3}35000111−13-\dfrac{1}{3}31181818 ( θ3\theta_3θ3 )
444 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x210101013\dfrac{1}{3}3111100013\dfrac{1}{3}31303030 ( θ2\theta_2θ2 )
σj\sigma_jσj ( 检验数 )53\dfrac{5}{3}35 ( σ1\sigma_1σ1 )000000−43-\dfrac{4}{3}34 ( σ4\sigma_4σ4 )


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



当前的方程组为 {53x1+0x2+x3−13x4=3013x1+x2+0x3+13x4=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+x331x4=3031x1+x2+0x3+31x4=10 , 选择 x1,x2x_1, x_2x1,x2 作为基变量 , 基矩阵为 (530131)\begin{pmatrix} \quad \dfrac{5}{3} \quad 0 \quad \\\\ \quad \dfrac{1}{3} \quad 1 \quad \end{pmatrix}350311 , 进行同解变换 , 将基矩阵转为单位阵 ;





方程 111 同解变换 :


53x1+0x2+x3−13x4=30\dfrac{5}{3} x_1 + 0x_2 + x_3 - \dfrac{1}{3} x_4 = 3035x1+0x2+x331x4=30 方程中的 x1x_1x1 的系数变为 111 , x2x_2x2 的系数为 000 保持不变 ;


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

53x1+0x2+x3−13x4=30(53x1+0x2+x3−13x4)×35=30×35x1+0x2+35x3−15x4=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+x331x4(35x1+0x2+x331x4)×53x1+0x2+53x351x4===3030×5318


当前方程组变成 {x1+0x2+35x3−15x4=1813x1+x2+0x3+13x4=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+53x351x4=1831x1+x2+0x3+31x4=10




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


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

(x1+0x2+35x3−15x4)×−13=18×−13−13x1+0x2+−15x3+115x4=−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+53x351x4)×3131x1+0x2+51x3+151x4==18×316

② 与方程 222 相加 :

(−13x1+0x2+−15x3+115x4)+(13x1+x2+0x3+13x4)=−6+100x1+x2−15x3+25x4=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+x251x3+52x4==6+104


当前方程组变成 {x1+0x2+35x3−15x4=180x1+x2−15x3+615x4=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+53x351x4=180x1+x251x3+156x4=4



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



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

cjc_jcjcjc_jcj333444000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4θi\theta_iθi
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x3404040222111111000404040 ( θ3\theta_3θ3 )
000 ( 目标函数 x4x_4x4 系数 c4c_4c4)x4x_4x4303030111333000111101010 ( θ4\theta_4θ4 )
σj\sigma_jσj333 ( σ1\sigma_1σ1 )444 ( σ2\sigma_2σ2 )000000
第一次迭代
000 ( 目标函数 x3x_3x3 系数 c3c_3c3 )x3x_3x330303053\dfrac{5}{3}35000111−13-\dfrac{1}{3}31181818 ( θ3\theta_3θ3 )
444 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x210101013\dfrac{1}{3}3111100013\dfrac{1}{3}31303030 ( θ2\theta_2θ2 )
σj\sigma_jσj ( 检验数 )53\dfrac{5}{3}35 ( σ1\sigma_1σ1 )000000−43-\dfrac{4}{3}34 ( σ4\sigma_4σ4 )
第二次迭代
333 ( 目标函数 x1x_1x1 系数 c1c_1c1 )x1x_1x118181811100035\dfrac{3}{5}53−15-\dfrac{1}{5}51??? ( θ3\theta_3θ3 )
444 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2444000111−15-\dfrac{1}{5}5125\dfrac{2}{5}52??? ( θ2\theta_2θ2 )
σj\sigma_jσj ( 检验数 )000000??? ( σ3\sigma_3σ3 )??? ( σ4\sigma_4σ4 )


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



计算检验数 σ\sigmaσ :

σ3=0−3×35−4×(−15)=−95+45=−1\sigma_3 = 0 - 3 \times \dfrac{3}{5} - 4 \times (-\dfrac{1}{5}) = -\dfrac{9}{5} + \dfrac{4}{5} = -1σ3=03×534×(51)=59+54=1


σ4=0−3×(−15)−4×25=35−85=−1\sigma_4 = 0 - 3 \times (-\dfrac{1}{5}) - 4 \times \dfrac{2}{5} = \dfrac{3}{5} - \dfrac{8}{5} = -1σ4=03×(51)4×52=5358=1


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





四、单纯形法案例二





1、线性规划示例


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

maxZ=x1+2x2+x3s.t{2x1−3x2+2x3≤1513x1+x2+5x3≤20xj≥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.t2x13x2+2x31531x1+x2+5x320xj0(j=1,2,3)



2、转化成标准形式


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

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


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



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


① 添加松弛变量 : 上述两个不等式 {2x1−3x2+2x3≤1513x1+x2+5x3≤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}2x13x2+2x31531x1+x2+5x320 , 在左侧分别添加 x4,x5x_4 , x_5x4,x5 松弛变量 ;


② 最终结果 : 转化后的结果是 {2x1−3x2+2x3+x4=1513x1+x2+5x3+x5=20xj≥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}2x13x2+2x3+x4=1531x1+x2+5x3+x5=20xj0(j=1,2,3,4,5)



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



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

maxZ=x1+2x2+x3+0x4+0x5s.t{2x1−3x2+2x3+x4+0x5=1513x1+x2+5x3+0x4+x5=20xj≥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.t2x13x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20xj0(j=1,2,3,4,5)



3、初始基可行解


找初始基可行解 :


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

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

③ 初始基可行解 : 其对应的解是基可行解 (0001520)\begin{pmatrix} \quad 0 \quad \\ \quad 0 \quad \\ \quad 0 \quad \\ \quad 15 \quad \\ \quad 20 \quad \\ \end{pmatrix}0001520 ;



## 4、列出单纯形表

maxZ=x1+2x2+x3+0x4+0x5s.t{2x1−3x2+2x3+x4+0x5=1513x1+x2+5x3+0x4+x5=20xj≥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.t2x13x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20xj0(j=1,2,3,4,5)


cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−1-11222111000−-
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000


5、计算检验数


计算非基变量的检验数 :

单个检验数计算公式 : σj=cj−∑ciaij\sigma_j = c_j - \sum c_i a_{ij}σj=cjciaij , 其中 cjc_jcj 是对应目标函数非基变量系数 , cic_ici 是目标函数中基变量系数 , aija_{ij}aij 是系数矩阵中对应的 xjx_jxj 非基变量列向量 ;


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


σ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

σ13\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



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


入基变量选择 : 选择检验数 σj\sigma_jσj 较大的非基变量作为入基变量 , x2x_2x2 ;


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


出基变量选择 : 常数列 b=(1520)b =\begin{pmatrix} \quad 15 \quad \\ \quad 20 \quad \end{pmatrix}b=(1520) , 分别除以除以入基变量 x2x_2x2 大于 000 的系数列 (−11)\begin{pmatrix} \quad -1 \quad \\\\ \quad 1 \quad \end{pmatrix}11 , 计算过程如下 (系数小于0不计算201)\begin{pmatrix} \quad 系数小于0 不计算 \quad \\\\ \quad \cfrac{20}{1} \quad \end{pmatrix}0120 , 得出结果是 (无效值20)\begin{pmatrix} \quad 无效值 \quad \\\\ \quad 20 \quad \end{pmatrix}20 , 如果系数小于等于 000 , 该值就是无效值 , 默认为无穷大 , 不进行比较 , 选择 202020 对应的基变量作为出基变量 , 查看该最小值对应的变量是 x5x_5x5 , 选择该 x5x_5x5 变量作为出基变量 ;



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


上述已经得到 x2x_2x2 作为入基变量 , 由非基变量转为基变量 , x5x_5x5 作为出基变量 , 由基变量转为非基变量 ; 使用 x2x_2x2 , 替换基变量中的 x5x_5x5 的位置 ;

基变量为 x4,x2x_4 , x_2x4,x2 , 注意顺序不要写反 ;


cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−1-11222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515???111???111?????? ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2202020???000???000?????? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )000111 ( σ3\sigma_3σ3 )000??? ( σ2\sigma_2σ2 )


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


当前的线性规划标准形式等式方程组 : {2x1−3x2+2x3+x4+0x5=1513x1+x2+5x3+0x4+x5=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}2x13x2+2x3+x4+0x5=1531x1+x2+5x3+0x4+x5=20


当前的单纯性表 :


cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4????????????????????? ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2????????????????????? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )??? ( σ1\sigma_1σ1 )000??? ( σ3\sigma_3σ3 )000??? ( σ2\sigma_2σ2 )

下面进行矩阵变换 :

  • 入基变量是 x2x_2x2
  • 出基变量是 x5x_5x5

中心元 : 在下面单纯形表中 , x2x_2x2 列 ( 红色选框 ) , 与 x5x_5x5 行 ( 绿色选框 ) , 上述 行列相交的部分 中心元 ,

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


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

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

  • 13x1+x2+5x3+0x4+x5=20\dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 2031x1+x2+5x3+0x4+x5=20 方程 等式左右两边乘以 333 ;
  • 2x1−3x2+2x3+x4+0x5=152 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 152x13x2+2x3+x4+0x5=15 相加 ;

(13x1+x2+5x3+0x4+x5)×3+(2x1−3x2+2x3+x4+0x5)=20×3+15(x1+3x2+15x3+3x5)+(2x1−3x2+2x3+x4+0x5)=753x1+0x2+17x3+x4+3x5=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+(2x13x2+2x3+x4+0x5)(x1+3x2+15x3+3x5)+(2x13x2+2x3+x4+0x5)3x1+0x2+17x3+x4+3x5===20×3+157575



新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333??? ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111??? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )??? ( σ1\sigma_1σ1 )000??? ( σ3\sigma_3σ3 )000??? ( σ5\sigma_5σ5 )


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


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


σ1=1−(02)×(313)=1−(0×3+2×13)=13\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


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


σ3=1−(02)×(175)=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



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


σ5=0−(02)×(31)=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


新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333??? ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111??? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )13\dfrac{1}{3}31 ( σ1\sigma_1σ1 )000−9-99 ( σ3\sigma_3σ3 )000−2-22 ( σ5\sigma_5σ5 )


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


上述三个检验数 , {σ1=13σ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 大于 000 , 只有当检验数都小于等于 000 时 , 该基可行解才是最优解 ; 该解不是最优解 ;


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



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


根据上述三个检验数 {σ1=13σ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 的值 , 选择检验数最大的非基变量作为入基变量 , 这里选择 x1x_1x1 ;



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


出基变量选择 : 常数列 b=(7520)b =\begin{pmatrix} \quad 75 \quad \\ \quad 20 \quad \end{pmatrix}b=(7520) , 分别除以除以入基变量 x1x_1x1 大于 000 的系数列 (313)\begin{pmatrix} \quad 3 \quad \\\\ \quad \cfrac{1}{3} \quad \end{pmatrix}331 , 计算过程如下 (7532013)\begin{pmatrix} \quad \cfrac{75}{3} \quad \\\\ \quad \cfrac{20}{ \dfrac{1}{3}} \quad \end{pmatrix}3753120 , 得出结果是 (2560)\begin{pmatrix} \quad 25 \quad \\\\ \quad 60 \quad \end{pmatrix}2560 , 如果系数小于等于 000 , 该值就是无效值 , 默认为无穷大 , 不进行比较 , 选择 252525 对应的基变量作为出基变量 , 查看该最小值对应的变量是 x4x_4x4 , 选择该 x4x_4x4 变量作为出基变量 ;

新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333252525 ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111606060 (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )13\dfrac{1}{3}31 ( σ1\sigma_1σ1 )000−9-99 ( σ3\sigma_3σ3 )000−2-22 ( σ5\sigma_5σ5 )



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


在上一篇博客中 , 第一次迭代后 , 找到 入基变量 x1x_1x1 , 出基变量 x4x_4x4 , 使用 x1x_1x1 替换基变量中的 x4x_4x4 位置 ;


新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333252525 ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111606060 (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )13\dfrac{1}{3}31 ( σ1\sigma_1σ1 )000−9-99 ( σ3\sigma_3σ3 )000−2-22 ( σ5\sigma_5σ5 )
第二次迭代
111 ( 目标函数 x1x_1x1 系数 c1c_1c1 )x1x_1x1????????????????????? ( θ1\theta_1θ1 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2????????????????????? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )000000??? ( σ3\sigma_3σ3 )??? ( σ4\sigma_4σ4 )??? ( σ5\sigma_5σ5 )

中心元 : 入基变量 x1x_1x1 所在列 , 与出基变量 x4x_4x4 所在行 , 相交的位置叫做中心元 ;

  • 中心元系数 : 转换成 111 ;
  • 中心元所在列另一个系数 : 转换成 000 ;


当前的线性规划标准形式等式方程组 : {3x1+0x2+17x3+x4+3x5=7513x1+x2+5x3+0x4+x5=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


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

(3x1+0x2+17x3+x4+3x5)×13=75×13x1+0x2+173x3+13x4+x5=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


与中心元同一列的 x1x_1x1 的系数转换为 000 :13x1+x2+5x3+0x4+x5=20\dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 2031x1+x2+5x3+0x4+x5=20 中的 x1x_1x1 系数转为 000 :

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

(x1+0x2+173x3+13x4+x5)×−13+(13x1+x2+5x3+0x4+x5)=25×−13+20(−x1+0x2−179x3−19x4−13x5)+(13x1+x2+5x3+0x4+x5)=3530x1+x2+289x3−19x4+23x5=353\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+0x2917x391x431x5)+(31x1+x2+5x3+0x4+x5)=3350x1+x2+928x391x4+32x5=335

新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333252525 ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111606060 (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )13\dfrac{1}{3}31 ( σ1\sigma_1σ1 )000−9-99 ( σ3\sigma_3σ3 )000−2-22 ( σ5\sigma_5σ5 )
第二次迭代
111 ( 目标函数 x1x_1x1 系数 c1c_1c1 )x1x_1x1252525111000173\dfrac{17}{3}31713\dfrac{1}{3}31111??? ( θ1\theta_1θ1 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2353\dfrac{35}{3}335000111289\dfrac{28}{9}928−19-\dfrac{1}{9}9123\dfrac{2}{3}32??? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )000000??? ( σ3\sigma_3σ3 )??? ( σ4\sigma_4σ4 )??? ( σ5\sigma_5σ5 )


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


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


σ3=1−(12)×(173289)=1−(1×173+2×289)=9−17×3+28×29=−989\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)=9917×3+28×2=998

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


σ4=0−(12)×(13−19)=0−(1×13−2×19)=−19\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)×3191=0(1×312×91)=91

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


σ5=0−(12)×(123)=0−(1×1+2×23)=−73\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

新的单纯形表为 :

cjc_jcjcjc_jcj111222111000000
CBC_BCB 基变量系数 (目标函数)基变量常数 bbbx1x_1x1x2x_2x2x3x_3x3x4x_4x4x5x_5x5θi\theta_iθi
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4151515222−3-33222111000−- (θ4\theta_4θ4)
000 ( 目标函数 x5x_5x5 系数 c5c_5c5)x5x_5x520202013\dfrac{1}{3}31111555000111202020 ( θ5\theta_5θ5 )
σj\sigma_jσj ( 检验数 )111 ( σ1\sigma_1σ1 )222 ( σ2\sigma_2σ2 )111 ( σ3\sigma_3σ3 )000000
第一次迭代
000 ( 目标函数 x4x_4x4 系数 c4c_4c4 )x4x_4x4757575333000171717111333252525 ( θ4\theta_4θ4 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x220202013\dfrac{1}{3}31111555000111606060 (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )13\dfrac{1}{3}31 ( σ1\sigma_1σ1 )000−9-99 ( σ3\sigma_3σ3 )000−2-22 ( σ5\sigma_5σ5 )
第二次迭代
111 ( 目标函数 x1x_1x1 系数 c1c_1c1 )x1x_1x1252525111000173\dfrac{17}{3}31713\dfrac{1}{3}31111??? ( θ1\theta_1θ1 )
222 ( 目标函数 x2x_2x2 系数 c2c_2c2)x2x_2x2353\dfrac{35}{3}335000111289\dfrac{28}{9}928−19-\dfrac{1}{9}9123\dfrac{2}{3}32??? (θ2\theta_2θ2)
σj\sigma_jσj ( 检验数 )000000−989- \dfrac{98}{9}998 ( σ3\sigma_3σ3 )−19- \dfrac{1}{9}91 ( σ4\sigma_4σ4 )−73- \dfrac{7}{3}37 ( σ5\sigma_5σ5 )


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


上述三个检验数 , {σ3=−989σ4=−19σ5=−73\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 , 三个检验数都小于等于 000 , 该基可行解是最优解 ;





五、线性规划最优解分析





1、唯一最优解


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



2、无穷多最优解


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



3、无界解


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



4、无可行解


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

总结

以上是生活随笔为你收集整理的【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。