3. 敏感性分析基础

在优化问题中,我们往往先得到一个“最优解”,但决策者真正关心的是:这个解稳不稳?如果某个参数估计偏了 5%,目标值会恶化多少?哪些输入是真正需要花成本去精确测量的?敏感性分析就是回答这些问题的工具。它的核心思想是:在最优解附近或整个输入空间内,考察输入扰动对输出(目标值、约束可行性、最优决策变量)的影响程度,从而识别关键参数、评估结果可信度,并为鲁棒优化提供依据。

需要先明确一个参照约定:本节讨论的“敏感性”均指输入参数变化引起输出变化的程度,即输出对输入的偏导或相对变化率;方向约定为“输入增大时输出的变化方向”,全文与图示保持一致。

局部敏感性分析:在一点上做微分

局部敏感性分析(Local Sensitivity Analysis, LSA)的基本思想是:在名义参数点 \(x_0\) 处,对模型输出 \(f(x)\) 求偏导,用 \(\partial f/\partial x_i\) 或无量纲的弹性系数 \((\partial f/\partial x_i)\cdot(x_i/f)\) 衡量第 \(i\) 个输入的影响。工程上常用有限差分近似:对参数 \(x_i\) 施加小扰动 \(\Delta x_i\)(如取名义值的 1%),计算

S_i ≈ [f(x_1,…,x_i+Δx_i,…) − f(x_1,…,x_i,…)] / Δx_i

例如某生产计划模型,名义参数为:原料单价 50 元/单位、可用工时 800 h、需求下限 120 件,最优目标成本为 18,600 元。对原料单价施加 +1%(即 50.5)后重解,目标成本变为 18,742 元,则绝对敏感度为 (18742−18600)/0.5 ≈ 284 元/元,弹性约为 0.38。这说明单价每上升 1%,成本约上升 0.38%,属于中等敏感参数。

LSA 的优点是计算量小(n 个参数只需 n+1 次求解)、结果直观、易于解释;适用条件是模型近似线性、参数不确定性较小、且我们只关心名义点附近的局部行为。它的致命局限是:只反映一点处的斜率,无法捕捉非线性、阈值效应和参数间的交互作用;当参数偏离名义点较远时,局部斜率可能严重误导。

全局敏感性分析:在整个输入空间上分配方差

全局敏感性分析(Global Sensitivity Analysis, GSA)不依赖单点导数,而是在参数的整个不确定性范围内采样,把输出方差分解到各输入及其组合上。最常用的是方差分解(Sobol 方法):一阶指数 \(S_i\) 表示 \(x_i\) 单独解释的输出方差比例,总效应指数 \(S_{Ti}\) 表示包含 \(x_i\) 所有交互项后的贡献。若 \(S_{Ti}\) 明显大于 \(S_i\),说明该参数主要通过与其他参数的交互起作用。

实操上可用 Saltelli 采样:对 k 个参数生成两组样本矩阵 A、B,构造 k 个混合矩阵 \(AB_i\)(A 的第 i 列替换为 B 的第 i 列),共需 \(N(k+2)\) 次模型评估。以 k=3、N=1024 为例,约需 5120 次求解。若某参数 \(S_i=0.52\)、\(S_{Ti}=0.61\),则它主导输出方差且交互较弱,应优先精确标定;若另一参数 \(S_i=0.03\)、\(S_{Ti}=0.35\),则它单独影响小但交互显著,不能简单忽略。

GSA 的适用条件是:参数具有明确的概率分布或合理区间、模型可承受较多次评估(或可用代理模型替代)、需要识别交互效应和全局关键参数。代价是计算量大、结果依赖输入分布的设定,且解释门槛高于 LSA。

单因素与多因素分析

单因素分析每次只改变一个参数、其余固定,回答“若只有这个参数变化,结果如何”。它对应 LSA 的扫描版本(如对单价在 40~60 元间取 9 个点画响应曲线),适合快速筛查、生成龙卷风图(tornado chart)排序,也便于向非技术决策者解释。但它系统性遗漏交互作用,当参数间存在补偿或放大关系时会低估风险。

多因素分析同时改变多个参数,考察联合扰动与交互效应,包括全因子/部分因子设计、拉丁超立方采样、蒙特卡洛模拟以及 GSA 的方差分解。它回答“当多个参数同时不确定时,输出的分布和失效概率如何”,是鲁棒性评估和可靠性分析的直接输入。代价是样本量随维数增长,需要合理的设计与代理模型。

选择建议:先用单因素/LSA 做快速筛查和排序,锁定 3~5 个候选关键参数;再对候选参数做 GSA 或多因素蒙特卡洛,确认交互效应与输出分布。两者不是替代关系,而是“粗筛—精算”的配合。
局部敏感性分析(LSA) 在名义点 x₀ 处求偏导 / 有限差分 参数 x 输出 f 名义点 x₀ 局部斜率 ∂f/∂x ±1% 扰动 优点:n+1 次求解、直观、易解释 局限:仅反映一点斜率,漏掉交互与阈值 适用:近似线性、小扰动、快速筛查 全局敏感性分析(GSA) 在整个输入空间采样,分解输出方差 参数空间采样(LHS / Saltelli) 方差贡献: S₁=0.52 S₂=0.18 S₃=0.06 优点:捕捉交互、阈值与全局关键参数 代价:N(k+2) 次评估,依赖输入分布 适用:大不确定性、鲁棒性/可靠性评估 粗筛 精算

如何把两类分析落到一次评估中

假设某供应链优化模型有 6 个不确定参数:需求均值、需求波动、采购价、运输费率、产能上限、缺货惩罚。建议流程如下:

  1. 单因素扫描:对每个参数在 ±20% 区间取 5 个点,其余固定,记录目标值变化幅度,绘制龙卷风图,按影响幅度排序。
  2. LSA 定量:对排序前 3 的参数计算弹性系数,判断方向与量级,确认是否近似线性。
  3. GSA 精算:为 6 个参数设定分布(如需求正态、价格均匀),用 N=1024 的 Saltelli 方案评估约 8192 次,得到 \(S_i\) 与 \(S_{Ti}\)。
  4. 结果判读:若某参数 \(S_{Ti}\) 高但 \(S_i\) 低,说明交互强,需在鲁棒优化中作为联合不确定集处理;若 \(S_{Ti}\) 与 \(S_i\) 都低,可固定为名义值以降低维度。
常见误区:把 LSA 的局部斜率直接外推到大幅参数变化,或用单因素结论替代多因素评估。当参数间存在补偿效应时,单因素分析会系统性低估输出波动,导致鲁棒性评估过于乐观。

总结来看,局部与全局、单因素与多因素并非对立,而是精度与成本的不同档位。理解各自的数学含义与适用边界,才能在实际优化项目中用合理代价获得可信的敏感性结论,并据此决定哪些参数值得投入测量成本、哪些不确定性必须在鲁棒模型中显式保留。