灵敏度分析:最优基何时保持不变

Views: --

灵敏度分析问的不是“参数变了以后重算一遍”,而是:旧最优表还能用到什么程度,若不能直接用,怎样从旧表最快恢复最优

两个总判据

当前基 BB 保持最优,当且仅当同时满足

B1b0B^{-1}b\ge0

σT=cBTB1AcT0.\sigma^T=c_B^TB^{-1}A-c^T\le0.

前者是原可行性,后者是对偶可行性。所有变化都归结为重新检查这两式。

非基变量目标系数变化

若非基变量 xkx_k 的系数从 ckc_k 变为 ck=ck+Δc_k'=c_k+\Delta,只有它的检验数变化:

σk=σkΔ.\sigma_k'=\sigma_k-\Delta.

要求 σk0\sigma_k'\le0,就得到 Δ\Delta 的允许范围。若越界,xkx_k 应进基,从原最优表继续做原始单纯形。

基变量目标系数变化

若第 rr 个基变量系数增加 Δ\Delta,则所有检验数都可能变化:

σj=σj+Δ(B1Aj)r\sigma_j'=\sigma_j+\Delta\,(B^{-1}A_j)_r

(基变量本身的检验数仍为零)。对每个非基列写 σj0\sigma_j'\le0,取这些不等式的交集,就是允许范围。

最优值在基不变时变为

z=z+Δ(B1b)r.z'=z+\Delta\,(B^{-1}b)_r.

右端向量变化

b=b+Δbb'=b+\Delta b,检验数不变,新的基本变量为

xB=B1b+B1Δb.x_B'=B^{-1}b+B^{-1}\Delta b.

要求每个分量非负。若只改变 bib_i,令 Δb=δei\Delta b=\delta e_i,逐行解

B1b+δB1ei0.B^{-1}b+\delta B^{-1}e_i\ge0.

越界后若检验数仍满足最优性,可从旧表做对偶单纯形。

技术系数或新增变量变化

新增变量相当于新增一列 aa 与目标系数 cac_a。只需计算它相对当前基的检验数

σa=cBTB1aca.\sigma_a=c_B^TB^{-1}a-c_a.

σa0\sigma_a\le0,当前解仍最优且新变量取零;若 σa>0\sigma_a>0,让新变量进基。

新增约束则把当前解代入检查。若违反新约束,将其用当前非基变量表示后追加到表中,常可用对偶单纯形修复。

影子价格与范围

最优对偶解

yT=cBTB1y^T=c_B^TB^{-1}

给出右端变化的局部价值:

z(b+Δb)=z(b)+yTΔb.z(b+\Delta b)=z(b)+y^T\Delta b.

但该式只在当前基保持可行和最优的参数范围内成立。越过临界值后,最优基变化,影子价格也会跳变。

考试要点

  • cc 主要检查检验数;改 bb 主要检查右端。
  • “最优基不变”比“最优解不变”更严格:基不变时数值解也可能随 bb 连续变化。
  • 允许范围的端点通常对应退化或多重最优,应包含还是排除要按题意说明。
  • 写出参数不等式的交集,不要只检查其中一个检验数或一个基本变量。

评论