检验数(Reduced Cost)

单纯形法中,检验数(有时也叫做“机会成本”或“检验系数”,在英文中通常称为 Reduced Cost)是用来判断 非基变量 是否有可能让目标函数得到进一步改善(也就是判断是否值得“进基”)的一个指标。它在单纯形表中一般对应于“目标函数行”(又称“第 0 行”)里非基变量所在列的系数。


1. 检验数的定义

最大化问题为例,单纯形表第 0 行(或目标行)里某个非基变量 x j x_j xj 的系数,记为 c ˉ j \bar{c}_j cˉj,就是这个变量的检验数。它反映了如果将该变量从 0 稍微增大,对目标函数的影响趋势:

  • c ˉ j > 0 \bar{c}_j > 0 cˉj>0(在最大化问题中),表示引入(增大)该变量能提高目标值,故可能“进基”。
  • c ˉ j ≤ 0 \bar{c}_j \le 0 cˉj0,表示引入该变量不会提高目标值(甚至会让目标变差),故不值得让它进基。

对于最小化问题,判断标准相反:若检验数( c ˉ j \bar{c}_j cˉj) < 0,就能让目标函数继续下降,值得进基。

简而言之

  • 最大化问题:检验数 > 0 的非基变量可以带来改进。
  • 最小化问题:检验数 < 0 的非基变量可以带来改进。

2. 检验数在单纯形法迭代中的作用

  1. 决定进基的非基变量
    在每一次迭代中,单纯形法会查看所有非基变量的检验数:

    • 若在最大化问题里存在 c ˉ j > 0 \bar{c}_j > 0 cˉj>0 的非基变量,则表示还能改进目标函数;通常选其中最“有利”的一个进入基。
    • 若所有非基变量的检验数都 ≤ 0 \le 0 0,则说明无法继续改进,当前解即为最优解。
  2. 配合出基变量选择
    进基变量确定后,需要根据最小比率检验(ratio test)来选出一个基变量“出基”,从而保证新的基可行解仍然满足所有约束。


3. 检验数的几何含义

几何上,单纯形法是在多面体顶点之间移动:

  • 检验数可以理解为:如果我们从当前顶点向着某个非基变量的方向移动,对目标函数的变化率是正(最大化)还是负。
  • 当检验数显示继续“前进”能提升(或降低)目标函数时,就意味着多面体在这个方向上还有更优的顶点可达。

4. 检验数的计算

单纯形法中,检验数(Reduced Cost)本质上是用来衡量“将某个非基变量从 0 调整为正值”对目标函数的边际影响。它既可以通过单纯形表中的“目标行”系数直接读取,也可以用向量-矩阵的形式进行计算。下面分别从这两种视角来说明其计算原理。

1. 在单纯形表(Simplex Tableau)中的计算

在构造单纯形表时,我们会把问题写成如下形式(以最大化问题为例):

  1. 初始形式
    Maximize z = ∑ j = 1 n c j x j subject to { A x = b , x ≥ 0 , \begin{aligned} \text{Maximize}\quad & z = \sum_{j=1}^n c_j x_j \\ \text{subject to}\quad & \begin{cases} A x = b, \\ x \ge 0, \end{cases} \end{aligned} Maximizesubject toz=j=1ncjxj{Ax=b,x0,
    并在表格最底行(或顶部行)记录目标函数行

  2. 引入基与非基

    • 选定一组基变量 x B x_B xB ( m (m (m 个),非基变量 x N x_N xN n − m n-m nm 个)。
    • 在单纯形表中,基变量所在列常被“单位列”化,而非基变量的列则随迭代而更新。
  3. 检验数在目标行

    • 在“目标行”中,每个非基变量 x j x_j xj 对应一列,其在目标行的系数就是该变量的检验数 c ˉ j \bar{c}_j cˉj
    • 通过单纯形表的高斯消去或透过上一轮迭代的更新,就可以读出 c ˉ j \bar{c}_j cˉj 的数值。

最大化问题里,如果有某个非基变量 x j x_j xj 的检验数 c ˉ j > 0 \bar{c}_j > 0 cˉj>0,意味着把 x j x_j xj从 0 增大可以提高目标函数;相反,若 c ˉ j ≤ 0 \bar{c}_j \le 0 cˉj0,就表示它对目标函数无进一步改进或会使目标下降。


2. 从线性代数(向量-矩阵)角度的公式

假设线性规划的标准形式为:
Maximize z = c T x subject to A x = b , x ≥ 0 , \begin{aligned} \text{Maximize}\quad & z = c^T x \\ \text{subject to}\quad & A x = b, \\ & x \ge 0, \end{aligned} Maximizesubject toz=cTxAx=b,x0,
其中:

  • A A A m × n m \times n m×n矩阵,
  • c c c n n n-维目标系数向量,
  • x x x n n n-维决策变量向量,
  • b b b m m m-维常数向量。

B B B 表示基变量对应的列所组成的可逆矩阵(大小为 m × m m \times m m×m), N N N 表示非基变量对应的列(大小为 m × ( n − m m \times (n-m m×(nm))。相应地,将目标系数向量 c c c 拆分成 c B c_B cB(基变量的目标系数)和 c N c_N cN(非基变量的目标系数)。

  • 基变量的值
    x B = B − 1 b x_B = B^{-1} b xB=B1b
  • 检验数(Reduced Cost) 对应于某个非基变量 x j x_j xj 的计算公式:
    c ˉ j    =    c j    −    c B T   B − 1   A j \bar{c}_j \;=\; c_j \;-\; c_B^T\,B^{-1}\,A_j cˉj=cjcBTB1Aj
    其中:
    • c j c_j cj 是非基变量 x j x_j xj 在目标函数中的系数,
    • c B c_B cB 是基变量的目标系数向量,
    • B − 1 B^{-1} B1 是基矩阵的逆,
    • A j A_j Aj 是矩阵 A A A 中对应非基变量 x j x_j xj 的那一列。

含义

  • λ T = c B T B − 1 \lambda^T = c_B^T B^{-1} λT=cBTB1 可以视为对偶变量(或对偶价格)。
  • c ˉ j = c j − λ T A j \bar{c}_j = c_j - \lambda^T A_j cˉj=cjλTAj 则表示:将变量 x j x_j xj 从 0 增加一点点,对目标的净影响是多少。
  • 在最大化问题中,如果 c ˉ j > 0 \bar{c}_j > 0 cˉj>0,就能提高目标;若 c ˉ j = 0 \bar{c}_j = 0 cˉj=0,表示目标对它不敏感;若 c ˉ j < 0 \bar{c}_j < 0 cˉj<0,增大该变量会让目标变差。

5. 总结

  • 检验数(Reduced Cost):在单纯形表的目标函数行中,用于评估“将某个非基变量由 0 调整为正值”对目标函数的影响。
  • 用途
    1. 判断是否能继续改进目标函数;
    2. 决定哪一个非基变量进基。
  • 判定标准
    • 判断是否还有改进空间:
    • 最大化问题:若存在 c ˉ j > 0 \bar{c}_j > 0 cˉj>0 的非基变量,表示可进基。
    • 最小化问题:若存在 c ˉ j < 0 \bar{c}_j < 0 cˉj<0 的非基变量,表示可进基。
  • 计算
    • 检验数在单纯形表中的体现

      • 直接体现在“目标函数行”对应非基变量列的系数上。
      • 通过单纯形法的表格运算更新得到。
    • 向量-矩阵公式
      c ˉ j    =    c j    −    c B T B − 1 A j \bar{c}_j \;=\; c_j \;-\; c_B^T B^{-1} A_j cˉj=cjcBTB1Aj
      它反映了 目标系数对偶价格 ( c B T B − 1 (c_B^T B^{-1} (cBTB1)的差值。

因此,检验数Reduced Cost在单纯形法中扮演了“方向判别器”的角色,告诉我们是否还能通过让某个非基变量进入基来继续改进目标函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值