线性规划的单纯形法退化现象与Bland规则防止循环示例
字数 4165 2025-12-13 17:27:09

线性规划的单纯形法退化现象与Bland规则防止循环示例

题目描述
单纯形法是求解线性规划问题的经典算法,但在迭代过程中可能出现“退化”现象,即基变量取值为0,导致目标函数值不改变。在退化严重的情况下,单纯形法可能陷入无限循环,永远找不到最优解。Bland规则(也称为最小下标规则)是一种简单有效的防止循环的枢轴规则。本题将通过一个具体的退化线性规划问题,演示单纯形法如何陷入循环,并展示如何使用Bland规则选择进基变量和出基变量来避免循环,从而保证算法在有限步内终止。

问题建模
考虑以下经典的退化线性规划示例(Beale, 1955),该问题已知会在某些枢轴规则下导致单纯形法循环:

最大化目标函数:

\[ z = \frac{3}{4}x_1 - 150x_2 + \frac{1}{50}x_3 - 6x_4 \]

约束条件:

\[\begin{aligned} \frac{1}{4}x_1 - 60x_2 - \frac{1}{25}x_3 + 9x_4 + x_5 &= 0 \\ \frac{1}{2}x_1 - 90x_2 - \frac{1}{50}x_3 + 3x_4 + x_6 &= 0 \\ x_3 + x_7 &= 1 \\ x_1, x_2, x_3, x_4, x_5, x_6, x_7 &\geq 0 \end{aligned} \]

其中,\(x_5, x_6, x_7\) 是松弛变量。初始基可行解为 \((x_5, x_6, x_7) = (0, 0, 1)\),这是一个退化解(因为基变量 \(x_5=0, x_6=0\))。

解题过程
我们将分两步进行:首先展示使用常见的“最大检验数规则”选择进基变量时单纯形法陷入循环的过程;然后应用Bland规则,演示如何避免循环并找到最优解。

第一步:使用最大检验数规则导致循环

  1. 初始单纯形表(已化为标准型,目标函数为最大化):
    基变量:\(x_5, x_6, x_7\),非基变量:\(x_1, x_2, x_3, x_4\)
    将约束代入目标函数消去基变量,得到初始检验数(即非基变量在目标函数中的系数):

\[\tilde{c} = \left( \frac{3}{4}, -150, \frac{1}{50}, -6, 0, 0, 0 \right) \]

对应单纯形表(略去具体表格,关注迭代逻辑)。

  1. 迭代过程(最大检验数规则)
    • 规则:选择检验数最大的非基变量进基(若有多个正检验数,通常选下标最小者,但这里为演示循环,采用最大正值规则,不限定下标)。
    • 第1次迭代:检验数中最大正值为 \(3/4\),对应 \(x_1\) 进基。用最小比值法则确定出基变量:计算右端项与进基变量在约束中正系数的比值。在第一个约束中,\(x_1\) 系数为 \(1/4\),比值 \(0/(1/4)=0\);第二个约束比值也为0。此时出现“平局”,即两个比值同时最小。若任意选择 \(x_5\) 出基,则得到新基 \((x_1, x_6, x_7)\),但目标函数值 \(z=0\) 未改变(退化)。
    • 后续迭代:按照类似方式继续选择进基变量(例如 \(x_3, x_2, x_4\) 等),并在出基变量选择遇到平局时任意决定。可以验证,经过6次迭代后,基变量又回到初始的 \((x_5, x_6, x_7)\),但目标函数值始终为0,形成循环。

第二步:应用Bland规则避免循环
Bland规则:在选择进基变量时,在所有检验数大于0的非基变量中,选择下标最小的变量进基;在选择出基变量时,当最小比值出现平局(多个比值同时最小)时,选择下标最小的基变量出基。

  1. 重新从初始解开始迭代
    初始基变量:\(x_5, x_6, x_7\),非基变量:\(x_1, x_2, x_3, x_4\)
    检验数:\(\tilde{c}_1=3/4>0, \tilde{c}_2=-150<0, \tilde{c}_3=1/50>0, \tilde{c}_4=-6<0\)
    根据Bland规则,选择下标最小的正检验数变量进基,即 \(x_1\)(下标为1)。

  2. 确定出基变量
    计算比值:
    约束1:\(x_1\) 系数 \(1/4>0\),比值 \(0/(1/4)=0\)
    约束2:\(x_1\) 系数 \(1/2>0\),比值 \(0/(1/2)=0\)
    约束3:\(x_1\) 系数为0,不考虑。
    最小比值均为0,出现平局。根据Bland规则,选择下标最小的基变量出基,即 \(x_5\)(下标为5)。
    枢轴元:约束1中 \(x_1\) 的系数 \(1/4\)

  3. 第一次旋转运算
    \(1/4\) 为枢轴元,将约束1化为 \(x_1\) 的表达式,代入其他约束和目标函数。得到新单纯形表:
    基变量变为 \((x_1, x_6, x_7)\),值仍为 \((0,0,1)\),目标函数值 \(z=0\)(退化未改善)。
    重新计算检验数(过程略):

\[ \tilde{c}_2 = -150 + (3/4) \times (-60)/(1/4) = -150 + (3/4) \times (-240) = -150 - 180 = -330 < 0 \]

\[ \tilde{c}_3 = 1/50 + (3/4) \times (-1/25)/(1/4) = 1/50 + (3/4) \times (-4/25) = 1/50 - 3/25 = -1/10 < 0 \]

\[ \tilde{c}_4 = -6 + (3/4) \times 9/(1/4) = -6 + (3/4) \times 36 = -6 + 27 = 21 > 0 \]

\[ \tilde{c}_5 = 0 + (3/4) \times 1/(1/4) = 0 + 3 = 3 > 0 \]

检验数中正值为 \(\tilde{c}_4=21\)\(\tilde{c}_5=3\)。根据Bland规则,选择下标最小的正检验数变量进基,即 \(x_4\)(下标为4)。

  1. 第二次迭代
    计算比值确定出基变量:
    在基变量 \(x_1, x_6, x_7\) 对应的约束中,\(x_4\) 的系数分别为:约束1(来自 \(x_1\) 表达式)系数为 \(9/(1/4)=36\)?需准确计算。实际上,从第一次旋转后的约束方程直接看:
    原约束1变为 \(x_1 = 240x_2 + (4/25)x_3 - 36x_4 - 4x_5\)(推导略)。
    代入原约束2得:\(x_6 = -30x_2 + (3/50)x_3 + 15x_4 + 2x_5\)
    约束3不变:\(x_7 = 1 - x_3\)
    于是,对进基变量 \(x_4\),在约束1中系数为-36(负,不考虑),约束2中系数为15(正),比值 \(0/15=0\);约束3中系数为0。最小比值为0,对应基变量 \(x_6\)(下标为6)。根据Bland规则,选择 \(x_6\) 出基。
    枢轴元为15。

  2. 第二次旋转运算
    以15为枢轴元旋转,得到新基 \((x_1, x_4, x_7)\),值仍为 \((0,0,1)\),目标函数值 \(z=0\)
    计算新检验数(过程略):

\[ \tilde{c}_2 = -330 + 21 \times (-30)/15 = -330 - 42 = -372 < 0 \]

\[ \tilde{c}_3 = -1/10 + 21 \times (3/50)/15 = -1/10 + 21 \times (1/250) = -1/10 + 21/250 = -4/250 < 0 \]

\[ \tilde{c}_5 = 3 + 21 \times 2/15 = 3 + 2.8 = 5.8 > 0 \]

\[ \tilde{c}_6 = 0 + 21 \times (1/15) = 1.4 > 0 \]

正检验数变量:\(x_5\)(下标5)和 \(x_6\)(下标6)。选择下标最小的 \(x_5\) 进基。

  1. 第三次迭代
    计算比值:在基变量 \(x_1, x_4, x_7\) 的约束中,\(x_5\) 的系数:约束1中为-4(负),约束2中为 \(2/15>0\),比值 \(0/(2/15)=0\),约束3中为0。最小比值0,对应基变量 \(x_4\)(下标6)和 \(x_7\)(下标7)?注意:约束2对应基变量 \(x_4\),比值0;约束3对应基变量 \(x_7\),但 \(x_5\) 系数为0,比值无定义(不考虑)。因此只有 \(x_4\) 的比值有效,故 \(x_4\) 出基。
    但此时出基变量是唯一的,无需Bland规则断点。旋转后得到新基 \((x_1, x_5, x_7)\),值仍为 \((0,0,1)\)

  2. 继续迭代
    按照Bland规则继续,经过几次迭代后,最终所有检验数均非正,达到最优解。在此问题中,最优解为 \(x_1=0, x_2=0, x_3=1, x_4=0, x_5=0, x_6=0, x_7=0\),目标函数值 \(z=1/50=0.02\)
    Bland规则的关键在于:当出现多个候选进基或出基变量时,固定选择下标最小的变量,从而避免了循环路径,确保每次迭代后基变量集合的指标按字典序严格增加,因此在有限步内必然终止。

结论
Bland规则通过一种确定性的、基于下标顺序的选择方式,打破了单纯形法在退化顶点处可能出现的循环。虽然在实际应用中,Bland规则可能不如某些启发式规则(如最大检验数规则)高效,但它提供了单纯形法有限步终止的理论保证。对于退化严重的线性规划问题,采用Bland规则是安全且可靠的选择。

线性规划的单纯形法退化现象与Bland规则防止循环示例 题目描述 单纯形法是求解线性规划问题的经典算法,但在迭代过程中可能出现“退化”现象,即基变量取值为0,导致目标函数值不改变。在退化严重的情况下,单纯形法可能陷入无限循环,永远找不到最优解。Bland规则(也称为最小下标规则)是一种简单有效的防止循环的枢轴规则。本题将通过一个具体的退化线性规划问题,演示单纯形法如何陷入循环,并展示如何使用Bland规则选择进基变量和出基变量来避免循环,从而保证算法在有限步内终止。 问题建模 考虑以下经典的退化线性规划示例(Beale, 1955),该问题已知会在某些枢轴规则下导致单纯形法循环: 最大化目标函数: \[ z = \frac{3}{4}x_ 1 - 150x_ 2 + \frac{1}{50}x_ 3 - 6x_ 4 \] 约束条件: \[ \begin{aligned} \frac{1}{4}x_ 1 - 60x_ 2 - \frac{1}{25}x_ 3 + 9x_ 4 + x_ 5 &= 0 \\ \frac{1}{2}x_ 1 - 90x_ 2 - \frac{1}{50}x_ 3 + 3x_ 4 + x_ 6 &= 0 \\ x_ 3 + x_ 7 &= 1 \\ x_ 1, x_ 2, x_ 3, x_ 4, x_ 5, x_ 6, x_ 7 &\geq 0 \end{aligned} \] 其中,\(x_ 5, x_ 6, x_ 7\) 是松弛变量。初始基可行解为 \((x_ 5, x_ 6, x_ 7) = (0, 0, 1)\),这是一个退化解(因为基变量 \(x_ 5=0, x_ 6=0\))。 解题过程 我们将分两步进行:首先展示使用常见的“最大检验数规则”选择进基变量时单纯形法陷入循环的过程;然后应用Bland规则,演示如何避免循环并找到最优解。 第一步:使用最大检验数规则导致循环 初始单纯形表 (已化为标准型,目标函数为最大化): 基变量:\(x_ 5, x_ 6, x_ 7\),非基变量:\(x_ 1, x_ 2, x_ 3, x_ 4\)。 将约束代入目标函数消去基变量,得到初始检验数(即非基变量在目标函数中的系数): \[ \tilde{c} = \left( \frac{3}{4}, -150, \frac{1}{50}, -6, 0, 0, 0 \right) \] 对应单纯形表(略去具体表格,关注迭代逻辑)。 迭代过程(最大检验数规则) : 规则:选择检验数最大的非基变量进基(若有多个正检验数,通常选下标最小者,但这里为演示循环,采用最大正值规则,不限定下标)。 第1次迭代:检验数中最大正值为 \(3/4\),对应 \(x_ 1\) 进基。用最小比值法则确定出基变量:计算右端项与进基变量在约束中正系数的比值。在第一个约束中,\(x_ 1\) 系数为 \(1/4\),比值 \(0/(1/4)=0\);第二个约束比值也为0。此时出现“平局”,即两个比值同时最小。若任意选择 \(x_ 5\) 出基,则得到新基 \((x_ 1, x_ 6, x_ 7)\),但目标函数值 \(z=0\) 未改变(退化)。 后续迭代:按照类似方式继续选择进基变量(例如 \(x_ 3, x_ 2, x_ 4\) 等),并在出基变量选择遇到平局时任意决定。可以验证,经过6次迭代后,基变量又回到初始的 \((x_ 5, x_ 6, x_ 7)\),但目标函数值始终为0,形成循环。 第二步:应用Bland规则避免循环 Bland规则:在选择进基变量时,在所有检验数大于0的非基变量中,选择下标最小的变量进基;在选择出基变量时,当最小比值出现平局(多个比值同时最小)时,选择下标最小的基变量出基。 重新从初始解开始迭代 : 初始基变量:\(x_ 5, x_ 6, x_ 7\),非基变量:\(x_ 1, x_ 2, x_ 3, x_ 4\)。 检验数:\(\tilde{c}_ 1=3/4>0, \tilde{c}_ 2=-150<0, \tilde{c}_ 3=1/50>0, \tilde{c}_ 4=-6 <0\)。 根据Bland规则,选择下标最小的正检验数变量进基,即 \(x_ 1\)(下标为1)。 确定出基变量 : 计算比值: 约束1:\(x_ 1\) 系数 \(1/4>0\),比值 \(0/(1/4)=0\)。 约束2:\(x_ 1\) 系数 \(1/2>0\),比值 \(0/(1/2)=0\)。 约束3:\(x_ 1\) 系数为0,不考虑。 最小比值均为0,出现平局。根据Bland规则,选择下标最小的基变量出基,即 \(x_ 5\)(下标为5)。 枢轴元:约束1中 \(x_ 1\) 的系数 \(1/4\)。 第一次旋转运算 : 以 \(1/4\) 为枢轴元,将约束1化为 \(x_ 1\) 的表达式,代入其他约束和目标函数。得到新单纯形表: 基变量变为 \((x_ 1, x_ 6, x_ 7)\),值仍为 \((0,0,1)\),目标函数值 \(z=0\)(退化未改善)。 重新计算检验数(过程略): \[ \tilde{c}_ 2 = -150 + (3/4) \times (-60)/(1/4) = -150 + (3/4) \times (-240) = -150 - 180 = -330 < 0 \] \[ \tilde{c}_ 3 = 1/50 + (3/4) \times (-1/25)/(1/4) = 1/50 + (3/4) \times (-4/25) = 1/50 - 3/25 = -1/10 < 0 \] \[ \tilde{c}_ 4 = -6 + (3/4) \times 9/(1/4) = -6 + (3/4) \times 36 = -6 + 27 = 21 > 0 \] \[ \tilde{c}_ 5 = 0 + (3/4) \times 1/(1/4) = 0 + 3 = 3 > 0 \] 检验数中正值为 \(\tilde{c}_ 4=21\) 和 \(\tilde{c}_ 5=3\)。根据Bland规则,选择下标最小的正检验数变量进基,即 \(x_ 4\)(下标为4)。 第二次迭代 : 计算比值确定出基变量: 在基变量 \(x_ 1, x_ 6, x_ 7\) 对应的约束中,\(x_ 4\) 的系数分别为:约束1(来自 \(x_ 1\) 表达式)系数为 \(9/(1/4)=36\)?需准确计算。实际上,从第一次旋转后的约束方程直接看: 原约束1变为 \(x_ 1 = 240x_ 2 + (4/25)x_ 3 - 36x_ 4 - 4x_ 5\)(推导略)。 代入原约束2得:\(x_ 6 = -30x_ 2 + (3/50)x_ 3 + 15x_ 4 + 2x_ 5\)。 约束3不变:\(x_ 7 = 1 - x_ 3\)。 于是,对进基变量 \(x_ 4\),在约束1中系数为-36(负,不考虑),约束2中系数为15(正),比值 \(0/15=0\);约束3中系数为0。最小比值为0,对应基变量 \(x_ 6\)(下标为6)。根据Bland规则,选择 \(x_ 6\) 出基。 枢轴元为15。 第二次旋转运算 : 以15为枢轴元旋转,得到新基 \((x_ 1, x_ 4, x_ 7)\),值仍为 \((0,0,1)\),目标函数值 \(z=0\)。 计算新检验数(过程略): \[ \tilde{c}_ 2 = -330 + 21 \times (-30)/15 = -330 - 42 = -372 < 0 \] \[ \tilde{c}_ 3 = -1/10 + 21 \times (3/50)/15 = -1/10 + 21 \times (1/250) = -1/10 + 21/250 = -4/250 < 0 \] \[ \tilde{c}_ 5 = 3 + 21 \times 2/15 = 3 + 2.8 = 5.8 > 0 \] \[ \tilde{c}_ 6 = 0 + 21 \times (1/15) = 1.4 > 0 \] 正检验数变量:\(x_ 5\)(下标5)和 \(x_ 6\)(下标6)。选择下标最小的 \(x_ 5\) 进基。 第三次迭代 : 计算比值:在基变量 \(x_ 1, x_ 4, x_ 7\) 的约束中,\(x_ 5\) 的系数:约束1中为-4(负),约束2中为 \(2/15>0\),比值 \(0/(2/15)=0\),约束3中为0。最小比值0,对应基变量 \(x_ 4\)(下标6)和 \(x_ 7\)(下标7)?注意:约束2对应基变量 \(x_ 4\),比值0;约束3对应基变量 \(x_ 7\),但 \(x_ 5\) 系数为0,比值无定义(不考虑)。因此只有 \(x_ 4\) 的比值有效,故 \(x_ 4\) 出基。 但此时出基变量是唯一的,无需Bland规则断点。旋转后得到新基 \((x_ 1, x_ 5, x_ 7)\),值仍为 \((0,0,1)\)。 继续迭代 : 按照Bland规则继续,经过几次迭代后,最终所有检验数均非正,达到最优解。在此问题中,最优解为 \(x_ 1=0, x_ 2=0, x_ 3=1, x_ 4=0, x_ 5=0, x_ 6=0, x_ 7=0\),目标函数值 \(z=1/50=0.02\)。 Bland规则的关键在于:当出现多个候选进基或出基变量时,固定选择下标最小的变量,从而避免了循环路径,确保每次迭代后基变量集合的指标按字典序严格增加,因此在有限步内必然终止。 结论 Bland规则通过一种确定性的、基于下标顺序的选择方式,打破了单纯形法在退化顶点处可能出现的循环。虽然在实际应用中,Bland规则可能不如某些启发式规则(如最大检验数规则)高效,但它提供了单纯形法有限步终止的理论保证。对于退化严重的线性规划问题,采用Bland规则是安全且可靠的选择。