两阶段随机规划
两阶段随机规划是随机规划中最基本、最经典的模型框架。它用于刻画“在观察到随机变量实现之前做出初步决策,在观察到随机变量实现后,根据实际发生的情况做出调整(或追索)决策”的两阶段决策过程。它的核心思想是将决策的时序性与不确定性明确分离。我会从模型的基本构成、数学形式、求解思路,再到扩展与挑战,为你逐步展开讲解。
第一步:模型思想与直观例子
想象一个生产商需要为一个即将到来的销售季节做规划。
- 第一阶段(当前/此时此地):在不知道确切的需求量之前,你必须决定生产多少产品。这称为第一阶段决策或此时此地决策。这个决策必须现在确定,不能更改。
- 不确定性揭示:销售季节到来,真实的客户需求量(一个随机变量)被观测到,成为已知信息。
- 第二阶段(未来/追索):观察到实际需求后,你会发现第一阶段的生产量可能不够(缺货),也可能太多(积压)。这时你可以采取一些“补救”措施,比如紧急外包生产来弥补缺货(但成本更高),或者折价处理多余库存(产生损失)。这类在不确定性揭示后做出的决策称为第二阶段决策或追索决策。
两阶段随机规划的目标是:找到一个最优的第一阶段决策,使得“第一阶段成本”加上“在所有可能未来情形下的第二阶段期望追索成本”的总和最小。
第二步:标准数学形式化
我们用数学模型来精确描述上述思想。
-
随机变量:设 ξ 是一个定义在概率空间 (Ω, F, P) 上的随机向量,代表所有的不确定参数(如需求量、价格、资源可用量等)。
-
第一阶段:
- 决策变量:用向量 x 表示。例如,x 可以代表初始生产量、设施选址、投资额度等。
- 约束:x ∈ X,其中 X 通常是一个由线性(或非线性)等式、不等式构成的确定性集合。例如,生产能力限制、预算约束等。
- 成本:cᵀx,即第一阶段决策的直接成本。
-
第二阶段:
- 在观察到随机变量 ξ 的一个具体实现值(记为 ξ(ω))后,我们做出追索决策 y。例如,y 可以代表外包量、短缺量、库存处理量等。
- 追索问题:对于给定的 x 和已实现的 ξ(ω),第二阶段决策 y 需要解决以下优化问题:
Q(x, ξ(ω)) = min { q(ω)ᵀy | T(ω)x + W(ω)y = h(ω), y ≥ 0, y ∈ Y }q(ω): 第二阶段决策的成本系数(依赖于 ξ(ω))。W(ω): 追索矩阵,定义了追索决策 y 如何满足约束。T(ω)x: 这体现了第一阶段决策 x 如何影响第二阶段的资源需求或约束。T(ω) 称为技术矩阵。h(ω): 第二阶段的右端项(如已实现的需求)。T(ω)x + W(ω)y = h(ω)是核心约束,意味着第一阶段决策 x 和第二阶段决策 y 共同“凑”出必须满足的要求 h(ω)。
Q(x, ξ(ω))被称为价值函数或追索函数,它表示在给定 x 和情景 ω 下,最优的第二阶段成本。
-
两阶段随机规划问题:
我们的总目标是最小化总期望成本:min f(x) = cᵀx + E[Q(x, ξ)] s.t. x ∈ X其中 E[·] 表示关于随机向量 ξ 的数学期望。这就是两阶段随机规划的标准形式:一个外层是涉及期望值的最小化问题,内层嵌套了无数个(每个 ω 对应一个)线性(或更一般)规划问题 Q(x, ξ(ω))。
第三步:问题的核心特征与挑战
- 非光滑凸性:函数
E[Q(x, ξ)]关于 x 是凸的(在很一般的条件下),但它通常不是处处可微的。它是由许多线性规划的价值函数取期望而成,这些“折面”拼接起来,使得f(x)是一个具有“棱角”的分片线性凸函数(当第二阶段问题是线性时)。这意味着你不能简单地使用基于梯度的经典优化方法。 - 计算难点——期望值:计算目标函数
f(x) = cᵀx + E[Q(x, ξ)]及其(次)梯度是困难的。如果 ξ 有无限多种或极多种可能实现(情景),精确计算期望值在计算上不可行。
第四步:经典求解方法——基于离散分布的逼近
为了计算期望,最直接的方法是用一个离散分布来近似原始的连续(或复杂)分布。
-
情景生成:假设随机向量 ξ 有 S 种可能的情景(离散化后),记为 ξ₁, ξ₂, ..., ξ_S,对应的概率为 p₁, p₂, ..., p_S (∑p_s = 1)。
-
确定性等价问题:
将期望展开,原来的两阶段随机规划问题可以重写为一个大规模线性规划问题,称为确定性等价形式或展开式:min cᵀx + Σ_{s=1}^S p_s * (q_sᵀ y_s) s.t. 第一阶段约束: x ∈ X 第二阶段约束(对每个情景 s): T_s x + W_s y_s = h_s, y_s ≥ 0 (对所有 s)- 注意,这里为每一个情景 s 都引入了一组独立的第二阶段决策变量 y_s。这意味着决策是“情景依赖的”,即针对不同的未来,允许采取不同的追索行动。
- 第一阶段决策 x 是非预期的,它在所有情景下必须相同。这个约束(x 对所有 s 相同)是连接所有情景的纽带,体现了“决策必须在知道哪个情景发生之前做出”这一核心。
-
挑战与应对:当情景数量 S 很大时,这个展开式问题会变得极其庞大(变量和约束数量激增),直接求解可能不现实。此时需要用到你列表中的一些高级算法,例如:
- Benders分解(或L-Shaped方法):这是求解两阶段(及多阶段)随机规划的标杆性算法。它将大规模问题分解为一个主问题(求解 x)和一系列独立的子问题(每个情景对应一个,用于计算 Q(x, ξ_s))。主问题和子问题通过切割平面(Benders割)迭代通信,逐步逼近原问题的最优解。这种方法避免了直接处理整个大规模问题。
- 样本平均近似:当无法或难以枚举所有情景时,我们可以从 ξ 的分布中随机抽取 N 个独立同分布的样本 {ξ^1, ..., ξ^N},用这个经验分布的期望(即样本平均)来代替真实期望
E[Q(x, ξ)],形成一个近似问题。然后研究这个近似问题的解,当样本量 N 趋于无穷时,如何收敛到原问题的解。这就是你列表中“样本平均近似法”的核心。
第五步:模型扩展与相关概念
两阶段模型是构建更复杂模型的基础:
- 多阶段随机规划:决策和不确定性交替发生多次(T>2个阶段),形成决策树。这可以看作两阶段模型的递归扩展,但复杂度和计算难度呈指数级增长。
- 整数决策:如果第一或第二阶段决策变量有整数要求(例如,是否建厂的0-1变量),问题就变成了两阶段随机整数规划,求解难度极大,通常需要结合你列表中的分支定界、分支切割等方法。
- 与机会约束规划、分布鲁棒优化的联系:两阶段模型最小化“期望成本”,这是一种风险中性的建模。如果决策者是风险厌恶的,可能会在目标中引入风险度量(如CVaR),或者将第二阶段的约束以一定概率满足(机会约束规划)。如果随机分布本身不精确已知,就需要用到分布鲁棒优化,在最坏情况的分布下寻求最优。
总结:两阶段随机规划通过分离“当前决策”和“事后追索”,为在不确定环境下进行决策提供了一个清晰而强大的建模框架。它的标准数学形式优雅地表达了决策的时序性,而其求解的核心挑战在于处理期望算子和问题规模,由此催生了Benders分解、SAA等一系列重要的随机规划算法。它是你列表中许多更高级主题(如多阶段规划、序贯决策、分布鲁棒优化等)的基石。