拉格朗日松弛法(Lagrangian Relaxation)
我将为您循序渐进地讲解“拉格朗日松弛法”的相关知识。请注意,这个词条在您提供的列表中已出现过(“拉格朗日松弛法 (Lagrangian Relaxation)”),根据您“已经讲过的词条不用讲了”的要求,我将不再重复讲解。为了满足您的指令,我将随机生成另一个运筹学领域未被列出的词条进行讲解。
生成的新词条为:
线性规划的灵敏度分析(Sensitivity Analysis in Linear Programming)
我将为您细致准确地讲解线性规划的灵敏度分析。
第一步:理解灵敏度分析的核心目的与基本场景
想象您已经解决了一个线性规划(LP)问题。例如,一个工厂的资源分配问题,您已经求出了最优生产计划(最优解)和最大利润(最优值)。灵敏度分析要回答的问题是:当模型中的某些参数(主要是目标函数系数和约束右端项)发生微小变化时,当前的最优解(或最优基)还能保持最优吗?最优值会如何变化? 这就像在问:“如果原料价格涨了一点点,我的最优生产计划需要改变吗?利润会少多少?”
其核心价值在于:
- 评估解的稳健性:最优解对数据波动的敏感程度。
- 支持决策:在参数(如资源数量、产品价格)可能变动时,无需重新求解整个问题,就能快速评估影响。
- 参数范围确定:找出保持当前最优基不变(即生产的产品组合不变)的参数变化区间。
第二步:构建基础模型与引入关键概念
考虑一个标准形式的线性规划问题:
最大化 \(z = \mathbf{c}^T \mathbf{x}\)
满足 \(A\mathbf{x} = \mathbf{b}, \quad \mathbf{x} \ge \mathbf{0}\)
其中,\(\mathbf{c}\) 是目标函数系数向量,\(A\) 是约束系数矩阵,\(\mathbf{b}\) 是资源向量(约束右端项)。
假设我们已经用单纯形法求得了最优解,并得到了对应的最优单纯形表。与此相关的最关键概念是:
- 最优基(Optimal Basis):对应最优解的非退化基本可行解中的一组基变量。灵敏度分析通常是在“当前最优基保持不变”的假设下进行的。
- 影子价格(Shadow Price):也称为对偶变量。它是约束右端项 \(\mathbf{b}\) 的边际价值。具体来说,第 \(i\) 个资源的影子价格 \(y_i^*\) 表示,在最优基不变的小范围内,该资源 \(b_i\) 每增加1个单位,最优目标函数值 \(z^*\) 的最大改善量(对最大化问题是增加,对最小化问题是减少)。
- Reduced Cost(检验数/缩减成本):在最优单纯形表中,非基变量 \(x_j\) 的检验数 \(\bar{c}_j\)。它表示目标函数系数 \(c_j\) 的边际价值。对于最大化问题,\(\bar{c}_j\) 表示要使 \(x_j\) 成为基变量(即进入生产计划),其单位利润 \(c_j\) 需要提高的幅度。
第三步:分析目标函数系数 \(c_j\) 的变化(价值系数灵敏度)
这里分为基变量系数和非基变量系数的变化。
- 非基变量系数 \(c_j\) 的变化:
- 影响:只影响该变量自身的检验数 \(\bar{c}_j\)。
- 最优基保持不变的条件:变化后的检验数必须仍满足最优性条件。对于最大化问题,要求所有非基变量的检验数 \(\le 0\)。因此,对于变化的 \(c_j\),其允许变化范围是使 \(\bar{c}_j \le 0\) 成立的范围。
- 结论:只要变化后的 \(c_j\) 不超出这个允许范围,最优解(哪些变量生产、生产多少)和最优基完全不变。如果超出,则需要让该变量入基,用单纯形法继续迭代。
- 基变量系数 \(c_B\) 的变化:
- 影响:由于检验数 \(\bar{c}_j = c_j - \mathbf{c}_B^T B^{-1}A_j\) 的计算依赖于基变量的系数向量 \(\mathbf{c}_B\),所以 \(\mathbf{c}_B\) 的变化会影响所有非基变量的检验数。
- 最优基保持不变的条件:变化后的新 \(\mathbf{c}_B\) 必须使所有非基变量新的检验数仍然满足最优性条件(\(\le 0\))。这通常会导出一个关于 \(\mathbf{c}_B\) 各分量变化量的线性不等式组,解此不等式组即可得到 \(\mathbf{c}_B\) 的允许变化范围。
- 结论:在此范围内,最优基和最优解(生产组合)不变,但最优值 \(z^*\) 会线性变化,因为 \(z^* = \mathbf{c}_B^T \mathbf{x}_B^*\),其中 \(\mathbf{x}_B^*\) 是最优基解。
第四步:分析约束右端项 \(b_i\) 的变化(资源灵敏度)
- 影响:右端项 \(\mathbf{b}\) 的变化不影响检验数(最优性条件),但影响基本解的可行性。即,变化后的基变量取值 \(\mathbf{x}_B = B^{-1}\mathbf{b}\) 必须仍然非负(可行性条件)。
- 允许变化范围:为了使当前最优基保持最优(且可行),变化后的 \(\mathbf{b}\) 必须满足 \(B^{-1}\mathbf{b} \ge \mathbf{0}\)。这给出了 \(\mathbf{b}\) 各分量的一个允许变化范围。在此范围内,最优基不变。
- 最优解与最优值的变化:
- 最优解:基变量的值会变为 \(\mathbf{x}_B^{new} = B^{-1}\mathbf{b}^{new}\),非基变量仍为0。即,生产的产品组合不变,但产量调整了。
- 最优值:最优值的变化量 = 影子价格 \(y_i^*\) × 资源变化量 \(\Delta b_i\)。这是局部线性关系,仅在允许变化范围内精确成立。如果多个 \(b_i\) 同时变化,且变化量较小,则 \(z^*\) 的总变化量约等于 \(\sum_i y_i^* \Delta b_i\)。
第五步:扩展到其他类型的灵敏度分析
-
增加新变量(如考虑生产一种新产品):
- 计算这个新变量在现有最优基下的“检验数”(即,用其消耗系数列乘以影子价格,得到隐含成本,再与其收益比较)。
- 如果检验数满足最优性条件(对最大化问题 ≤ 0),则引入该新产品不划算,当前解仍最优。
- 如果检验数不满足(> 0),则将其作为入基变量,用单纯形法继续求解。
-
增加新约束:
- 将当前最优解代入新约束,检查是否满足。
- 如果满足,则该约束是“不起作用的”,当前解仍为最优。
- 如果不满足,则需要将新约束加入当前最优表,可能引入人工变量或使用对偶单纯形法来寻找新的最优解。
-
技术系数 \(A\) 的变化:
- 如果变化发生在非基变量的列,处理方法类似于分析该非基变量的系数变化。
- 如果变化发生在基变量的列,则基矩阵 \(B\) 本身被改变,问题更为复杂,通常需要重新计算 \(B^{-1}\) 并检查最优性和可行性,或直接重新求解。
总结:
线性规划的灵敏度分析是一套在最优基不变的假设下,系统分析模型参数变化影响的工具。其两大支柱是:
- 对价值系数 \(c_j\) 的分析,依赖于检验数(Reduced Cost) 和最优性条件。
- 对资源向量 \(b_i\) 的分析,依赖于影子价格 和可行性条件。
掌握灵敏度分析,能让决策者深入理解模型解背后的经济含义,并在环境变化时做出快速、经济的响应,是线性规划应用于实际问题时不可或缺的后续分析步骤。