IMPA-随机编程笔记-全-

IMPA 随机编程笔记(全)

1:课程介绍与不确定性建模入门

在本节课中,我们将学*随机规划的基本概念,并通过一个石油生产计划的例子,了解如何处理优化问题中的不确定性。我们将看到,当数据不确定时,传统的确定性优化方法不再适用,并初步探讨几种处理不确定性的建模思路。

课程概述与安排

本课程是IMPA 2016年随机变分分析主题项目下的第一项活动。课程由三位教授共同授课,采用线上线下结合的方式进行。

以下是课程的一些具体安排:

  • 互动方式:可通过YouTube聊天功能进行互动,或发送邮件至主题项目通用邮箱,请在邮件主题中注明课程缩写和上课日期。
  • 考核方式:考核将结合理论与计算实践。
    • 包含两份*题列表(理论与计算各一份)。
    • 一次理论考试(计划于4月21日)。
    • 一个期末计算项目(需在6月底前完成,可使用Matlab或Octave)。
    • 博士生需完成额外的理论或应用拓展任务。
  • 辅导课:在*题发布后,将安排专门的辅导课用于答疑和讨论。
  • 教学资料:课程将结合幻灯片和黑板板书进行。

从确定性优化到随机规划

上一节我们介绍了课程的基本安排,本节中我们来看看随机规划的核心特征。随机规划是优化理论的一个分支,专门处理数据不确定的优化问题。它与经典的确定性优化有显著区别。

随机规划有几个关键特征:

  1. 不确定性表示:没有唯一的方法来表示优化问题中的不确定性。
  2. 模型与现实的差距:我们构建的离散化模型与真实的连续问题之间存在差距,因此需要对解的质量进行评估,通常通过模拟和性能分析来完成。
  3. 统计建模:需要选择随机性模型(如随机过程或计量经济模型)来生成输入优化问题的数据(即“情景”)。

本课程将不深入探讨情景生成技术,但5月初将有一个关于该主题的短期课程。

一个确定性案例:石油生产计划

为了理解随机规划的必要性,我们首先看一个确定的线性规划例子:一家公司的石油生产优化问题。

公司使用国产和进口两种原油(x1, x2),生产普通和优质两种汽油,以满足市场需求(h1=180, h2=162)。目标是最小化原油采购成本(国产油成本 c1=2,进口油成本 c2=3)。

生产受到以下约束:

  • 需求约束:生产量必须至少满足市场需求。
    • 生产普通汽油:2*x1 + 6*x2 >= 180
    • 生产优质汽油:3*x1 + 3*x2 >= 162
  • 产能约束:炼油厂总处理能力有限:x1 + x2 <= 100
  • 非负约束x1 >= 0, x2 >= 0

该确定性线性规划问题可表述为:

最小化: c^T * x
约束条件: A * x >= b
           x >= 0

其中,c = [2; 3], x = [x1; x2], b = [180; 162; -100], A = [2, 6; 3, 3; -1, -1]

使用Octave/Matlab中的GLPK求解器,可以得到最优解:x1 = 36, x2 = 18,最小成本为 126。图形化分析也验证了这个结果。

引入不确定性

然而,现实世界充满不确定性。上述确定性模型假设所有数据(成本、需求、生产效率)都已知,这通常不成立。

在我们的例子中,以下数据可能是不确定的:

  1. 生产效率(A矩阵变化):原油质量波动影响出油率。
    • 国产油生产普通汽油的效率:22 + η1
    • 进口油生产优质汽油的效率:33 + η2
  2. 市场需求(b向量变化):客户需求会波动。
    • 普通汽油需求:180180 + ζ1
    • 优质汽油需求:162162 + ζ2

我们假设这些随机变量(用希腊字母表示)独立分布,并赋予其具体的概率分布:

  • η1 ~ N(0, 12^2) (正态分布)
  • η2 ~ N(0, 9^2) (正态分布)
  • ζ1 ~ Uniform(-0.8, 0.8) (均匀分布)
  • ζ2 ~ Exp(2.5) (指数分布)

为了控制范围,我们将连续随机变量约束在其99%置信区间内。

现在,优化问题变成了:

最小化: c^T * x
约束条件: (2+η1)*x1 + 6*x2 >= 180 + ζ1  对于所有 (η1, ζ1) ∈ 置信区间
           3*x1 + (3+η2)*x2 >= 162 + ζ2  对于所有 (η2, ζ2) ∈ 置信区间
           x1 + x2 <= 100
           x >= 0

关键问题:这不再是一个定义良好的优化问题,因为它包含了无限多个约束(对应不确定参数的无限多种可能取值)。我们无法直接求解。这就是随机规划需要解决的核心难题:如何用一个可求解的模型来*似这个理想的连续模型,并在求解后评估解的质量。

处理不确定性的不同思路

面对包含不确定性的不可解问题,我们需要寻找将其转化为“可处理”问题的方法。这通常体现了决策者的风险偏好

一种极端保守的方法是最坏情况法。它要求生产计划x必须对不确定参数在其置信区间内的所有可能取值都可行。这通过考虑每个随机变量的极端值(区间端点)来实现,从而将无限约束转化为有限个约束。对于我们的例子,这会产生一个“保守”的解(例如x1=48, x2=18,成本172),成本更高,但能抵御所有极端情况。

然而,最坏情况法通常过于保守且昂贵。更实用的方法主要有两类:

  1. 带补偿的模型:允许计划在某些情景下不满足需求,但事后需要采取补偿行动(如从市场购买短缺的汽油),并为此支付罚金。补偿行动是“观望型”决策,依赖于不确定性的实现。
  2. 机会约束模型:只要求约束以一定的概率水平(例如95%)得到满足,允许小概率的违约风险。这放松了可行性要求,可能得到成本更低的解。

一个启发性的例子:农场主决策

为了直观理解“事前决策”与“事后最优”的差异,考虑农场主Zé的种植决策。

  • 情景:天气可能湿润或干燥。
  • 决策:必须在知道天气前决定种植玉米、大豆还是小麦。
  • 利润:不同作物在不同天气下的利润不同。
    天气 全种玉米 全种大豆 全种小麦
    湿润 100 60 80
    干燥 -20 70 40

假设湿润概率 p=0.5,则各种策略的期望利润为:

  • 全玉米:0.5*100 + 0.5*(-20) = 40
  • 全大豆:0.5*60 + 0.5*70 = 65
  • 全小麦:0.5*80 + 0.5*40 = 60

一个“折中”的想法是各种一半玉米和一半大豆,期望利润为 (40+65)/2=52.5

启示

  1. 平均化决策可能无效:折中方案(52.5)不如全种大豆(65)或全种小麦(60)。
  2. 事前最优不同于事后最优:如果知道天气,湿润种玉米(100),干燥种大豆(70)是最优的。但事前不知道,最优的事前决策(全种大豆)与这两种事后最优决策都不同。
  3. 决策变量是“事前”的:像种植比例这样的决策,必须在不确定性揭示之前确定,称为“事前”变量。而像补偿模型中的购买量,可以在知道天气后决定,称为“观望型”变量。

总结与预告

本节课中我们一起学*了随机规划的入门知识。我们首先通过一个确定的石油生产计划问题,回顾了线性规划模型。然后,我们引入了现实世界中的不确定性(生产效率波动、需求变化),并指出这会导致一个包含无限约束、无法直接求解的问题。

我们探讨了处理不确定性的必要性,并介绍了几种基本思路:

  • 最坏情况法:非常保守,成本高。
  • 带补偿的模型:允许违约但支付罚金,引入“观望型”变量。
  • 机会约束模型:允许小概率违约。

这些方法都是为了将连续的随机规划问题离散化为包含有限个“情景”的可求解问题。我们必须认识到,模型是对现实的*似,因此对解的质量进行评估(通过模拟) 是随机规划中至关重要的一步。

在下节课中,我们将更深入地学*带补偿模型和机会约束模型的具体数学形式,并继续探索如何构建和求解随机规划问题。

2:处理不确定性的不同建模方法 🎯

在本节课中,我们将学*处理线性规划中不确定性的不同建模方法。我们将从一个简单的石油生产问题出发,比较确定性模型、最坏情况模型、概率约束模型和带补偿的随机规划模型,并理解它们各自的优缺点。

问题设定与符号

上一节我们介绍了随机规划的基本概念。本节中,我们来看看如何用更通用的符号来描述我们的问题。

我们有一个线性规划问题,形式如下:

最小化 c^T x
约束条件:x ∈ X
          T x ≥ h

其中,x 是决策变量,X 是确定性约束集合(例如产能约束),而 T x ≥ h 是包含不确定性的约束(例如需求约束)。矩阵 T 被称为技术矩阵,向量 h 是右端项。

在随机规划中,我们不知道 Th 的确切值,但我们知道其概率分布。不确定性通过场景(即不确定参数的可能实现)来表达。我们假设有 K 个场景,每个场景 k 对应的 h 值为 h_k,发生的概率为 p_k

为了简化讨论,我们考虑一个特殊情况:技术矩阵 T 是确定的,只有右端项 h 是随机的。我们将 h 记作随机向量 ξ(ω),其中 ω 代表随机事件。我们进一步假设 ξ 的每个分量 ξ_i 都服从独立的正态分布,均值为 μ_i,方差为 σ_i^2

我们的目标是找到决策 x,使得约束 T x ≥ ξ(ω) 几乎必然成立(即对所有可能的 ω 都成立,除了一个零测集)。然而,这通常过于严格或不可行,因此我们需要寻找替代的建模方法。

确定性模型

第一种方法是忽略所有不确定性。

确定性模型直接求解原始线性规划,假设所有参数都取其期望值或某个标称值。在我们的例子中,即用 E[ξ] 代替 ξ

以下是该模型的特点:

  • 优点:模型简单,易于求解。
  • 缺点:得到的解不灵活,完全未考虑不确定性。在实际中,由于随机波动,该解很可能无法满足约束。

最坏情况模型(鲁棒方法)

第二种方法走向另一个极端,考虑所有可能的最坏情况。

最坏情况模型要求解必须满足所有可能场景下的约束。对于有限个场景的情况,模型如下:

最小化 c^T x
约束条件:x ∈ X
          T x ≥ h_k, 对于所有 k ∈ K

这等价于要求 T x ≥ max_{k∈K} h_k

以下是该模型的特点:

  • 优点:解非常安全,无任何风险。
  • 缺点:通常非常保守且昂贵,可能导致大量浪费(例如,生产过多以应对从未出现的最高需求)。它没有对风险进行量化考量。

场景分析模型

第三种方法是为每一个单独的场景求解一个规划问题。

场景分析模型为每个场景 k 独立求解如下问题:

最小化 c^T x
约束条件:x ∈ X
          T x ≥ h_k

这会得到一系列解 x_k,每个解对应一个特定场景。

以下是该模型的特点:

  • 优点:计算简单。
  • 缺点:它回答了一个错误的问题。它告诉我们“如果某个场景发生,我们应该怎么做”,而不是“在面对多种可能场景时,我们应该提前决定怎么做”。因此,它通常不是一个好的决策模型。

概率约束(机会约束)模型

上一节我们介绍了过于严格或过于宽松的模型。本节中我们来看看概率约束模型,它在风险和成本之间寻求平衡。

概率约束模型不要求约束几乎必然成立,而是要求其以一定的概率成立。我们定义可靠性函数 P(x) 为约束得到满足的概率:

P(x) = Prob( T x ≥ ξ )

我们要求这个概率不低于一个可接受的最低水平 1 - ε,其中 ε 是决策者设定的风险容忍度(例如 ε=0.1 表示允许10%的违约概率)。

因此,模型变为:

最小化 c^T x
约束条件:x ∈ X
          P(x) ≥ 1 - ε

这个模型通过参数 ε 明确考虑了风险,概念直观(例如,“保证90%的情况下需求得到满足”)。

然而,求解涉及概率约束并不容易。为了得到显式表达式,我们通常做两个简化:

  1. 考虑个体概率约束,即对每个约束 T_i x ≥ ξ_i 单独施加概率要求,而不是对所有约束联合施加。
  2. 利用 ξ_i 的分布特性。

对于 ξ_i ~ N(μ_i, σ_i^2) 且相互独立的情况,个体概率约束 Prob( T_i x ≥ ξ_i ) ≥ 1 - ε 可以等价地转化为一个确定性线性约束:

T_i x ≥ μ_i + Φ^{-1}(1 - ε) * σ_i

其中 Φ^{-1} 是标准正态分布的逆累积分布函数。

以下是该模型的特点:

  • 优点:明确量化并控制了风险,模型易于解释。
  • 缺点
    • 通常使用个体约束*似联合约束,两者不等价。
    • 只控制了违约的概率,但没有衡量违约的严重程度(是轻微短缺还是严重短缺)。
    • 对于联合概率约束或非正态分布,模型可能变得非常复杂(非凸、非线性)。

概率约束模型适用于那些不可补救的情况,即一旦计划制定就无法调整或补救错误,例如水坝设计、安全关键系统规划等。

带补偿的两阶段随机规划模型

最后,我们介绍带补偿的模型,它允许我们在观察到不确定性实现后采取纠正措施。

带补偿的模型引入第二阶段的等待型决策变量 y(ω),用于应对不确定性实现后出现的约束违反(如需求短缺)。第一阶段决策 x 必须提前决定,第二阶段决策 y 可以依赖于 ω

模型的一般形式如下:

最小化 c^T x + E[ Q(x, ξ(ω)) ]
约束条件:x ∈ X

其中 Q(x, ξ) 是第二阶段价值函数,定义为:

Q(x, ξ) = min d^T y
约束条件:T x + W y ≥ ξ
          y ≥ 0

d 是补偿行动的成本(例如,从市场购买短缺产品的溢价)。

当我们将场景离散化为 K 个可能实现 ξ_k 及其概率 p_k 时,上述两阶段问题可以写成一个大型线性规划:

最小化 c^T x + Σ_{k=1}^{K} p_k * (d^T y_k)
约束条件:x ∈ X
          T x + W y_k ≥ ξ_k, 对于所有 k = 1,...,K
          y_k ≥ 0, 对于所有 k = 1,...,K

以下是该模型的特点:

  • 优点
    • 定量考虑了违约的后果(通过补偿成本 d)。
    • 模型更符合许多实际决策过程(先计划,后调整)。
    • 解通常比最坏情况模型成本更低,同时比确定性模型更可靠。
  • 缺点
    • 维数灾难:场景数量 K 增加会直接导致变量 (y_k) 和约束数量急剧增加,问题规模爆炸式增长。
    • 求解大规模线性规划需要专门的算法。

带补偿的模型适用于那些可以补救的情况,即计划失误后有机会采取纠正措施,例如库存管理、能源调度、金融投资等。

模型比较与评估

我们已经介绍了五种主要模型。本节中,我们通过一个数值例子来比较它们的性能。

我们对石油生产例子应用不同模型,并评估所得解的质量。评估标准是可靠性,即解满足真实随机约束(假设为连续正态分布)的概率。

以下是不同模型的求解结果与可靠性对比示例:

模型 最优成本 可靠性(满足概率) 说明
确定性模型 最低 很低(例如25%) 忽略风险,成本低但经常违约
最坏情况模型 最高 100% 绝对安全,但成本高昂,可能过度保守
带补偿模型 中等 较高(例如91%) 在成本与可靠性间取得较好平衡
概率约束模型(ε=0.05) 较高 95% (由设计保证) 直接控制可靠性水平,成本相应增加

从比较中可以看出:

  • 对风险的态度直接影响了最优决策和成本。
  • 带补偿的随机规划模型在不过度保守的前提下,提供了良好的可靠性。
  • 概率约束模型可以直接设定可靠性目标。
  • 模型的选择取决于具体问题背景:是否存在补救措施?安全与成本孰轻孰重?

总结与作业

本节课中我们一起学*了处理线性规划中不确定性的五种主要建模方法:

  1. 确定性模型:忽略不确定性,简单但不鲁棒。
  2. 最坏情况模型:考虑所有最坏情况,安全但保守且昂贵。
  3. 场景分析模型:为每个场景单独求解,易于计算但回答错误问题。
  4. 概率约束模型:要求约束以一定概率成立,明确控制风险,适用于不可补救的场合,但可能难以求解且只控制概率不控制严重程度。
  5. 带补偿的两阶段模型:允许事后纠正,定量衡量违约后果,是许多实际问题的自然模型,但面临场景增多导致的维数灾难。

为了加深理解,请完成以下作业:

  • 使用MATLAB或Octave,针对给定的随机需求问题(正态分布),分别实现上述模型(确定性、最坏情况、场景分析、个体概率约束、带补偿)。
  • 首先用少量场景(如1个、10个)测试,然后用更多场景(如100个)测试,观察问题规模和解的变化。
  • 比较不同模型得到的最优解和最优成本。
  • 使用可靠性函数评估每个解的质量(即满足真实连续分布约束的概率)。
  • 分析不同模型的优缺点及适用场景。

3:两阶段随机线性规划 📊

在本节课中,我们将要学*一类特定的随机规划问题——两阶段随机线性规划。我们将了解其基本形式、如何将其抽象为数学模型,并深入探讨其核心组成部分——追索函数的性质。


概述

上一节我们介绍了随机规划的基本概念和建模思路。本节中,我们将聚焦于一类约束和目标函数均为线性的随机规划问题,即两阶段随机线性规划。这类问题的决策变量分为“此时此地”变量(第一阶段)和“等待观望”变量(第二阶段),后者可以在不确定性实现后根据具体情况做出决策。


两阶段模型的基本形式

考虑我们之前讨论的石油生产问题。其数学模型可以抽象为以下形式:

我们最小化第一阶段成本与第二阶段追索成本的期望值之和。

第一阶段问题(“此时此地”决策):

  • 决策变量:x (例如,决定购买多少原油)
  • 成本:c^T x
  • 约束:Ax = b, x >= 0 (例如,产能约束)

第二阶段问题(“等待观望”决策):
对于给定的不确定性实现 ξ,我们解决以下线性规划问题,其最优值记为追索函数 Q(x, ξ)

Q(x, ξ) = min q(ξ)^T y
           s.t. W(ξ) y = h(ξ) - T(ξ) x
                y >= 0

其中:

  • y 是第二阶段决策变量(例如,需要外购的汽油量)。
  • q(ξ) 是第二阶段成本系数(例如,外购汽油的价格)。
  • W(ξ) 是追索矩阵,定义了第二阶段变量如何满足约束。
  • T(ξ) 是技术矩阵,连接第一和第二阶段决策。
  • h(ξ) 是右端项(例如,市场需求)。

完整的两阶段随机线性规划模型可以写为:

min c^T x + E[Q(x, ξ)]
s.t. Ax = b
     x >= 0

这里,E[·] 表示关于随机变量 ξ 的数学期望。


追索函数的对偶形式与性质

为了深入理解追索函数 Q(x, ξ),我们利用线性规划的对偶理论。对于固定的 xξ,第二阶段问题的对偶问题是:

max π^T (h(ξ) - T(ξ) x)
s.t. W(ξ)^T π <= q(ξ)

其中 π 是对偶变量。根据强对偶定理,如果原问题和对偶问题都可行,则它们的最优值相等。因此,追索函数可以重新写为:

Q(x, ξ) = max { π^T (h(ξ) - T(ξ) x) | W(ξ)^T π <= q(ξ) }

D = { π | W(ξ)^T π <= q(ξ) },这是对偶可行域,它是一个多面体。


追索函数的几何解释

从对偶形式可以看出,对于固定的 ξQ(x, ξ)x 的函数,它是多个仿射函数的最大值:

Q(x, ξ) = max_{π ∈ D} [ π^T h(ξ) - (T(ξ)^T π)^T x ]

每个对偶可行解 π 对应一个关于 x 的仿射函数 f_π(x) = π^T h(ξ) - (T(ξ)^T π)^T xQ(x, ξ) 就是所有这些仿射函数取最大值后形成的函数。

这意味着:

  1. 凸性Q(x, ξ) 是凸函数,因为它是仿射函数的最大值。
  2. 分片线性Q(x, ξ) 是分片线性的,其图像由多个超平面拼接而成。
  3. 不可微性:在函数图像发生“转折”的地方(即多个仿射函数值相等的点),Q(x, ξ) 不可微。


可行性与有界性分析

追索函数的值域可能是有限的,也可能是正无穷或负无穷。这取决于对偶可行域 D 的性质。

  • Q(x, ξ) = +∞:这意味着对于给定的 xξ,第二阶段问题不可行。即,无论花费多大代价(理论上为无穷大),都无法弥补第一阶段决策 x 带来的不可行性(例如,市场需求缺口太大,无法通过外购满足)。
  • Q(x, ξ) = -∞:这意味着第二阶段问题无下界。通常这是由于模型设定不合理(例如,外购汽油不仅免费,还能赚钱),在实际情况中应避免。
  • Q(x, ξ) 为有限值:这是正常情况,意味着存在有限的追索方案。

追索函数的有界性与对偶可行域 D回收锥密切相关。回收锥 D_∞ 包含了所有使得 D 无界的方向 d(即,对于任意 π ∈ Dt >= 0,都有 π + t d ∈ D)。可以证明,D_∞ = { d | W(ξ)^T d <= 0 }

h(ξ) - T(ξ)x 属于回收锥 D_∞ 的极锥时,对偶目标函数值可以趋于正无穷,从而导致 Q(x, ξ) = +∞。这从另一个角度解释了不可行性。


与作业问题的联系

在课程开始时提到的作业问题中:

  1. 最坏情况模型:可以采用99%置信区间的上限作为右端项 h 的值,构建一个确定性的线性规划。这是一种保守但简单的处理不确定性的方法。
  2. 情景分析:如果对 K 个不同情景分别求解,会得到 K 个不同的最优解 x_k。如何给出一个统一的决策建议是一个挑战。简单的平均可能不可行,选择“最坏”情景的解可能过于保守。这正体现了情景分析法的局限性——它没有提供一个在不确定性面前统一的、稳健的决策框架,而这正是两阶段随机规划模型所要解决的问题。

总结

本节课我们一起学*了两阶段随机线性规划的核心框架。我们了解到:

  • 该模型将决策分为不可逆的第一阶段决策可适应性的第二阶段追索决策
  • 其目标是最小化即时成本未来追索成本期望之和。
  • 追索函数 Q(x, ξ) 是模型的关键,它可以通过对偶理论表示为一系列仿射函数的最大值,从而具有凸性分片线性
  • 追索函数的取值(有限、正无穷)揭示了第二阶段问题的可行性,这与对偶可行域的回收锥性质相关。

理解追索函数的这些性质,是后续设计高效求解算法(如下次课将介绍的次梯度方法)的基础。与简单的情景分析或最坏情况分析相比,两阶段随机规划模型提供了一个在期望意义下成本最优且能系统处理不确定性的强大建模工具。

4:第二阶段问题与次梯度的深入分析

在本节课中,我们将继续分析两阶段线性随机规划问题的补偿函数。我们将重点关注补偿函数的性质,特别是其可微性以及如何计算其次梯度,这对于后续设计求解算法至关重要。

上一节我们介绍了补偿函数的基本形式,本节中我们来看看如何更深入地分析这个函数,并理解其非光滑特性。

线性规划对偶理论回顾

为了分析补偿函数,我们需要回顾线性规划对偶理论中的一些关键结果。对于一个原始-对偶线性规划对,有四种可能的情况:

以下是四种可能的情况:

  1. 原始问题和对偶问题都不可行。
  2. 原始问题不可行,对偶问题可行但无界。
  3. 原始问题可行但无界,对偶问题不可行。
  4. 原始问题和对偶问题都可行,且最优值有限且相等(无对偶间隙)。

我们主要关注第四种情况,因为它保证了补偿函数取有限值。

补偿函数 V(z) 的定义与分析

补偿函数 V(z) 定义为以下线性规划问题的最优值:

V(z) = inf { q^T y | W y = z, y ≥ 0 }

其中 z 是约束的右端项。这个函数的值取决于 z 是否属于矩阵 W正象锥

正象锥 pos W 是所有能表示为 W y(其中 y ≥ 0)的向量 z 的集合。一个关键的观察是:

  • 如果 z 不属于 pos W,则上述线性规划问题不可行,V(z)+∞
  • 因此,函数 V 的定义域包含于 pos W 中。后续我们将证明两者实际上是相等的。

对偶形式与多面体 P

通过线性规划对偶,V(z) 可以表示为对偶问题的最大值:

V(z) = max { p^T z | W^T p ≤ q }

我们记这个对偶可行域为多面体 P = { p | W^T p ≤ q }

任何多面体 P 都可以表示为其极点的凸包与其回收锥的和。设 PL 个极点 v_l,回收锥为 P∞,则:

P = { p | p = Σ α_l v_l + d, α ∈ Δ_L, d ∈ P∞ }

其中 Δ_LL 维单纯形(α_l ≥ 0, Σ α_l = 1)。

V(z) 的显式表达式

P 的表示代入 V(z) 的表达式,并利用线性性质,我们可以将 V(z) 分解为两部分:

V(z) = max_{α ∈ Δ_L} { (Σ α_l v_l)^T z } + max_{d ∈ P∞} { d^T z }
  • 第一部分:是 z 在极点集上的最大内积,即 max_{l=1,...,L} { v_l^T z }。这是一个分段线性函数。
  • 第二部分:是 z 在回收锥 P∞ 上的最大内积。分析表明,这个函数只能取两个值:
    • 如果对于所有 d ∈ P∞ 都有 d^T z ≤ 0,则值为 0
    • 如果存在某个 d ∈ P∞ 使得 d^T z > 0,则值为 +∞

因此,第二部分实际上是集合 S = { z | d^T z ≤ 0, ∀ d ∈ P∞ } 的示性函数。集合 S 正是回收锥 P∞极锥

结合这两部分,我们得到 V(z) 的完整表达式:它是一个分段线性函数加上一个极锥的示性函数。并且,可以证明 V(z) 的定义域 dom V 正好等于 pos W

次梯度的概念

由于补偿函数是非光滑的(分段线性),我们需要使用次梯度来刻画其一阶性质。对于凸函数 f,在点 x0 处的次微分 ∂f(x0) 是所有满足以下次梯度不等式的向量 s 的集合:

f(x) ≥ f(x0) + s^T (x - x0), ∀ x

向量 s 称为 fx0 处的一个次梯度。

一个简单的例子是绝对值函数 f(x)=|x|

  • x>0 时,次微分 ∂f(x) = {1}
  • x<0 时,次微分 ∂f(x) = {-1}
  • x=0 时,次微分 ∂f(x) = [-1, 1]

可以看到,在不可微点(x=0),次微分是一个集合,而不仅仅是一个单点。

计算补偿函数 Q(x) 的次梯度

我们的最终目标是为第二阶段补偿函数 Q(x) = V(h - T x) 计算次梯度。根据链式法则和次微分的计算规则(在适当正则性条件下,如多面体函数满足),Qx0 处的次微分可以表示为:

∂Q(x0) = -T^T ∂V(h - T x0)

其中 ∂V(z0) 是函数 V 在点 z0 = h - T x0 处的次微分。

对于 V(z),其次微分有一个很好的表征:它等于在对偶问题 max { p^T z | W^T p ≤ q } 中,所有达到最大值的 p 所构成的凸包。即:

∂V(z0) = conv { p* | p* 是 max p^T z0, s.t. W^T p ≤ q 的解 }

一个重要的实践启示:当我们求解这个线性规划对偶问题以获得 Q(x0) 的值时,我们同时会得到一个最优解 p0。这个 p0 就是 ∂V(z0) 中的一个元素(一个次梯度)。因此,我们可以立即构造出 Qx0 处的一个次梯度:

s0 = -T^T p0 ∈ ∂Q(x0)

这意味着,每次我们评估补偿函数的值时,几乎可以“免费”获得它的一个次梯度信息,这对于设计基于梯度的优化算法极为有利。

期望补偿函数与有限分布情形

在实际的两阶段问题中,目标函数包含的是期望补偿 E[Q(x, ξ)]。当随机变量 ξ 具有有限分布(即只有有限个场景 K)时,期望补偿是各个场景下补偿函数的加权和:

E[Q(x)] = Σ_{k=1}^{K} p_k Q_k(x)

其中 p_k 是场景 k 的概率,Q_k(x) 是该场景下的补偿函数。

由于概率 p_k > 0,且每个 Q_k(x) 都是多面体函数,根据次微分的加法规则(在正权重下成立),期望补偿函数的次微分就是各个场景下次微分的加权和:

∂E[Q(x0)] = Σ_{k=1}^{K} p_k ∂Q_k(x0)

而每个 ∂Q_k(x0) 又可以通过求解对应场景 k 的对偶线性规划得到 p_{k0},然后计算 -T_k^T p_{k0}。因此,我们同样可以构造期望补偿函数的一个次梯度。

两阶段问题的完整形式与求解准备

综合以上,带有线性约束的两阶段随机规划问题形式如下:

min c^T x + E[Q(x)]
s.t. A x = b
     x ≥ 0

其中 E[Q(x)] 可能非光滑。我们现在知道,对于给定的 x0,如果问题可行(即对所有场景,第二阶段问题可行),我们不仅可以计算出目标函数值,还能获得其一个次梯度 c + s,其中 s ∈ ∂E[Q(x0)]

这为我们下一步应用求解非光滑优化问题的算法(例如次梯度法、束方法等)奠定了坚实的基础。算法的每次迭代中,在试探点 x 处,我们需要为每个场景求解一个线性规划(评估 Q_k(x)),收集次梯度信息,然后组合起来用于决定下一步的搜索方向。


本节课中我们一起学*了补偿函数的深入性质。我们证明了其定义域等于正象锥,并将其表达为分段线性函数与极锥示性函数之和。我们引入了次梯度的概念,并得到了一个关键结论:通过求解第二阶段问题的对偶线性规划,可以同步获得补偿函数的一个次梯度。最后,我们将结论推广到有限场景下的期望补偿函数,为下一讲研究最优性条件和设计求解算法做好了准备。

5:期望补偿函数的性质与可测性

在本节课中,我们将继续研究期望补偿函数。我们将探讨该函数被良好定义所需满足的性质,这里的“良好定义”特指依赖于随机变量的函数。我们还将复*一些数学家熟知,但工程师或计算机科学家可能不太熟悉的概念,例如可测性和概率空间。

课程概述与作业说明

首先,我们有一个关于作业的提醒和说明。在作业中,我们遇到了一些均值为0的正态分布,其第二个参数是9、6或16。根据不同的教材,第二个参数可能代表标准差或方差。在本课程中,我们将其固定为方差,即 σ²。

如果你已经完成了作业,可以尝试将第二个参数分别视为标准差和方差,观察不同随机规划模型求解方案的可靠性有何差异。直觉上,如果将其视为标准差,意味着场景的波动性更大,那么不同随机规划模型求解方案的可靠性可能会降低。特别是对于机会约束模型,其效果可能会更差,因为我们在评估第一阶段决策时使用的是期望值(即风险中性模型),并不太关心波动性。不过,这仅是直觉,你可以通过计算来验证。

补偿函数回顾

现在,让我们回到补偿函数,这是一个非常重要的函数,我们已经花了不少课时来讨论它。在合理的假设下(例如两个可行集非空),对于每个固定的 x 和每个不确定元素的实现值,第二阶段问题的原问题和对偶问题之间存在等价关系。

我们将补偿函数记为 V,它是某个集合的支撑函数,并与仿射变换 H - T x 复合。我们分析了函数 V 的次微分,它是对偶问题所有最优解及其凸组合的集合。

当我们在固定点 x₀ 处计算复合函数 V(H - T x) 的次微分时,每个独立补偿函数的次微分具有特定的形式。这是一个集合,如果对偶问题存在多个最优解,该集合将包含多个元素。

计算期望补偿函数的难点

当前的主要难点在于计算期望补偿函数的次微分。其复杂程度很大程度上取决于我们所取期望值的随机变量的支撑集。

  • 有限支撑集(场景):如果随机变量具有有限支撑集,即只有 K 个不同的场景,那么问题会简单很多。期望补偿函数就是各个场景下补偿函数的概率加权和,其次微分也相对容易处理。
  • 一般概率分布:如果随机变量服从一般的概率分布,情况则更为复杂和微妙。我们需要分析期望补偿函数何时是有限的,这取决于补偿问题的结构,即 T, H, Q, W 这四个元素中哪些是不确定的。这被称为补偿结构,不同的情况有不同的名称。这就是我们今天要重点学*的内容。

对于一般分布,首要问题是在概率空间环境下,函数是否被“良好定义”。这关系到避免出现“正无穷减负无穷”这类未定义的情况。

期望值的良好定义与可测性

考虑一个随机变量 ξ 的期望值 E[ξ]。要使其良好定义,需要满足两个条件:

  1. 可测性:函数 ξ 必须是可测的。这意味着我们可以“测量”或“计数”其取值。
  2. 避免无穷减无穷:我们需要确保在计算期望时不会出现“∞ - ∞”的情况。为此,我们引入正部和负部的概念。

对于任意实数 t,我们可以将其分解为:
t = t⁺ - t⁻
其中,正部 t⁺ = max(0, t),负部 t⁻ = max(0, -t)。两者都是非负的,并且有 |t| = t⁺ + t⁻

对于随机变量 ξ,其期望值 E[ξ] 良好定义的条件是:ξ 可测,并且 E[ξ⁺]E[ξ⁻] 中至少有一个是有限的。这样,在计算 E[ξ] = E[ξ⁺] - E[ξ⁻] 时,就不会出现未定义的“∞ - ∞”情况。ξ⁺ 的期望被称为期望盈余-ξ⁻ 的期望被称为期望短缺(为使短缺为正,我们通常考虑 -E[ξ⁻])。

可测性与概率空间基础

为了理解上述条件,我们需要回顾一下可测性的概念。

可测性是一种定义集合“大小”的方法。在 ℝⁿ 中:

  • 最基本的集合是区间(或超立方体),其测度就是各边长的乘积。它具有可加性:不相交区间的并集的测度等于各区间测度之和。
  • 对于更一般的闭有界集合,我们可以用一系列区间去“覆盖”它或“填充”它。覆盖测度的下确界与填充测度的上确界如果相等,则该集合是可测的。
  • 对于无界集合,我们通过将其与所有区间求交,转化为有界集合来处理。

在抽象的概率空间 Ω 中,我们类似地定义可测集 和概率测度 PΩ 的子集族(称为事件),满足:

  • 如果集合 A ∈ ℱ,则其补集 Aᶜ ∈ ℱ
  • 如果一系列集合 Aᵢ ∈ ℱ,则它们的并集 ∪ᵢ Aᵢ ∈ ℱ
    概率测度 P 是一个非负函数,满足 P(∅) = 0,并且对于两两不相交的可测集,其并集的概率等于各集合概率之和。

三元组 (Ω, ℱ, P) 构成了一个概率空间

随机向量是一个从概率空间 Ωℝⁿ 的映射 ξ: Ω → ℝⁿ,满足:对于 ℝⁿ 中的任何可测集 B,其原像 {ω ∈ Ω: ξ(ω) ∈ B}Ω 中的可测集(即属于 )。由 ξB 上诱导的概率就是原像事件的概率:P_ξ(B) = P({ω: ξ(ω) ∈ B})

示例:香蕉销售
假设我们有一箱香蕉,其质量(事件空间 Ω)包括:不可用、仅适合烹饪、适合生食(且生食中又分不同等级)。这些是质量属性,不是数字。我们可以定义一个随机变量 C,为每种质量分配一个数值(例如,不可用=0,仅适合烹饪=0.5,适合生食则根据外观、味道等子属性组合得分在1到8之间)。这个随机变量 C 将抽象的质量事件映射到了可测量的数值空间 ,从而帮助我们定价。这个例子说明了为什么我们需要抽象的概率空间 Ω,而不能简单地将一切数字化。

补偿结构:固定补偿

现在,我们回到期望补偿函数良好定义的条件,这取决于补偿结构。我们首先介绍最重要的一类:固定补偿

固定补偿意味着补偿矩阵 W 不是随机的,而是确定的、固定的。在我们之前的石油生产例子中,补偿矩阵就是固定的(单位阵和负单位阵),这是一个好的性质。

固定补偿下有几个重要的子类:

  1. 简单固定补偿:不仅 W 固定,而且其具有 [-I, I] 的特殊形式(对应原问题中添加了正负补偿变量将不等式化为等式),同时补偿成本 q 和技术矩阵 T 也是确定的。只有右端项 h(如需求)可以是随机的。我们之前的石油例子就属于此类。

  2. 完全固定补偿:这是一个确保对于每个 x 和几乎每个 ξ,补偿函数 Q(x, ξ) 都有限的条件。它等价于 W正象锥是整个空间 ℝᵐ。正象锥是指集合 {z ∈ ℝᵐ: z = W y, y ≥ 0}。如果这个锥是整个空间,意味着对于任何向量 h - T x,第二阶段原问题都是可行的,因此补偿函数不会出现无界的情况,从而总是有限的。

    命题:完全固定补偿等价于对偶可行集 D(q) = {π: Wᵀπ ≤ q} 的回收锥仅为 {0}(即有界)。

    • 证明思路:利用回收锥的定义和对偶理论。如果回收锥非零,则存在方向 d ≠ 0 使得 Wᵀ d ≤ 0。根据完全补偿定义,存在 y₀ ≥ 0 使得 W y₀ = d。那么 0 ≥ dᵀ W y₀ = dᵀ d = ||d||²,这迫使 d = 0,产生矛盾。反之亦然。

  1. 简单固定补偿总是完全的

    • 证明:对于简单固定补偿 W = [I, -I],其对偶可行集 D(q) 实际上是一个区间:[-q⁻, q⁺],其中 q⁺q⁻q 按对应 I-I 分块的部分。这是一个有界集,其回收锥为 {0}。根据上述命题,这意味着它是完全的。也可以直接从定义证明:任何 z ∈ ℝᵐ 都可以写成 z = y⁺ - y⁻(其中 y⁺, y⁻ ≥ 0),这正是 W y 的形式,所以正象锥是整个空间。

    这里引出了充分昂贵补偿的概念:为了使对偶可行集 D(q) 非空,需要满足 q⁺ + q⁻ ≥ 0。这被称为补偿是“充分昂贵”的,并不意味着所有分量都为正,只要总和非负即可(例如,在负利率环境下,只要贷款利息收入高于存款负利息成本,总和仍可能为正)。

  1. 相对完全固定补偿:这是最弱也是最难验证的条件。它只要求对于第一阶段可行的决策 x(即满足 Ax = b, x ≥ 0),补偿函数 Q(x, ξ) 对于几乎所有的 ξ 是有限的。也就是说,我们只关心在可行解上的性质。许多文献中直接假设此条件成立以简化分析。

示例分析

考虑一个简单的随机线性规划问题:

Minimize c x
subject to x = ω, x ≥ 0 (对于几乎所有的 ω ∈ Ω)

这类似于只有一种石油和一种汽油,且生产能力无限的情况。

其补偿模型引入补偿变量 y⁺, y⁻ 和补偿成本 q⁺, q⁻

Minimize c x + E[ q⁺ y⁺ + q⁻ y⁻ ]
subject to x + y⁺ - y⁻ = ω
           x, y⁺, y⁻ ≥ 0

两阶段形式的第一阶段是:min c x + φ(x), s.t. x ≥ 0,其中 φ(x) = E[Q(x, ω)],而第二阶段问题 Q(x, ω) 为:

Minimize q⁺ y⁺ + q⁻ y⁻
subject to y⁺ - y⁻ = ω - x
           y⁺, y⁻ ≥ 0

这是一个简单固定补偿问题(W = [1, -1]T=1q⁺, q⁻ 固定)。

特例:令 q⁺ = q⁻ = 1。此时,第二阶段问题等价于最小化 |ω - x|。因此,补偿函数 Q(x, ω) = |ω - x|,期望补偿函数 φ(x) = E[ |ω - x| ]

  • 有限支撑集:如果 ω 有有限个可能值 {ω₁, ..., ω_K},则 φ(x) = Σ_{k=1}^K p_k |ω_k - x|。这是一个分段线性凸函数(多面体函数),其次微分容易计算。
  • 连续分布:如果 ω 服从连续分布,我们需要分析 φ(x) 的性质。可以证明,如果 E[|ω|] < ∞,则 φ(x) 是 Lipschitz 连续的。
    • 证明:对于任意 x₁, x₂,有
      |φ(x₁) - φ(x₂)| ≤ E[ | |ω - x₁| - |ω - x₂| | ] ≤ E[ |x₁ - x₂| ] = |x₁ - x₂|
      因此,Lipschitz 常数为 1。

这个简单的例子涵盖了固定补偿下许多一般情况的性质,并且足够简单以便于分析。在下一节课中,我们将继续探讨当 ω 为连续分布时,如何计算该例子的次微分,并推广到更一般的情形。

本节课总结

在本节课中,我们一起学*了:

  1. 期望补偿函数需要满足可测性至少一个正部或负部期望有限的条件才能被良好定义。
  2. 回顾了可测性概率空间随机变量的基本概念,并通过香蕉销售的例子加深理解。
  3. 重点介绍了固定补偿结构及其子类:简单固定补偿完全固定补偿相对完全固定补偿。我们证明了简单固定补偿总是完全的,并了解了充分昂贵补偿的概念。
  4. 通过一个最小化绝对误差的简单示例,直观展示了补偿函数的形式,并分析了其在有限场景和连续分布下的性质,为后续课程中计算次微分奠定了基础。

下节课,我们将在此基础上,深入探讨连续分布情况下期望补偿函数的次微分计算。

6:连续分布与最优性条件

在本节课中,我们将学*连续分布下的补偿函数特性,并证明两阶段随机线性规划的最优性条件。

课程概述

上一节我们讨论了离散分布下的补偿函数,本节我们将探讨当不确定性服从连续分布时的情况。我们将看到,补偿函数会变得平滑,并学*如何推导随机线性规划的最优性条件。

概率空间与σ-代数

首先,我们需要澄清一个关于可测集类的重要概念。在概率空间中,我们有一个三元组 (Ω, ℱ, P),其中:

  • Ω 是样本空间。
  • 是可测集类,称为 σ-代数
  • P 是概率测度。

我之前提到 是一个“滤子”,这是不准确的。滤子概念适用于多阶段问题,其中不确定性是逐步揭示的。对于我们现在讨论的单阶段问题, 就是一个σ-代数。

连续分布下的补偿函数

为了说明补偿函数的所有性质,我们考虑一个简单的例子,它足以展示我们感兴趣的特性。

我们有一个随机等式约束,通过引入补偿变量 y⁺y⁻ 以及相应的补偿成本,我们将其转化为一个可处理的两阶段随机规划模型。对于每个一阶段决策变量 x 和不确定性的每个实现 ω,这变成了一个线性规划问题。

当补偿成本设为1时,补偿函数简化为绝对值函数 |ω - x|。在有限支撑集(离散分布)的情况下,期望补偿函数 φ(x) 是分段线性的凸函数,其不可微点(拐点)位于每个可能的 ω 值处。

核心问题:当 ω 服从连续分布时会发生什么?
变化在于,期望值不再是求和,而是关于概率测度的积分。

为了便于计算,我们使用累积分布函数 F(z) = P(ξ ≤ z)尾分布函数 F̄(z) = 1 - F(z) = P(ξ ≥ z) 来重写积分,这样我们就可以在实数域上进行积分。

示例:均匀分布

我们考虑补偿成本为1的情况,因此补偿函数为 |ω - x|。假设 ω 服从区间 [a, b] 上的均匀分布,例如 [0, 3]

我们将证明,期望补偿函数 φ(x) 是一个平滑的二次函数。具体形式如下:
φ(x) = (x² + (x - a)²) / (2(b - a))
a=0, b=3 时,函数简化为 φ(x) = x²/3

以下是证明所需的关键步骤和关系:

关键结果:对于一个取非负值的随机变量 ξ,其期望可以表示为:
E[ξ] = ∫₀^∞ P(ξ ≥ z) dz = ∫₀^∞ F̄(z) dz

应用到补偿函数:补偿函数可以分解为正部和负部:|ω - x| = (ω - x)⁺ + (x - ω)⁺。然后我们可以分别计算这两部分的期望。

对于区间 [a, b] 上的均匀分布,可以证明:

  • E[(ω - x₀)⁺] = ∫_{x₀}^b F̄(z) dz
  • E[(x₀ - ω)⁺] = ∫_a^{x₀} F(z) dz

将这两个期望相加,并对简单的被积函数进行积分,即可得到上述的二次函数 φ(x)

练*:请完成上述推导,证明均匀分布下的期望补偿函数公式。请在下次课前将解答发送至指定邮箱。

最优性条件

现在,我们转向最优性条件。我们有两阶段随机线性规划问题,其形式为:

最小化 cᵀx + E[Q(x, ξ)]
约束条件: x ∈ X, X = {x ≥ 0 | Ax = b}

其中 Q(x, ξ) 是第二阶段的补偿函数值。

最优性条件是一组不等式系统,任何点要成为该问题的最优解,都必须满足这些条件。这涉及到原问题的可行性,以及与第二阶段问题对偶形式相关的乘子。

理论基础

为了进行证明,我们需要一些独立于分布形式的基础结果。

1. 集合的示性函数及其次微分
集合 X 的示性函数 I_X(x) 定义为:在 X 内取值为0,否则为 +∞。如果 X 是非空闭凸集,则该示性函数是正常凸函数。

函数 f 在点 的次微分 ∂f(x̄) 是所有满足以下条件的向量 s 的集合:
f(x) ≥ f(x̄) + sᵀ(x - x̄), 对所有 x 成立。
对于示性函数,可以证明:如果 x̄ ∈ X,则其次微分就是集合 X 在点 处的法锥 N_X(x̄)

2. 多面体集合的法锥
对于我们的多面体集合 X = {x ≥ 0 | Ax = b},其在点 处的法锥具有特定形式:
N_X(x̄) = { ν ∈ Rⁿˣ | ν = -Aᵀμ - p, 其中 μ ∈ Rᵐ, p ≥ 0, 且 pᵀx̄ = 0 }
关系 pᵀx̄ = 0 称为互补松弛条件。

3. 凸函数的最优性条件
对于一个正常凸函数 f,点 是全局最小点的充要条件是:
0 ∈ ∂f(x̄)
这推广了可微函数中梯度为零的条件。

4. 次微分的加法规则 (Moreau-Rockafellar 定理)
对于两个正常凸函数 f1f2,在一定的约束规范下(例如函数为多面体函数,或它们定义域的内部有交集),有:
∂(f1 + f2)(x̄) = ∂f1(x̄) + ∂f2(x̄)

有限支撑集情况下的最优性条件

在有限支撑集(K个场景)的情况下,我们的目标函数 f(x) 可以分解为三部分:
f(x) = cᵀx + φ(x) + I_X(x)
其中 φ(x) = Σ_{k=1}^K p_k Q(x, ξ_k)

  • f1(x) = cᵀx 是线性函数,其次微分为单点集 {c}
  • f2(x) = φ(x) 是多面体凸函数(因为离散分布),其次微分为 Σ_{k=1}^K p_k ∂Q(x, ξ_k)。而 ∂Q(x, ξ_k) 可以通过线性规划对偶理论来描述。
  • f3(x) = I_X(x) 是多面体集合的示性函数,其次微分为法锥 N_X(x̄)

由于这三个函数都是多面体函数,我们可以应用 Moreau-Rockafellar 定理。因此, 是最优解当且仅当:
0 ∈ ∂f(x̄) = {c} + Σ_{k=1}^K p_k ∂Q(x̄, ξ_k) + N_X(x̄)

将法锥 N_X(x̄) 的具体形式 {-Aᵀμ - p} 代入,并利用 ∂Q(x̄, ξ_k) 的表达式,经过代数运算,我们可以得到以下等价的最优性条件:

定理:点 是两阶段随机线性规划问题的最优解,当且仅当存在乘子 p̄_k (对于每个场景 k) 和 μ̄,满足:

  1. 对偶可行性c ≥ Σ_{k=1}^K p_k T_kᵀ p̄_k + Aᵀμ̄
  2. 原问题可行性x̄ ∈ X,且 p̄_k 是第二阶段问题(对偶形式)在场景 k 下的最优解。
  3. 互补松弛x̄ᵀ (c - Σ_{k=1}^K p_k T_kᵀ p̄_k - Aᵀμ̄) = 0

这些条件类似于线性规划中的 Karush-Kuhn-Tucker (KKT) 条件。

连续分布情况下的最优性条件

对于连续分布,推导过程本质相同,但期望补偿函数 φ(x) 不再是多面体的。然而,在我们考虑的简单补偿(补偿矩阵为 [I, -I])等特定情况下,函数 φ(x) 具有全空间的定义域,这满足了 Moreau-Rockafellar 定理中定义域内部相交的条件,因此次微分的加法规则仍然成立。

主要区别在于,乘子 p 不再是一个有限维向量,而是一个依赖于场景 ω可测函数 p(ω)。最优性条件中的求和变成了关于概率测度的积分(期望)。

对于简单补偿的情况,最优性条件变为:

  1. c ≥ E[Tᵀ p(ω)] + Aᵀμ̄
  2. x̄ ∈ X,且对于几乎处处的 ωp(ω) 是对应第二阶段对偶问题的最优解。
  3. x̄ᵀ (c - E[Tᵀ p(ω)] - Aᵀμ̄) = 0

课程总结

本节课中,我们一起学*了:

  1. 澄清了概率空间中σ-代数与滤子的区别。
  2. 分析了连续分布(特别是均匀分布)下期望补偿函数的性质,证明了它会成为一个平滑的二次函数,并布置了相关的推导练*。
  3. 系统推导了两阶段随机线性规划的最优性条件。我们引入了示性函数、法锥、次微分和 Moreau-Rockafellar 定理等工具。
  4. 证明了在有限支撑集情况下,最优性条件可表述为涉及场景乘子的一组等式和不等式。
  5. 将结论推广到连续分布情况,指出此时最优乘子是一个可测函数,最优性条件以期望形式表达。

这些最优性条件不仅是理论分析的基础,也为设计求解算法(如基于梯度的算法、分解算法等)提供了关键洞察。

7:可交换性定理与可测性 🔄

在本节课中,我们将学*随机规划中的一个核心概念:可交换性。我们将探讨如何确保两阶段问题中的第二阶段价值函数是可测的,这是计算期望值并建立问题等价性的基础。课程将介绍特征函数的概念,并解释在何种条件下,我们可以安全地在期望和优化运算之间进行交换。


引言与问题背景

上一节我们讨论了两阶段随机规划问题的两种等价表述。现在,我们来看看这两种表述等价性背后的一个关键前提:第二阶段的优化问题必须产生一个可测的价值函数。

考虑一个广义的两阶段问题:

第一阶段:

\[\min_{x \in X} f(x) + \mathbb{E}[Q(x, \xi)] \]

第二阶段(对于给定的 \(x\) 和随机实现 \(\xi\)):

\[Q(x, \xi) = \min_{y} \{ g(y, x, \xi) : y \in S(x, \xi) \} \]

为了计算期望值 \(\mathbb{E}[Q(x, \xi)]\),函数 \(Q(x, \cdot)\) 必须是关于随机向量 \(\xi\) 可测的。然而,\(Q\) 本身是一个优化问题的最优值,其可测性并非自动成立。


一个反例:不可测的价值函数

为了理解问题的严重性,我们来看一个 \(Q\) 不可测的例子。

  • 设概率空间为 \([0,1]\),配备勒贝格测度。
  • 随机变量 \(\xi(\omega) = \omega\)
  • \(N \subset [0,1]\) 是一个不可测集(勒贝格测度理论中已知存在此类集合)。
  • 定义函数 \(g(y, \xi) = [\text{sgn}(y - \xi)]^2\),其中 \(\text{sgn}\) 是符号函数。
  • 考虑优化问题:\(Q(\xi) = \min_{y \in [0,1]} g(y, \xi)\)

分析表明,该问题的最优解和最优值为:

\[Q(\xi) = \begin{cases} 0, & \text{if } \xi \in N \\ 1, & \text{if } \xi \notin N \end{cases} \]

由于集合 \(N\) 不可测,函数 \(Q(\xi)\) 也不是可测函数。因此,期望值 \(\mathbb{E}[Q(\xi)]\) 没有定义。这个例子说明,我们需要对问题施加一些条件来保证 \(Q\) 的可测性。


特征函数与可测性保证

为了保证可测性,我们引入一类性质良好的函数:特征函数

定义(特征函数):
一个函数 \(h: \mathbb{R}^n \times \Xi \to \mathbb{R}\) 被称为特征函数,如果它满足:

  1. 对于每个固定的 \(x \in \mathbb{R}^n\),函数 \(h(x, \cdot)\) 是关于 \(\xi\) 可测的。
  2. 对于每个固定的 \(\xi \in \Xi\),函数 \(h(\cdot, \xi)\) 是关于 \(x\) 连续的(或几乎处处连续)。

特征函数是我们构建可测性理论的基础砖石。对于随机规划,我们通常要求目标函数 \(g(y, x, \xi)\) 和约束条件所定义的可行性对应关系 \(S(x, \xi)\) 都具有特征函数的性质。


核心定理:可交换性定理

基于特征函数的概念,我们有以下重要的可交换性定理

定理(可交换性):
假设:

  1. 函数 \(g(y, x, \xi)\) 和可行性映射 \(S(x, \xi)\) 的示性函数都是特征函数。
  2. 期望值 \(\mathbb{E}[\inf_{y \in S(x,\xi)} g(y, x, \xi)]\) 是有限的(即不为 \(+\infty\)\(-\infty\))。

那么,以下等式成立:

\[\inf_{y(\cdot) \in \mathcal{Y}} \mathbb{E}[g(y(\xi), x, \xi)] = \mathbb{E}[ \inf_{y \in S(x, \xi)} g(y, x, \xi) ] \]

其中 \(\mathcal{Y}\) 是所有可测函数 \(y(\xi)\) 的集合,且满足 \(y(\xi) \in S(x, \xi)\) 几乎必然成立。

此外,如果右边优化问题的最优解 \(y^*(\xi)\) 存在,那么它可以取为一个可测函数,并且它就是左边问题的一个最优解。


定理的意义与应用

这个定理是连接两阶段问题与单阶段紧凑形式问题的桥梁。

  • 等式的右边:是先对每个场景 \(\xi\) 求解第二阶段问题,再取期望。这对应两阶段问题的表述。
  • 等式的左边:是寻找一个可测的决策规则 \(y(\xi)\),直接最小化期望总成本。这对应单阶段紧凑形式问题的表述。

定理指出,在特征函数的假设下,这两种操作(求期望和求下确界)是可交换的,从而证明了两种问题表述的等价性。


线性随机规划中的应用

在线性两阶段问题中,可交换性定理的条件自然满足。

第二阶段问题(原问题):

\[Q(x, \xi) = \min_{y} \{ q(\xi)^\top y : W(\xi)y = h(\xi) - T(\xi)x, \ y \geq 0 \} \]

对应的对偶问题:

\[\max_{\pi} \{ \pi^\top (h(\xi) - T(\xi)x) : W(\xi)^\top \pi \leq q(\xi) \} \]

以下是验证过程:

  1. 目标函数\(g(y, x, \xi) = q(\xi)^\top y\)。固定 \(y, x\) 时,它是 \(q(\xi)\) 的线性组合,因此可测;固定 \(\xi\) 时,它是 \(y\) 的线性函数,因此连续。它是一个特征函数。
  2. 约束条件:可行性集合 \(S(x, \xi) = \{ y \geq 0: W(\xi)y = h(\xi) - T(\xi)x \}\) 的示性函数也是特征函数。
  3. 在通常的规范性条件下(例如原问题或对偶问题可行且有界),期望值是有限的。

因此,可交换性定理适用。特别地,该定理保证了拉格朗日乘子(对偶变量)\(\pi^*(\xi)\) 作为 \(\xi\) 的函数是可测的。这为我们之前课程中分析对偶问题和推导最优性条件提供了坚实的理论基础。


总结

本节课我们一起学*了随机规划中确保模型严谨性的核心内容:

  1. 可测性问题:两阶段问题第二阶段的價值函数 \(Q(x, \xi)\) 必须可测,其期望才有意义。我们通过一个反例看到了不可测性可能发生。
  2. 特征函数:我们引入了一类性质良好的函数——特征函数,它对于固定的第一个变量是可测的,对于固定的第二个变量是连续的。这是保证后续定理成立的关键假设。
  3. 可交换性定理:这是本节课的核心结果。该定理表明,在特征函数和有限期望的假设下,求期望运算和优化运算可以交换次序。这严格证明了两阶段问题与单阶段紧凑形式问题的等价性。
  4. 在线性问题中的应用:我们验证了线性随机规划问题天然满足可交换性定理的条件,因此其模型是良定义的,并且拉格朗日乘子具有可测性。

理解可交换性定理是深入理解随机规划模型基础的关键一步,它确保了我们在后续计算和分析中所操作的对象都是数学上良好定义的。

8:凸问题与对偶理论

在本节课中,我们将要学*凸优化问题的性质,特别是价值函数的凸性,并引入拉格朗日函数和对偶理论的核心概念。我们将从回顾两阶段问题开始,逐步深入到凸多函数、价值函数的凸性证明,以及拉格朗日乘子与次梯度的关系。

回顾与问题设定

上一讲我们研究了两阶段问题的一般形式。本节中,我们将聚焦于一类特殊的凸优化问题。

我们考虑如下形式的优化问题:
[
v(x) = \inf_{y} { g(y) : y \in G(x) }
]
其中,函数 ( g: \mathbb{R}^m \to \mathbb{R} ) 是凸函数,而 ( G: \mathbb{R}^n \rightrightarrows \mathbb{R}^m ) 是一个凸的多函数(multifunction)。这意味着对于任意 ( x_1, x_2 ) 和 ( t \in [0,1] ),有:
[
t G(x_1) + (1-t) G(x_2) \subseteq G(t x_1 + (1-t) x_2)
]
一个常见的例子是 ( G(x) = { y : c(y) \le x } ),其中 ( c ) 是凸函数。在线性两阶段问题中,( G ) 就是这种形式。

凸多函数及其性质

首先,我们需要理解凸多函数的定义及其重要性质。

凸多函数的一个关键性质是,其图像(graph)是凸集。多函数 ( G ) 的图像定义为:
[
\text{gph}(G) = { (x, y) \in \mathbb{R}^n \times \mathbb{R}^m : y \in G(x) }
]
命题:多函数 ( G ) 是凸的,当且仅当其图像 ( \text{gph}(G) ) 是凸集。

此外,如果多函数 ( G ) 是凸的,那么对于每个固定的 ( x ),集合 ( G(x) ) 也是凸集。但反过来不一定成立:即使每个 ( G(x) ) 都是凸集,多函数 ( G ) 本身也可能不是凸的。

价值函数的凸性

一个核心结论是,在 ( g ) 和 ( G ) 都是凸的假设下,价值函数 ( v(x) ) 也是凸函数。

命题:若 ( g ) 是凸函数,且 ( G ) 是凸多函数,则价值函数 ( v(x) ) 是凸函数。

证明概要:我们通过证明 ( v ) 的上镜图(epigraph)是凸集来证明其凸性。( v ) 的上镜图定义为:
[
\text{epi}(v) = { (x, \eta) \in \mathbb{R}^n \times \mathbb{R} : \eta \ge v(x) }
]
取 ( (x_1, \eta_1), (x_2, \eta_2) \in \text{epi}(v) ) 和 ( t \in [0,1] )。我们需要证明 ( (t x_1 + (1-t)x_2, t \eta_1 + (1-t)\eta_2) \in \text{epi}(v) ),即:
[
v(t x_1 + (1-t)x_2) \le t \eta_1 + (1-t) \eta_2
]
由于 ( \eta_i \ge v(x_i) ) 且 ( v(x_i) ) 有限,可知原问题在 ( x_i ) 处可行。利用 ( G ) 的凸性,可以构造出 ( t x_1 + (1-t)x_2 ) 处的一个可行点序列,其目标函数值收敛于 ( t v(x_1) + (1-t) v(x_2) ),从而完成证明。

次梯度与拉格朗日乘子

价值函数 ( v(x) ) 是凸函数,因此我们可以讨论其次梯度(subgradient)。假设在点 ( \bar{x} ) 处,( v ) 存在一个次梯度 ( -\bar{\mu} )(负号是为了后续方便),即:
[
0 \in \partial (v(\cdot) + (\cdot)^\top \bar{\mu}) (\bar{x})
]
这意味着 ( \bar{x} ) 是如下无约束问题的最优解:
[
\min_{z} { v(z) + z^\top \bar{\mu} }
]
由此可以推导出一些重要性质:

  1. ( \bar{\mu} \ge 0 )。
  2. 存在原问题 ( P(\bar{x}) ) 的一个极小化序列 ( {y^k} ),满足互补松弛条件:( \lim_{k \to \infty} (c(y^k) - \bar{x})^\top \bar{\mu} = 0 )。
  3. 该序列 ( {y^k} ) 也是拉格朗日函数 ( L(y, \bar{\mu}) = g(y) + (c(y) - \bar{x})^\top \bar{\mu} ) 的极小化序列。

如果原问题 ( P(\bar{x}) ) 存在最优解 ( \bar{y} ),那么上述性质可以加强。

定义(拉格朗日乘子):对于点 ( \bar{x} ) 和可行点 ( \bar{y} \in G(\bar{x}) ),称向量 ( \bar{\mu} \ge 0 ) 是一个拉格朗日乘子,如果:

  1. ( \bar{y} ) 是拉格朗日函数 ( L(y, \bar{\mu}) = g(y) + (c(y) - \bar{x})^\top \bar{\mu} ) 的极小解。
  2. 满足互补松弛条件:( (c(\bar{y}) - \bar{x})^\top \bar{\mu} = 0 )。

定理(次梯度与乘子的关系)

  • 如果 ( -\bar{\mu} ) 是 ( v ) 在 ( \bar{x} ) 处的一个次梯度,且 ( P(\bar{x}) ) 有最优解 ( \bar{y} ),那么 ( \bar{\mu} ) 是相应于 ( (\bar{x}, \bar{y}) ) 的一个拉格朗日乘子。
  • 反之,如果 ( \bar{\mu} ) 是相应于 ( (\bar{x}, \bar{y}) ) 的一个拉格朗日乘子,那么 ( -\bar{\mu} \in \partial v(\bar{x}) ),且 ( \bar{y} ) 是 ( P(\bar{x}) ) 的最优解。

对偶理论

基于拉格朗日函数,我们可以构建原问题的对偶问题。

定义对偶函数 ( \phi(\mu) ) 为拉格朗日函数关于原变量的下确界:
[
\phi(\mu) = \inf_{y} L(y, \mu) = \inf_{y} { g(y) + (c(y) - \bar{x})^\top \mu }
]
一个关键的等式揭示了其对偶性:
[
\phi(\mu) = \inf_{z \ge \bar{x}} { v(z) + (z - \bar{x})^\top \mu }
]
由此,我们得到弱对偶不等式:对于任意 ( \mu \ge 0 ),
[
\phi(\mu) \le v(\bar{x})
]
对偶问题是最大化对偶函数:
[
\max_{\mu \ge 0} \phi(\mu)
]
原问题最优值 ( v(\bar{x}) ) 与对偶问题最优值之差称为对偶间隙(duality gap)。

在凸优化中,我们有如下强对偶定理:

定理(强对偶):假设原问题 ( P(\bar{x}) ) 的最优值 ( v(\bar{x}) ) 有限(即下有界),并且存在一个严格可行点 ( \hat{y} )(即 ( c(\hat{y}) < \bar{x} )),那么:

  • 对偶问题有解。
  • 强对偶成立,即对偶间隙为零:( \max_{\mu \ge 0} \phi(\mu) = v(\bar{x}) )。
  • 此时,对偶问题的解集正是 ( v ) 在 ( \bar{x} ) 处的次梯度集合的相反数。

示例分析

以下是两个说明性的例子:

例1(无原问题解,但对偶间隙为零)
考虑问题 ( \min_{y \le x} -e^y )。

  • 原问题:对于任何 ( x ),( v(x) = 0 ),但无最优解(下确界无法取到)。
  • 拉格朗日函数:( L(y, \mu) = -e^y + (y-x)\mu )。
  • 对偶函数:当 ( \mu=0 ) 时,( \phi(0)=0 );当 ( \mu>0 ) 时,( \phi(\mu) = -\infty )。
  • 对偶问题:( \max_{\mu \ge 0} \phi(\mu) ) 的解为 ( \mu=0 ),最优值为0。
  • 结论:对偶间隙为零,但原问题无解。这符合强对偶定理,因为原问题最优值有限(为0)。

例2(存在对偶间隙)
考虑问题:
[
\min_{y} -y_1 \quad \text{s.t.} \quad y_2 \le x_1, \quad y_1 \le -y_2
]
定义 ( c(y) = (y_2, y_1 + y_2)^\top ),( \bar{x} = (x_1, 0)^\top )。

  • 可以验证,对于某些 ( \bar{x} ),原问题有最优解。
  • 然而,其拉格朗日函数在某些乘子 ( \mu ) 下,下确界为 ( -\infty )。
  • 对偶函数 ( \phi(\mu) \equiv -\infty ),对偶问题无有限解。
  • 结论:存在无限大的对偶间隙。这是因为该问题不满足强对偶定理中的严格可行条件(Slater条件)。

总结

本节课我们一起学*了凸优化问题的核心理论。

  1. 我们首先定义了凸多函数,并证明了在目标函数和多函数均为凸的条件下,价值函数 ( v(x) ) 也是凸的。
  2. 我们探讨了价值函数的次梯度与原始问题拉格朗日乘子之间的等价关系,这为理解最优解的灵敏度和边际成本提供了工具。
  3. 通过引入拉格朗日函数,我们构建了对偶问题,并介绍了弱对偶和强对偶定理。强对偶定理在凸问题满足一定约束品性(如Slater条件)时成立,保证了原问题与对偶问题最优值相等。
  4. 最后,通过两个例子,我们观察了对偶理论的不同情形:原问题无解但对偶间隙为零,以及原问题有解但存在对偶间隙。这些例子强调了约束品性在保证强对偶成立时的重要性。

这些概念是分析随机规划问题,特别是两阶段问题性质的基础。在下节课中,我们将应用这些工具来求解具体的优化问题。

9:对偶理论、最优性条件与*题讲解 📚

在本节课中,我们将回顾上一讲关于值函数和对偶问题的一些重要结论,并详细讲解一份*题集。我们将探讨在何种条件下对偶问题有解且不存在对偶间隙,并学*如何推导两阶段线性规划的最优性条件。


回顾:值函数与对偶问题

上一节我们介绍了以下形式的优化问题:

\[\begin{aligned} V(x) = \inf_{y} & \quad g(y) \\ \text{s.t.} & \quad c(y) \le x \end{aligned} \]

其中,函数 \(g\)\(c\) 都是凸函数。我们定义 \(V(x)\) 为该问题的最优值(使用下确界 \(\inf\) 是因为最小值可能不存在)。我们证明了值函数 \(V(x)\) 是凸函数,并研究了它的次梯度。

我们定义了对偶函数 \(D(\mu)\)

\[D(\mu) = \inf_{y} \{ g(y) + \mu^T (c(y) - x) \}, \quad \mu \ge 0 \]

对于固定的 \(x\),我们知道弱对偶性成立:\(D(\mu) \le V(x)\) 对所有 \(\mu \ge 0\) 成立。因此,我们可以考虑最大化对偶函数的问题,即对偶问题

\[\sup_{\mu \ge 0} D(\mu) \]

如果对偶问题有解,我们称其为对偶解。原始问题最优值 \(V(x)\) 与对偶问题最优值 \(\sup D(\mu)\) 之间的差值称为对偶间隙


关键结论:次梯度与对偶解的关系

本节中,我们来看看一个关键结论,它建立了值函数的次梯度与对偶解之间的联系。

假设在点 \(x\) 处,值函数 \(V\) 存在一个次梯度 \(\xi \in \partial V(x)\),并且对偶间隙为零(即 \(\sup_{\mu \ge 0} D(\mu) = V(x)\))。那么,我们可以证明 \(-\xi\) 就是对偶问题的一个解。反之亦然:如果 \(\bar{\mu}\) 是对偶问题的一个解且对偶间隙为零,那么 \(-\bar{\mu} \in \partial V(x)\)

证明思路简述

  1. 由次梯度定义和零对偶间隙假设,可以推导出 \(-\xi\) 使得对偶函数达到其上确界。
  2. 反之,由对偶解 \(\bar{\mu}\) 和零对偶间隙,可以验证 \(-\bar{\mu}\) 满足次梯度不等式。

这意味着,在对偶间隙为零的假设下,对偶问题的解集正好是值函数次微分集合的负值:\(\{ \mu^* \} = -\partial V(x)\)。这个结论非常通用,不依赖于原始问题或对偶问题解的存在性。


保证解存在的条件:Slater条件

上一节我们介绍了次梯度与对偶解的关系,本节中我们来看看在什么条件下能保证对偶问题有解且对偶间隙为零。这需要更强的假设。

定理:假设对于某个 \(x\),存在一个点 \(\bar{y}\) 满足严格的约束条件(Slater条件):\(c(\bar{y}) < x\)(分量严格小于)。同时假设原始问题最优值 \(V(x)\) 是有限的(即问题可行且目标函数在可行域上有下界)。那么,存在一个包含 \(x\) 的开球 \(B\),使得:

  1. 对所有 \(z \in B\),值函数 \(V(z)\) 是有限值。
  2. 因此,\(V\)\(B\) 内每一点都是次可微的,特别地,在 \(x\) 点存在次梯度。
  3. 结合之前的结论,这意味着对偶问题在 \(x\) 点有解,且对偶间隙为零。
  4. 更进一步,次微分 \(\partial V(x)\) 是紧集,因此对偶解集也是紧的。

证明概要

  1. 由 Slater 条件 \(c(\bar{y}) < x\),可知存在一个小球 \(B(\bar{y}, \epsilon)\),使得其中所有点 \(y\) 都满足 \(c(y) < x\)
  2. 可以证明,在这个小球内,值函数 \(V(z)\) 不会是 \(+\infty\)(因为存在可行点),也不会是 \(-\infty\)(利用凸函数的性质,如果某点值为 \(-\infty\),会导致矛盾)。
  3. 因此 \(V\) 在该区域内取有限值。凸函数在定义域内部每一点都是次可微的。
  4. 次梯度的存在与零对偶间隙假设,直接引向对偶解的存在性。

这个定理非常重要,因为它给出了保证对偶理论“运行良好”(即对偶问题有解且无间隙)的实用充分条件。


*题讲解

以下是课程中涉及的*题要点解析。

*题1:两阶段线性规划的最优性条件

考虑随机向量 \(\xi\) 具有有限支撑集的两阶段线性规划问题。利用其单阶段等价形式,推导两阶段问题的最优性条件。

要点

  1. 由于 \(\xi\) 具有有限支撑,两阶段问题可以等价写为一个大型线性规划(单阶段形式)。
  2. 对这个线性规划写出其 Karush-Kuhn-Tucker (KKT) 条件。
  3. 关键步骤是,将单阶段问题中与第二阶段约束相关的乘子 \(\lambda_k\) 设为 \(\lambda_k = p_k \pi_k\),其中 \(p_k\) 是场景 \(k\) 的概率。
  4. 经过代入和整理,KKT 条件会自然分解为与第一阶段决策相关的条件,以及一系列与每个场景 \(k\) 对应的、类似于第二阶段问题最优性的条件。这就得到了两阶段问题的联合最优性条件。

*题2:相对完全追索与有限支撑

证明:当随机成本向量 \(\xi\) 具有有限支撑时,“相对完全追索”性质等价于要求:对于支撑集中的所有实现值,第二阶段问题都是可行的。

解释

  • “相对完全追索”要求:对于几乎所有的随机实现,第二阶段问题可行。
  • \(\xi\) 具有有限支撑时,“几乎所有”等价于“支撑集中的每一个”,因为每个实现都有正概率。
  • 因此,两个陈述等价。

*题3:完全追索的等价刻画

证明以下关于矩阵 \(W\)(第二阶段约束矩阵)的陈述等价:
a) 问题具有完全追索:\(\{ Wy : y \ge 0 \} = \mathbb{R}^m\)
b) 对偶可行集 \(\{ \pi : W^T\pi \le q \}\) 对所有 \(q\) 有界。
c) 系统 \(W^T\pi \le 0\) 只有零解 (\(\pi=0\))。

证明思路

  • (a) => (b): 反证法。假设对偶集无界,则存在一个方向 \(\rho\)(范数为1)使得 \(W^T\rho \le 0\)。利用完全追索,存在 \(y\ge0\) 使 \(Wy = \rho\),从而推出 \(\|\rho\|^2 \le 0\),矛盾。
  • (b) => (c): 若存在非零 \(\hat{\pi}\) 满足 \(W^T\hat{\pi} \le 0\),则对任意 \(t>0\)\(\pi + t\hat{\pi}\) 都在对偶可行集中,导致集合无界,与(b)矛盾。
  • (c) => (a): 反证法。假设 \(\{Wy: y\ge0\}\) 不等于 \(\mathbb{R}^m\),它是一个闭凸锥。利用强分离定理,可以找到一个非零向量 \(\alpha\) 分离该锥与一个不在其中的点,最终推导出 \(W^T\alpha \le 0\)\(\alpha \ne 0\),与(c)矛盾。

*题4:可微性与唯一对偶解

证明:如果对偶问题有唯一解,则值函数 \(V(x)\) 在该点是可微的,且其梯度等于负的对偶解。

解释

  • 凸函数在某点可微,当且仅当其次微分在该点是单点集。
  • 已知在对偶间隙为零时,对偶解集 \(-\partial V(x)\)
  • 因此,对偶解唯一等价于 \(\partial V(x)\) 是单点集,从而 \(V(x)\) 可微,且 \(\nabla V(x) = -\mu^*\)

*题5:对偶解的可测性

考虑一个线性第二阶段问题,其最优解和最优对偶解依赖于随机向量 \(\xi\)。证明最优对偶乘子可以表达为一个可测函数。

要点

  • 对偶问题本身是一个线性规划,其最优解可以在有限个极端点(由约束矩阵决定)中选取。
  • 我们可以定义一个“最优值选择函数”,例如,在多个最优解中选取范数最小的一个。这个选择过程是确定性的。
  • 由于目标系数 \(q(\xi)\) 和右端项 \(h(\xi)-T(\xi)x\) 都是 \(\xi\) 的可测函数,而上述选择规则是连续的(在可测函数上操作),最终得到的对偶解 \(\pi(\xi)\) 也是 \(\xi\) 的可测函数。

*题6 & 7:方差最小化问题的对偶

*题6涉及一个更复杂的向量值情况,其证明需要更强的定理。*题7则纠正了一个笔误(转置符号的位置),并验证了一个方差最小化问题的对偶形式。核心是利用方差定义 \(\text{Var}(\eta) = \mathbb{E}[(\eta - \mathbb{E}[\eta])^2]\) 进行展开,由于第一阶段决策 \(x\) 是确定的,可以提出期望算子,最终得到指定的对偶问题形式。

*题8:参考书目

关于风险约束的讨论,可以参考 Shapiro, Dentcheva, Ruszczyński 的著作《Lectures on Stochastic Programming》中的相关章节。


总结

本节课中我们一起学*了:

  1. 对偶理论的核心关系:在零对偶间隙的假设下,值函数的次梯度与对偶问题的解互为相反数。
  2. 解存在的保证:Slater 条件(存在严格可行解)和值函数有限,能保证在对偶问题有紧致的解集且无对偶间隙。
  3. 应用与练*:我们将这些理论应用于两阶段线性规划,推导了其最优性条件,并讲解了一系列*题,涵盖了完全追索的等价刻画、对偶解的唯一性与值函数可微性的关系,以及对偶解的可测性等重要概念。
    这些内容为分析和求解随机规划问题奠定了坚实的对偶理论基础。

10:两阶段随机规划算法入门 🚀

在本节课中,我们将开始学*用于求解两阶段随机规划问题的算法。我们将首先介绍算法的基本概念,然后重点讨论在“相对完全追索”假设下的算法设计。课程内容将涵盖从简单的次梯度法到更复杂的割平面法,并解释它们在随机规划背景下的应用。

算法设置与基本概念

上一节我们回顾了两阶段随机规划问题的模型。本节中,我们来看看求解这类问题的算法设置。

我们考虑具有有限个场景的两阶段线性随机规划问题。假设对于任何第一阶段决策变量 x,以及所有可能的不确定性实现(场景),第二阶段的追索问题都是可行的。这被称为“相对完全追索”假设。

问题的标准形式如下:

第一阶段:

minimize c^T x + E[Q(x, ξ)]
subject to Ax = b, x >= 0

第二阶段(对于每个场景 s):

Q(x, ξ_s) = minimize q_s^T y_s
subject to W_s y_s = h_s - T_s x, y_s >= 0

其中,ξ_s 代表第 s 个场景的不确定性参数。

追索函数与次梯度

在算法中,一个关键步骤是计算追索函数 Q(x, ξ_s) 及其关于 x 的次梯度。

对于每个场景 s,追索问题的对偶形式为:

maximize p_s^T (h_s - T_s x)
subject to W_s^T p_s <= q_s

p_{s,k} 是在点 x_k 处求解上述对偶问题得到的最优乘子。那么,向量 -T_s^T p_{s,k} 就是追索函数 Q(·, ξ_s) 在点 x_k 处的一个次梯度。

因此,期望追索函数 φ(x) = E[Q(x, ξ)] 在点 x_k 处的一个次梯度 γ_k 可以通过对所有场景的次梯度进行概率加权平均得到:

γ_k = Σ_s π_s * (-T_s^T p_{s,k})

其中 π_s 是场景 s 的概率。

这意味着,每次我们在一个试验点 x_k 求解所有第二阶段的子问题后,不仅能得到函数值 φ(x_k),还能“免费”获得一个次梯度 γ_k。这个信息将成为我们设计优化算法的核心。

优化算法与“黑箱”模型

现在,我们将问题简化为最小化一个凸的、非光滑的函数 f(x) = c^T x + φ(x)。我们假设拥有一个“黑箱”(或称预言机),对于任何输入点 x,它都能返回函数值 f(x) 和一个次梯度 g ∈ ∂f(x)

对于两阶段随机规划,这个黑箱的工作流程是:

  1. 输入第一阶段决策 x
  2. 并行求解所有场景 s 的第二阶段线性规划(对偶问题),得到最优乘子 p_s
  3. 计算 f(x) = c^T x + Σ_s π_s * (p_s^T (h_s - T_s x))
  4. 计算次梯度 g = c + Σ_s π_s * (-T_s^T p_s)
  5. 返回 f(x)g

一个合格的算法应该能够利用这些黑箱返回的信息,生成一个迭代序列 {x_k},使其收敛到原问题的最优解,并且拥有可靠的停止准则

次梯度方法及其局限性

首先,我们审视一种最简单直接的算法:次梯度法。以下是该方法的步骤:

  1. 选择一个初始点 x_0,设定迭代索引 k = 0
  2. 调用黑箱,在 x_k 处获取函数值 f_k 和次梯度 g_k
  3. 计算新的迭代点:x_{k+1} = x_k - t_k * (g_k / ||g_k||)
  4. k = k + 1,返回第2步。

其中,t_k > 0 是步长。为了保证收敛,步长序列需要满足以下条件:

Σ_{k=0}^∞ t_k = ∞ 且 Σ_{k=0}^∞ t_k^2 < ∞

一个经典的例子是 t_k = 1/(k+1)

尽管次梯度法结构简单且易于实现,但它存在几个严重缺陷:

  • 缺乏可靠的停止准则:在非光滑最优点,次梯度可能不为零(例如,对于 f(x)=|x|x=0 处,次梯度可以是 [-1, 1] 内的任何值)。因此,像 ||g_k|| < ε 这样的光滑优化常用停止条件会失效。
  • 非单调性:移动方向 -g_k 不一定是下降方向,函数值 f(x_k) 可能震荡,收敛速度慢。
  • 理论条件与实现的矛盾:收敛性理论要求步长平方和有限但步长和无限,这在有限精度的计算机上难以严格满足。
  • 信息利用不足:算法完全忽略了黑箱提供的函数值信息 f_k

因此,虽然次梯度法在某些情况下可用,但它并非求解两阶段随机规划的高效可靠工具。

割平面法(L-Shaped 方法)🚀

为了克服次梯度法的缺点,我们引入一类更强大的算法:割平面法。其核心思想是利用黑箱信息构建目标函数 f(x) 的*似模型,然后通过优化这个模型来指导搜索。

模型构建

在每次迭代 k,我们在点 x_k 调用黑箱,得到一个线性逼*(或称“割”):

f(x) ≥ f(x_k) + g_k^T (x - x_k) 对于所有 x

由于 f 是凸函数,该不等式始终成立。

随着迭代进行,我们收集到一系列这样的线性不等式。在迭代 k,我们构建一个分段线性的下*似模型 m_k(x)

m_k(x) = max_{i=0,...,k} [ f(x_i) + g_i^T (x - x_i) ]

这个模型满足 m_k(x) ≤ f(x) 对所有 x 成立,并且随着 k 增大,模型在最优解附*越来越接*真实函数 f(x)

算法步骤

基于该模型的割平面算法步骤如下:

  1. 选择初始点 x_0,设定 k = 0。模型初始为空或包含一个初始割。
  2. 调用黑箱,在 x_k 处获取 (f_k, g_k)
  3. 将新的线性不等式(割) f ≥ f_k + g_k^T (x - x_k) 加入到模型中。
  4. 通过求解一个主问题来最小化当前模型,得到新的试验点 x_{k+1}
    minimize r
    subject to r ≥ f(x_i) + g_i^T (x - x_i), i = 0, ..., k
           x ∈ X (第一阶段可行域,如 Ax=b, x≥0)
    
    其中 (r, x) 是决策变量。这是一个线性规划问题。
  5. 检查停止条件(例如,f(x_k) - m_k(x_{k+1}) < ε,即真实函数值与模型最优值的间隙足够小)。
  6. k = k + 1,返回第2步。

优势与特点

与次梯度法相比,割平面法具有显著优势:

  • 拥有自然的停止准则:可以通过上界(当前最好函数值 f(x_k))和下界(模型最优值 m_k(x_{k+1}))的间隙来判断收敛。
  • 充分利用信息:算法使用了所有历史迭代点的函数值和次梯度信息。
  • 处理约束方便:第一阶段约束 X 可以直接加入主问题的线性规划中,无需复杂投影。
  • 有限终止性:对于像两阶段随机规划产生的分段线性凸函数,割平面法可以在有限步内找到精确最优解(因为最终模型会与真实函数在最优解处重合)。这正是 L-Shaped 方法 应用于随机线性规划时的核心原理。

当然,割平面法也有其代价:每次迭代需要求解一个规模逐渐增大的线性规划(主问题)。管理这个不断增长的问题需要技巧,例如有效的割管理策略,这是更高级算法(如捆绑法)要解决的问题。

总结

本节课中我们一起学*了两阶段随机规划算法的入门知识。

我们首先明确了在相对完全追索假设下的算法设置,并指出通过求解第二阶段子问题可以同时获得期望追索函数的函数值和次梯度。接着,我们介绍了两种利用该“黑箱”信息的算法范式。

我们分析了次梯度法,它虽然简单,但存在缺乏可靠停止准则、收敛慢、非单调等固有缺陷,使其在实际应用中不够鲁棒。

随后,我们重点讲解了割平面法(L-Shaped 方法)。该方法通过积累历史信息构建目标函数的下*似模型,并通过求解一系列线性规划主问题来逼*最优解。该方法能提供可靠的停止准则,充分利用信息,并能精确求解分段线性的随机规划问题,是求解两阶段随机线性规划的有效且经典的方法。

下一讲中,我们将继续深入,探讨如何处理更一般的情况(非相对完全追索),并介绍更高效的算法变种。

11:切割平面法与L形方法

概述

在本节课中,我们将继续探讨求解非光滑问题的有效方法。我们将特别关注两阶段随机线性规划问题,并学*如何应用切割平面法。我们将详细介绍切割平面法的原理、实现步骤,以及如何将其专门应用于两阶段随机线性规划问题,即L形方法。


回顾:为什么需要更好的方法?

上一节我们介绍了次梯度方法,它虽然易于实现,但在求解精度要求较高的问题时往往不够理想。除非您对相对不精确的解感到满意,否则在组合优化以外的场景中,次梯度方法通常不是最佳选择。

本节我们将考虑在紧致多面体集合 X 上最小化凸函数 f(x) 的问题,这正好对应我们的两阶段随机线性规划模型。我们假设无法显式地知道函数 f,但有一个“预言机”可用。对于每个迭代点 x_i,预言机可以提供函数值和一个次梯度。

基于此信息,我们可以为凸函数定义一个线性*似(或称“切割”)。在点 x_i 处,该线性*似与 f 相切,并且由于 f 是凸函数,该线性*似始终位于 f 的下方。所有这类切割平面的最大值构成了一个凸函数模型 M,它从下方支撑着 f 的图像。

随着迭代进行,我们会引入越来越多的线性*似。具体来说,在第 k+1 次迭代,模型 M_{k+1} 是当前模型 M_k 与最新线性*似的最大值。随着 k 增大,模型变得越来越紧致,越来越接*原函数。

那么,如何引入新的线性*似呢?我们只需最小化当前模型 M_k,得到下一个迭代点 x_{k+1}。这个过程称为切割平面法


切割平面法的工作原理

我们无法直接求解原最小化问题,因为我们不知道 f。因此,我们迭代地最小化一个不断改进的模型。

以下是该方法的图形化理解:

  1. 第一次迭代,我们得到第一个线性*似(切割),并最小化它得到 x_2
  2. x_2 处调用预言机,得到新的函数值和次梯度,定义第二条切割线。
  3. 新模型是前两条切割的最大值,它形成了一个“V”形下界。最小化此模型得到 x_3
  4. 重复此过程,每次迭代都添加一条新的切割,模型变得越来越紧致,最终在最小值附*,模型会与原函数重合(对于分段线性函数尤其如此)。

该方法的一个优点是,模型在迭代点处的值序列是单调递增的,并趋向于 f 的最小值。

然而,该方法也有一个缺点:函数值序列 f(x_k) 并不是单调下降的。在接*最优解时,新添加的切割可能非常平缓,导致下一个迭代点的函数值反而增大,从而产生振荡,这对收敛性是不利的。


可实现的停止准则

与次梯度方法相比,切割平面法的一个重大改进是它提供了可实现的停止准则。

在每次迭代中,我们最小化模型得到 x_{k+1}。我们调用预言机得到 f(x_{k+1}),同时我们也知道模型在该点的值 M_k(x_{k+1})。由于模型始终在函数下方,它们的差值:
Δ_k = f(x_{k+1}) - M_k(x_{k+1}) ≥ 0
我们称之为预测下降量

随着模型越来越接*函数,这个差值在极限处会趋于零。因此,我们可以设置一个容差 ε > 0,当 Δ_k < ε 时停止迭代。所有量都是可计算的,这使得算法真正可实施。


算法伪代码

以下是切割平面法的基本步骤:

  1. 选择初始点 x_1 ∈ X
  2. 初始化迭代计数器 k = 1,初始模型 M_1(x) = -∞
  3. 循环开始
    a. 在点 x_k 调用预言机,获得 f_k = f(x_k)g_k ∈ ∂f(x_k)
    b. 更新模型:M_k(x) = max{ M_{k-1}(x), f_k + g_k^T (x - x_k) }。(对于k=1,就是第一个线性*似)
    c. 最小化模型:x_{k+1} = argmin_{x ∈ X} M_k(x)
    d. 计算预测下降量 Δ_k = f(x_{k+1}) - M_k(x_{k+1})
    e. 如果 Δ_k < ε,则停止。
    f. 否则,令 k = k + 1,继续循环。


收敛性证明要点

切割平面法的收敛性基于以下关键性质和假设:

  1. 函数 f 是凸的,定义域为 R^n(不是扩展实数)。
  2. 集合 X 是凸且紧致(有界闭集)的。紧致性保证了迭代序列有界,且函数 fX 上是 Lipschitz 连续的,其次梯度有全局上界。
  3. 模型值序列 {M_k(x_{k+1})} 单调递增且有上界(上界为 fX 上的最小值 )。

通过反证法可以证明,模型值序列的极限就是 ,并且函数值记录(即历史迭代中的最小函数值)也收敛到


应用于两阶段随机线性规划:L形方法

现在,我们将切割平面法具体应用到两阶段随机线性规划问题中,这种方法被称为 L形方法。名称来源于问题扩展后约束矩阵的块状结构像字母“L”。

我们考虑具有固定追索权矩阵 W 和相对完全追索的两阶段问题。这意味着对于任何一阶段可行决策 x,二阶段问题总是有可行解(即追索函数 Q(x, ξ) 总是有限值)。

追索函数的切割

在一阶段,我们需要最小化 c^T x + Φ(x),其中 Φ(x) = E[Q(x, ξ)]。我们不知道 Φ,但可以为其构建切割模型。

在迭代点 x_k,我们对每个场景 ξ_s 求解二阶段线性规划(或其对偶),得到最优值 Q(x_k, ξ_s) 和对偶乘子 π_{k,s}。对于追索函数 Q,其关于 x 的次梯度为 -T_s^T π_{k,s}

因此,对于 Φ 的切割(称为最优性切割)为:
Φ(x) ≥ (Σ_s p_s Q(x_k, ξ_s)) + (Σ_s p_s (-T_s^T π_{k,s}))^T (x - x_k)
其中 p_s 是场景 s 的概率。

我们将这个切割添加到一阶段问题的模型中。一阶段问题变为一个线性规划,其形式如下:

min  c^T x + θ
s.t. Ax = b, x ≥ 0
      θ ≥ (Σ_s p_s Q(x_i, ξ_s)) + (Σ_s p_s (-T_s^T π_{i,s}))^T (x - x_i), 对于所有已生成最优性切割的迭代 i

这里引入辅助变量 θ 来*似 Φ(x)


处理不可行点:可行性切割

上述讨论假设了相对完全追索。如果某个一阶段决策 x_k 导致某个场景 s 下的二阶段问题不可行(即 Q(x_k, ξ_s) = +∞),则无法构造最优性切割。

此时,我们需要生成可行性切割,将 x_k 这类点从一阶段可行域中切除。

我们为每个场景定义一个“可行性函数” U_s(x),它衡量二阶段问题不可行的“程度”。通常通过求解一个松弛的二阶段问题来获得,例如最小化约束违反的 L1 范数:

U_s(x) = min  ||z||_1
         s.t. W y + z = h_s - T_s x
              y ≥ 0

其中 z 是松弛变量。如果 x 对场景 s 可行,则 U_s(x) = 0;否则 U_s(x) > 0

求解此问题的对偶,可以得到乘子 η_{k,s}。可行性切割的形式为:
0 ≥ (h_s - T_s x_k)^T η_{k,s} + (-T_s^T η_{k,s})^T (x - x_k)
这个约束确保了新点 x 必须使 U_s(x) ≤ 0,即迫使 x 对场景 s 可行。


完整的L形方法算法

结合最优性切割和可行性切割,完整的L形方法迭代步骤如下:

  1. 初始化。设置迭代计数器 k=0。初始主问题只有一阶段约束:min c^T x + θ, s.t. Ax=b, x≥0。无最优性切割,故可设 θ = -∞ 或一个很大的负下界。
  2. 求解主问题:求解当前的主问题线性规划,得到当前一阶段解 (x_k, θ_k)
  3. 检查停止准则:通常检查最优性切割的松弛变量或 θ_k 与对 Φ(x_k) 的估计是否足够接*。
  4. 子问题求解与切割生成
    • 对于每个场景 s,用 x_k 求解二阶段问题。
    • 如果所有场景都可行:则得到最优值 Q(x_k, ξ_s) 和乘子 π_{k,s}。计算期望值 Φ̄_k = Σ_s p_s Q(x_k, ξ_s) 和次梯度 G_k = Σ_s p_s (-T_s^T π_{k,s})。生成最优性切割:θ ≥ Φ̄_k + G_k^T (x - x_k),加入主问题。
    • 如果某个场景 s 不可行:则求解该场景的可行性问题,得到乘子 η_{k,s}。生成可行性切割:0 ≥ (h_s - T_s x_k)^T η_{k,s} + (-T_s^T η_{k,s})^T (x - x_k),加入主问题。
  5. 更新与循环k = k+1,返回步骤2。


总结

本节课我们一起学*了求解非光滑凸优化问题的切割平面法,并深入探讨了其在两阶段随机线性规划中的具体应用——L形方法。

我们了解到:

  • 切割平面法通过迭代构建并最小化目标函数的分段线性下*似模型来工作。
  • 它提供了可计算的预测下降量作为停止准则,优于次梯度方法。
  • 当应用于具有固定追索权矩阵的两阶段随机线性规划时,该方法演变为 L形方法
  • L形方法需要处理追索问题可能不可行的情况,因此引入了两种切割:
    • 最优性切割:*似期望追索函数 Φ(x)
    • 可行性切割:确保一阶段决策 x 对所有场景都是二阶段可行的。
  • 在适当假设下(如使用单纯形法求解子问题),L形方法具有有限步终止的性质。

L形方法是求解大规模两阶段随机线性规划的基础且实用的算法。在下一讲中,我们将可能探讨该方法的变体、加速技巧以及具体的实现案例。

12:两阶段方法的实现问题 🎯

在本节课中,我们将学*两阶段随机规划方法(特别是L形方法)的实现细节。我们将回顾核心概念,探讨多割线变体,并介绍一个具体的应用案例——现金匹配问题。

回顾两阶段模型与分解方法

上一节我们介绍了随机规划的基本框架,本节中我们来看看如何具体实现两阶段方法。

我们考虑带有补偿的两阶段模型,其中第一阶段的决策变量为 x,第二阶段的决策变量为 y_s 对应每个场景 s。我们需要解决如下形式的问题:

minimize c^T x + E[Q(x, ξ)]
subject to x ∈ X

其中,Q(x, ξ) 是第二阶段的补偿函数。即使我们使用场景表示不确定性,这本质上也是一个大型线性规划问题。当场景数量很多时,直接求解会变得非常困难。

因此,实践中的关键在于使用分解方法,将一个大问题的求解替换为一系列更小子问题的连续求解。这种分解只有在子问题比原问题容易得多时才有意义。

补偿函数与割平面模型

在补偿函数 Q(x) 无法解析表达,只能通过“黑箱”获取其值和次梯度信息的情况下,L形方法使用一个模型来*似这个函数。这个模型就是割平面模型

我们用一个额外的标量变量 θ 来表示这个模型,它是过去所有最优性割的最大值:

θ ≥ α_i + β_i^T (x - x_i)   for i ∈ I

其中,I 是过去所有迭代的集合,在这些迭代中 x_i 位于补偿函数 Q 的定义域内。系数 α_iβ_i 通过对每个场景的第二阶段子问题求解对偶问题得到。

如果某个迭代点 x_i 对于至少一个场景不在补偿函数的定义域内(即第二阶段的某个子问题不可行),我们就需要生成可行性割。可行性割用于限制主问题中 x 的搜索范围,使其位于补偿函数的定义域内,该定义域是多面体。

因此,在每次迭代中,主问题(Master Problem)是一个线性规划:

minimize c^T x + θ
subject to:
    x ∈ X
    θ ≥ α_i + β_i^T (x - x_i)   for i ∈ I_optimal
    β_i^T (x - x_i) ≤ α_i        for i ∈ I_feasibility

其中,I_optimalI_feasibility 分别对应生成过最优性割和可行性割的迭代集合。

多割线变体

现在,我们来看看L形方法的一个变体——多割线方法。其核心思想源于目标函数 f(x) 可以分解为多个凸函数之和这一结构。

假设 f(x) = f1(x) + f2(x)。在标准的割平面法中,我们为整个函数 f 建立一个模型 M_k(x)。然而,利用可加性结构,我们可以为每个分量函数分别建立更精确的模型。

以下是两种建模方式的对比:

  • 聚合模型(单割线)M_k(x) = max_{i≤k} [ f_i + g_i^T (x - x_i) ]
  • 多割线模型M1_k(x) + M2_k(x),其中
    • M1_k(x) = max_{i≤k} [ f1_i + g1_i^T (x - x_i) ]
    • M2_k(x) = max_{i≤k} [ f2_i + g2_i^T (x - x_i) ]

由于最大值之和大于等于和的最大值,我们有 M_k(x) ≤ M1_k(x) + M2_k(x) ≤ f(x)。这意味着多割线模型比单割线模型更紧,理论上可能带来更好的收敛性。

在L形方法的语境下,补偿函数是期望值 Q(x) = Σ_s p_s * Q_s(x)。多割线变体为每个场景(或每组场景)的补偿函数分量 Q_s(x) 都建立一个单独的模型,并用单独的变量 θ_s 表示。

此时,主问题变为:

minimize c^T x + Σ_s p_s * θ_s
subject to:
    x ∈ X
    θ_s ≥ α_{s,i} + β_{s,i}^T (x - x_i)   for all s, for i in past iterations

多割线方法的潜在问题是约束数量会急剧增加。如果有 S 个场景和 K 次迭代,最多会有 S * K 条割线,这可能导致计算负担沉重和数值问题(如“尾部效应”)。

因此,在实践中,我们通常不会为每个场景单独建模,而是根据子问题的求解成本进行智能分组。例如,将求解速度快的一组场景聚合在一起,而为求解耗时长的单个或少数场景保留单独的模型,从而在模型精度和计算效率之间取得平衡。

应用案例:现金匹配问题 💰

为了将理论应用于实践,我们引入一个经典的随机规划案例——现金匹配问题。

假设你经营一家公司,需要在未来若干年内偿还一系列债务。为了筹集资金,你可以在期初购买一些债券,并拥有一笔初始资本。你的目标是规划债券购买方案,使得在满足每年偿债需求的前提下,最终财富最大化。

确定性模型

首先,我们定义一些参数和变量:

  • n: 债券种类数量
  • T: 计划期总年数
  • r_{i,t}: 债券 i 在年份 t 的回报
  • c_i: 债券 i 的购买成本
  • h_t: 第 t 年需要偿还的债务
  • K: 初始资本总额
  • x_i: 期初购买债券 i 的数量(决策变量)

定义累计收益系数 A_{i,t} = Σ_{τ=1}^{t} r_{i,τ} - c_i。那么,到第 t 年为止,从债券 i 获得的总收益为 A_{i,t} * x_i

确定性模型如下:

maximize Σ_i A_{i,T} * x_i
subject to:
    Σ_i A_{i,t} * x_i ≥ Σ_{τ=1}^{t} h_τ - K,   for t = 1, ..., T
    x_i ≥ 0
    Σ_i c_i * x_i ≤ K  (可用资金约束)

这个模型假设未来的债务 h_t 是确定已知的。

两阶段随机补偿模型

现实中,未来债务可能是不确定的。我们将其建模为随机变量。为了应对这种不确定性,我们引入一个两阶段补偿模型。

第一阶段(期初决策):购买债券 x_i
第二阶段(未来补偿):在某个未来时间点(例如第2年),观察到债务的实际值后,我们可以进行补偿性购买。设 y_i(ω) 为在场景 ω 下追加购买债券 i 的数量。

补偿购买发生在第2年,因此其从购买当年开始的累计收益系数为 B_{i,t} = A_{i,t} - r_{i,1}(即比原始债券少了第一年的回报)。

带有补偿的两阶段随机规划模型如下:

maximize Σ_i A_{i,T} * x_i + E[ Σ_i B_{i,T} * y_i(ω) ]
subject to:
    (第一阶段约束)
    Σ_i c_i * x_i ≤ K
    x_i ≥ 0

    (连接第一、二阶段的约束,对于 t ≥ 2)
    Σ_i A_{i,t} * x_i + Σ_i B_{i,t} * y_i(ω) ≥ Σ_{τ=1}^{t} h_τ(ω) - K,   for all ω
    y_i(ω) ≥ 0

在这个模型中,只有债务 h_t(ω) 是随机的,债券回报和成本假设为确定的。第一阶段变量 x 必须在这里就确定下来,而第二阶段变量 y(ω) 则依赖于随机场景的实现。

实现框架与建议

最后,我们来讨论实现此类算法的编程框架和实用建议。

数据结构

建议使用一个总体的数据结构(例如MATLAB的struct或Python的字典)来存储问题的所有数据。这包括:

  • 确定性参数(债券回报、成本、时间周期)
  • 场景数据(通过随机数生成器产生的债务序列)
  • 算法参数(场景数、随机种子等)

将数据生成与问题特定数据分开管理是一个好*惯。使用固定的随机种子有助于在调试阶段复现问题。

预言机设计

“预言机”是求解子问题(即计算给定 x_k 下的补偿函数值和次梯度/割线)的函数。其输入是当前迭代点 x_k 和全局数据结构,输出应包含:

  1. 割线信息:截距 α 和斜率 β(向量)。
  2. 割线类型:标识是最优性割还是可行性割。
  3. 场景信息:对于可行性割,需要记录是针对哪些场景生成的。
  4. 状态标志:用于指示求解是否成功,或在出错时终止算法。

在实现初期,建议先从单割线(聚合模型) 开始,因为它更简单。确保基础版本正确运行后,再考虑实现更复杂的多割线变体。

调试与验证

实现过程中的大部分错误可能出现在预言机部分。务必进行仔细的调试:

  1. 首先用单个场景运行程序,验证逻辑。
  2. 然后逐步增加场景数量,观察行为是否符合预期。
  3. 检查生成的割线是否正确,主问题是否收敛到合理解。

总结

本节课中我们一起学*了两阶段随机规划L形方法的关键实现要点。我们回顾了割平面模型如何*似补偿函数,并深入探讨了利用目标函数可加性结构的多割线变体,分析了其精度与计算成本的权衡。接着,我们通过现金匹配问题这个具体案例,演示了如何将确定性的财务规划模型扩展为一个两阶段随机补偿模型,以应对未来债务的不确定性。最后,我们讨论了实现此类算法的编程框架,强调了使用清晰的数据结构、精心设计预言机以及采用渐进式调试策略的重要性。掌握这些概念和技巧,是成功应用随机规划解决实际复杂决策问题的基础。

13:多阶段随机规划入门 🎯

在本节课中,我们将学*多阶段随机规划的基本概念。我们将从一个简单的例子出发,介绍多阶段模型与两阶段模型的主要区别,并探讨处理此类问题的三种主要数学表述形式。

从两阶段到多阶段 🔄

上一讲中,我们讨论了两阶段随机规划问题。多阶段模型是其扩展。在两阶段模型中,我们先做出第一阶段的决策 x1,然后不确定性 ξ2 被揭示,接着我们有机会做出第二阶段的决策 x2。而在多阶段模型中,这个过程会持续多个阶段:我们做出决策 x1,不确定性 ξ2 被揭示,我们做出决策 x2;然后不确定性 ξ3 被揭示,我们做出决策 x3,如此继续,直到第 T 阶段。这种多阶段方法出现在许多实际应用中。

处理多阶段随机规划有几种主要方法。与两阶段问题相比,多阶段问题的符号表示更复杂,求解算法也更具挑战性。本节课我们将通过一个例子,介绍三种主要的数学表述形式。

卖花女孩问题 🌹

我们从一个具体的例子开始:卖花女孩问题。

  • 问题描述:一个卖花女孩以价格 P 出售玫瑰花,但需要以成本 C 提前购入。如果当天没有卖完所有玫瑰,剩余的可以储存并在第二天出售,但只能储存一天。每天的需求 ξ_t 是不确定的。卖花女孩的目标是最大化她的总期望利润。规划期 T 是她连续卖花的天数。
  • 简化案例:我们考虑一个简单情况:女孩在周五买花(X1),在周六销售。周六的需求是 ξ2。未售出的花可以储存(S),并且她可以在周六订购新的花(X2)。周日是第三阶段,需求是 ξ3。周日未售出的花 W 将被丢弃,造成损失。

以下是各阶段的决策和约束:

  • 第一阶段(周五晚):决策变量是购买的花量 X1。约束是 X1 ≥ 0
  • 第二阶段(周六):需求 ξ2 被揭示。决策变量是储存的花量 S 和新订购的花量 X2。约束包括 S ≥ 0X2 ≥ 0,以及 X1 - S ≤ ξ2(即售出量不超过需求)。
  • 第三阶段(周日):需求 ξ3 被揭示。决策变量是丢弃的花量 W。约束包括 W ≥ 0,以及 X2 + S - W ≤ ξ3

目标是最大化期望利润,其公式为:
max E[ P * min(X1, ξ2) - C * X1 + P * min(X2+S, ξ3) - C * X2 - C * W ]

核心思想:新的决策是随着不确定性的逐步揭示而逐步做出的。如果需求提前已知,最优决策就是精确购买每天的需求量。然而,现实中需求不确定,因此我们关注最大化期望值。这里我们假设决策不会影响不确定性过程(例如,带伞不会影响是否下雨),这是一个标准假设。

多阶段随机规划的表述形式 📝

接下来,我们看看如何用数学语言表述卖花女孩这类问题。主要有三种表述形式。

1. 通用表述 (General Formulation)

这种表述直接扩展了两阶段模型,将决策变量视为不确定性路径的函数。

对于卖花女孩问题,通用表述如下:
max E[ f1(X1) + f2(X1, X2(ξ2), ξ2) + f3(X1, X2(ξ2), X3(ξ2, ξ3), ξ2, ξ3) ]
约束条件对应于各个阶段。

重要说明:第二阶段的决策 X2 依赖于已揭示的不确定性 ξ2。第三阶段的决策 X3 则依赖于整个路径 (ξ2, ξ3)。这种表述明确写出了变量对不确定性的依赖关系。

当我们使用情景树来离散化随机过程时,这种表述会为树上的每个节点(每个可能的不确定性路径)创建一个决策变量。因此,变量数量会非常多,最终形成一个大规模线性规划问题,可以一次性求解,但只适用于较小规模的问题。

2. 嵌套表述 (Nested Formulation)

这种表述使用条件期望,体现了决策的“嵌套”结构。

其核心形式如下:
min f1(x1) + E[ min_{x2} { f2(x1, x2, ξ2) + E[ ... + E[ min_{x_T} f_T(x_{T-1}, x_T, ξ_T) | ξ_{1:T-1}] ... | ξ_2] | ξ_1} ]

直观理解:在决策树(情景树)的每个节点上,我们做决策时不仅要考虑本阶段的成本,还要考虑从该节点出发的所有未来子节点路径的期望成本。这种“成本-to-go”的思想被一层层嵌套在期望中。

在这种表述中,决策变量(如 x2)被视为该节点上的局部变量,而不显式地写成不确定性函数的样式,其依赖性通过嵌套的优化问题隐含体现。这种表述催生了特定的求解算法。

3. 动态规划表述 (Dynamic Programming Formulation)

这种表述从最后一个阶段开始,逆向递推求解,是嵌套表述的操作化实现。

我们从最后一阶段(T)开始,对于情景树上的每个叶节点,给定之前的所有决策和历史,求解一个简单的优化问题(例如,最小化丢弃鲜花的损失):
Q_T(x_{T-1}, ξ_{1:T}) = min_{x_T} f_T(x_{T-1}, x_T, ξ_T)

然后,我们倒退到第 T-1 阶段。对于该阶段的每个节点,我们求解一个优化问题,目标是最小化本阶段成本加上未来子节点的期望成本:
Q_{T-1}(x_{T-2}, ξ_{1:T-1}) = min_{x_{T-1}} f_{T-1}(x_{T-2}, x_{T-1}, ξ_{T-1}) + E[ Q_T(x_{T-1}, ξ_{1:T}) | ξ_{1:T-1} ]

如此继续,直到第一阶段:
min_{x_1} f1(x1) + E[ Q_2(x_1, ξ_2) ]

与两阶段的联系:如果忽略第三阶段,只看第二阶段的问题,其结构就是一个两阶段随机规划问题。动态规划表述清晰地揭示了多阶段问题可以通过求解一系列相互关联的两阶段(或更小规模)子问题来解决。

重要概念与定义 📚

为了深入理解多阶段模型,我们需要掌握一些数学定义。

  • σ-代数 (Sigma-algebra):一个集合的某些子集构成的集合族,满足三个条件:包含全集;对补集运算封闭;对可数并集运算封闭。它用于定义“可测”的集合(事件)。
  • 滤波 (Filtration):一个递增的σ-代数序列 F1 ⊂ F2 ⊂ ... ⊂ FT。在情景树中,Ft 包含了直到阶段 t 所有可能区分的历史路径信息。决策 xt 必须是 Ft-可测的,这意味着在阶段 t 无法区分的历史路径上,必须做出相同的决策(称为非预期性)。
  • 概率空间与随机变量:一个带概率测度的可测空间称为概率空间。从概率空间到实数的可测函数称为随机变量。
  • 随机过程:一列随机向量 ξ1, ξ2, ..., ξT 称为随机过程。ξ_{1:t} 表示直到阶段 t 的历史。
  • 阶段间独立 (Stagewise Independence):未来不确定性 ξ_{t+1} 的概率分布只依赖于当前阶段 t,而与更早的历史 ξ_{1:t-1} 无关。这可以大大简化情景树的结构(不同历史路径在相同阶段可以共享相同的不确定性子节点)。
  • 马尔可夫性 (Markovian):未来不确定性 ξ_{t+1} 的概率分布只依赖于当前状态(通常由当前决策 xt 和当前实现 ξ_t 概括),而不依赖于到达当前状态的完整路径。

一般形式与总结 🎓

基于以上定义,我们可以给出多阶段随机规划更一般化的嵌套表述:

min E[ f1(x1) + f2(x1, x2(ξ2), ξ2) + ... + f_T(x_{T-1}, x_T(ξ_{1:T}), ξ_{1:T}) ]
满足约束:x_t ∈ X_t(x_{t-1}, ξ_t),且 x_tFt-可测的。

其中,ft 是第 t 阶段的成本函数,Xt 是依赖于前序决策和当前不确定性的可行集。

对应的动态规划“成本-to-go”函数定义为:
Q_t(x_{t-1}, ξ_{1:t}) = min_{x_t ∈ X_t} { f_t(x_{t-1}, x_t, ξ_t) + E[ Q_{t+1}(x_t, ξ_{1:t+1}) | ξ_{1:t} ] }
对于 t = T, T-1, ..., 2,且 Q_{T+1} ≡ 0

最终,第一阶段问题为:min_{x1 ∈ X1} { f1(x1) + E[ Q_2(x_1, ξ_2) ] }

本节课总结:在本节课中,我们一起学*了多阶段随机规划的基本框架。我们从卖花女孩的例子入手,理解了多阶段决策“逐步观察、逐步调整”的核心思想。我们重点介绍了三种主要的数学表述形式:通用表述嵌套表述动态规划表述。此外,我们还学*了σ-代数、滤波、阶段间独立等关键概念,这些是理解和构建多阶段模型的基础。多阶段问题因其决策变量多、情景树规模大而更具挑战性,但动态规划等思想为我们提供了分解和求解复杂问题的有力工具。

14:多阶段随机问题的温和条件与最优性条件 🎯

在本节课中,我们将学*多阶段随机规划问题的几种不同表述,并探讨其最优性条件所需的一些温和假设。我们将从回顾上一讲的内容开始,逐步深入。

回顾:多阶段随机问题的三种表述

上一节我们介绍了多阶段随机规划的基本概念,本节中我们来看看其三种主要的数学表述形式。

嵌套表述

嵌套表述是一种递归形式的优化问题。其核心思想是,每一阶段的决策都依赖于前一阶段的决策和当前阶段的随机实现,并且需要考虑未来所有阶段的期望成本。

公式描述如下:

\[\min_{x_1 \in X_1} f_1(x_1) + \mathbb{E} \left[ \min_{x_2 \in X_2(x_1, \xi_2)} f_2(x_2, \xi_2) + \mathbb{E} \left[ \dots + \mathbb{E} \left[ \min_{x_T \in X_T(x_{T-1}, \xi_T)} f_T(x_T, \xi_T) \right] \dots \right] \right] \]

其中:

  • \(x_t\) 是第 \(t\) 阶段的决策变量。
  • \(\xi_t\) 是第 \(t\) 阶段的随机向量。
  • \(f_t\) 是第 \(t\) 阶段的成本函数。
  • \(X_t(x_{t-1}, \xi_t)\) 是第 \(t\) 阶段的可行集,它依赖于前一阶段的决策 \(x_{t-1}\) 和当前随机实现 \(\xi_t\)
  • \(\mathbb{E}\) 表示数学期望。

这种表述在假设随机过程具有有限多个场景(即场景树)时非常有用,因为它便于应用嵌套分解等算法。

动态规划表述

动态规划表述通过定义“成本至优函数”将问题分解为一系列单阶段问题,从而利用贝尔曼最优性原理。

以下是该表述的核心定义和递推关系:

成本至优函数 \(Q_t\) 定义为:

\[Q_t(x_{t-1}, \xi_{[t]}) = \min_{x_t \in X_t(x_{t-1}, \xi_t)} \left\{ f_t(x_t, \xi_t) + \mathcal{Q}_{t+1}(x_t, \xi_{[t]}) \right\} \]

价值函数 \(\mathcal{Q}_{t+1}\)(或称未来成本函数)定义为:

\[\mathcal{Q}_{t+1}(x_t, \xi_{[t]}) = \mathbb{E} \left[ Q_{t+1}(x_t, \xi_{[t+1]}) \mid \xi_{[t]} \right] \]

最终,第一阶段的决策问题为:

\[\min_{x_1 \in X_1} \left\{ f_1(x_1) + \mathcal{Q}_2(x_1) \right\} \]

这种表述将复杂的多阶段问题转化为一系列更易处理的子问题,是算法设计(如随机动态规划)的基础。

一般表述(策略空间表述)

一般表述直接在策略空间(即从历史信息到决策的映射函数)中定义问题。一个策略 \(\pi = (x_1, x_2(\cdot), ..., x_T(\cdot))\) 被称为可执行的,如果每个 \(x_t\) 是到该阶段为止历史信息 \(\xi_{[t]}\) 的可测函数。它被称为可行的,如果以概率1满足所有约束。

问题表述为:

\[\min_{\pi \in \Pi} \mathbb{E} \left[ \sum_{t=1}^{T} f_t(x_t(\xi_{[t]}), \xi_t) \right] \]

其中 \(\Pi\) 是所有可行且可执行策略的集合。

这种表述概念清晰,但通常是一个无限维优化问题,除非随机过程只有有限多个场景。它强调了决策对历史信息的依赖性。

基本假设与问题凸性

为了推导最优性条件,我们需要对问题施加一些基本假设,以确保其具有良好的数学性质。

以下是本节将使用的主要假设:

  1. 线性约束:假设每一阶段的可行集由线性约束定义:

    \[X_1 = \{ x_1 : A_1 x_1 = b_1, x_1 \ge 0 \} \]

    \[X_t(x_{t-1}, \xi_t) = \{ x_t : A_t x_t = b_t - B_t x_{t-1}, x_t \ge 0 \} \]

    其中矩阵 \(A_t, B_t\) 和向量 \(b_t\) 可能依赖于随机变量 \(\xi_t\)

  1. 凸成本函数:假设每一阶段的成本函数 \(f_t(\cdot, \xi_t)\) 是关于决策变量 \(x_t\) 的凸函数,且是下半连续的。

  2. 相对完全追索权:对于任何可行的前一阶段决策 \(x_{t-1}\) 和几乎所有的随机实现 \(\xi_t\),第 \(t\) 阶段的可行集 \(X_t(x_{t-1}, \xi_t)\) 都是非空的。这意味着无论随机性如何实现,我们总能找到可行的当前决策。

在这些假设下,我们可以证明多阶段随机规划问题是一个凸优化问题。论证的关键在于,价值函数 \(\mathcal{Q}_{t+1}(x_t)\) 是关于 \(x_t\) 的凸函数。这是因为:

  • 成本至优函数 \(Q_{t+1}(x_t, \xi_{[t+1]})\) 在给定历史 \(\xi_{[t]}\) 下是关于 \(x_t\) 的凸函数(由于 \(f_{t+1}\) 凸且约束线性)。
  • 期望运算是线性的,保持凸性。
  • 凸函数之和仍是凸函数。

因此,从最后一阶段递归向前,每一阶段的子问题都是凸优化问题,最终整个问题也是凸的。凸性保证了任何局部最优解都是全局最优解,并且有丰富的对偶理论可供应用。

关键命题与对偶理论

本节我们将探讨一个核心命题,它建立了原问题与对偶问题之间的桥梁,并为计算次梯度提供了基础。

我们引入一个关键的稳定性假设(假设*):对于每一阶段 \(t\),以及可行集右端项 \(b_t\) 的一个邻域内的所有扰动,成本至优函数 \(Q_t\) 都取有限值。这意味着问题不仅是可解的,而且对数据的小扰动也是稳定的。

基于此,我们有如下重要命题:

命题:在假设*下,对于动态规划表述中的任意阶段 \(t\) 子问题,以下结论成立:

  1. 无对偶间隙:原问题的最优值等于其对偶问题的最优值。

    \[\min_{x_t} \left\{ f_t(x_t, \xi_t) + \mathcal{Q}_{t+1}(x_t) : A_t x_t = b_t - B_t x_{t-1} \right\} = \max_{p_t} \inf_{x_t} L_t(x_t, p_t) \]

    其中 \(L_t\) 是该阶段子问题的拉格朗日函数。
  2. 最优性条件\(x_t^*\) 是原问题最优解,当且仅当存在对偶变量 \(p_t^*\),使得 \(0 \in \partial_{x_t} L_t(x_t^*, p_t^*)\),即 \(0\) 属于拉格朗日函数在 \(x_t^*\) 处的次微分。
  3. 次梯度计算:价值函数 \(\mathcal{Q}_{t+1}(x_t)\) 在点 \(x_t\) 处的次微分 \(\partial \mathcal{Q}_{t+1}(x_t)\) 满足:

    \[\partial \mathcal{Q}_{t+1}(x_t) \supset -\mathbb{E} \left[ B_{t+1}^\top D_{t+1}(x_t, \xi_{[t+1]}) \mid \xi_{[t]} \right] \]

    其中 \(D_{t+1}\) 是对偶问题最优解集合。在适当条件下,等式成立。

证明思路

  • 结论1:利用假设*可知价值函数在相关点是连续且次微分非空的凸函数。根据凸分析中的共轭函数理论,其二次共轭等于自身,这等价于原问题与对偶问题最优值相等(无对偶间隙)。
  • 结论2:由于无对偶间隙,原问题的最优解 \(x_t^*\) 也是拉格朗日函数 \(\inf_{x_t} L_t(x_t, p_t^*)\) 在最优对偶变量 \(p_t^*\) 下的最小点。对于凸函数,其最小点的充要条件是 \(0\) 属于其次微分。
  • 结论3:通过链式法则和共轭函数理论,可以将价值函数的次微分与对偶问题的最优解集联系起来。具体地,\(\partial \mathcal{Q}_{t+1}(x_t)\) 包含 \(-\mathbb{E}[B_{t+1}^\top p_{t+1}^*]\),其中 \(p_{t+1}^*\) 是后一阶段对偶问题的最优解。

实践意义:这个命题非常实用。特别是在基于场景树的算法中(如下一讲将学的嵌套分解法),当我们在某个节点求解一个线性或凸规划子问题时,可以通过求解其对偶问题不仅得到最优值,还能“免费”获得一个价值函数的次梯度(即 \(-\mathbb{E}[B_{t+1}^\top p_{t+1}^*]\))。这个次梯度正是用来生成Benders割的关键信息,从而将子问题的信息传递给父节点。

多阶段问题的最优性条件定理

综合前面的假设和命题,我们可以给出多阶段随机规划问题最优策略的一个刻画定理。

定理:假设稳定性假设*成立,并且问题具有相对完全追索权。则一个可行策略 \(\pi^* = (x_1^*, x_2^*(\cdot), ..., x_T^*(\cdot))\) 是最优的,当且仅当存在一系列可测的对偶乘子函数 \(p_t^*(\xi_{[t]})\),使得以概率1满足以下广义方程:

\[0 \in \partial_{x_t} f_t(x_t^*, \xi_t) - A_t^\top p_t^* + \partial_{x_t} \mathcal{Q}_{t+1}(x_t^*), \quad t=1,...,T \]

同时,对偶乘子 \(p_t^*\) 本身也是对应阶段对偶问题的最优解。

推导

  1. 根据命题中的最优性条件,对于每个阶段 \(t\) 和几乎每个历史 \(\xi_{[t]}\),最优决策 \(x_t^*\) 必须满足 \(0 \in \partial_{x_t} L_t(x_t^*, p_t^*)\)
  2. 拉格朗日函数 \(L_t(x_t, p_t) = f_t(x_t, \xi_t) + \mathcal{Q}_{t+1}(x_t) + p_t^\top (A_t x_t - (b_t - B_t x_{t-1}))\)
  3. 对其求关于 \(x_t\) 的次微分(在相对完全追索权和假设*下,可以交换次微分和期望运算),即可得到定理中的包含关系。
  4. 其中,\(-A_t^\top p_t^*\) 来自线性约束项的导数,\(\partial_{x_t} \mathcal{Q}_{t+1}(x_t^*)\) 是未来成本价值函数的次微分,根据之前的命题,它与对偶解 \(p_{t+1}^*\) 有关。

这个定理将多阶段随机规划的最优性条件表示为一组跨阶段的广义方程系统,它同时涉及了本阶段的成本、对偶变量以及未来成本的边际影响。这为设计求解算法(如基于对偶的分解方法)提供了理论基础。

最后需要指出,如果成本函数 \(f_t\) 是随机多面体函数(即分段线性凸函数),且随机过程只有有限多个场景,那么我们可以放宽稳定性假设*,因为此时价值函数自动取有限值,上述所有结论依然成立。

总结

本节课中我们一起学*了多阶段随机规划问题的核心理论框架。

  • 我们首先回顾并形式化定义了三种等价的问题表述:嵌套表述动态规划表述一般策略空间表述,理解了它们各自的特点和适用场景。
  • 接着,我们引入了线性约束凸成本函数相对完全追索权等基本假设,并论证了在此框架下多阶段随机规划是一个凸优化问题,这为使用凸分析工具奠定了基础。
  • 然后,我们深入探讨了一个关键命题,它在额外的稳定性假设下,证明了子问题无对偶间隙,给出了基于拉格朗日函数最优性条件,并揭示了价值函数的次梯度可以通过求解对偶问题方便地获得。这一结论具有重要的算法意义。
  • 最后,我们整合所有内容,给出了一个刻画多阶段问题最优策略的定理,该定理表明最优性体现为一组贯穿所有阶段的、联系着原变量和对偶变量的广义方程。

这些理论结果为下一讲学*具体的求解算法(如嵌套分解法)做好了准备。通过理解最优性条件和对偶关系,我们将能看到如何将大规模的多阶段问题分解为一系列较小的、可并行求解的子问题。

15:线性多阶段随机规划与嵌套分解法 🎲

在本节课中,我们将要学*线性多阶段随机规划问题,并重点介绍基于情景树的建模方法以及一种高效的求解算法——嵌套分解法。我们将从线性问题的动态规划公式出发,探讨如何利用情景树将随机问题转化为确定性等价问题,并深入讲解嵌套分解法的核心思想和计算步骤。

线性多阶段随机规划问题回顾

上一节我们介绍了多阶段随机规划的一般形式。本节中,我们来看看当目标函数和约束都是线性时的特殊情况。

我们考虑以下形式的线性多阶段随机规划问题:

目标函数:

minimize  c1^T x1 + E[ c2^T x2 + ... + cT^T xT ]

约束条件:
对于每个阶段 t = 1, ..., T,几乎必然满足:

A1 x1 = b1
B1 x1 + A2 x2 = b2
...
B_{T-1} x_{T-1} + A_T x_T = b_T
x_t >= 0

其中,随机数据 ξ_t = (A_t, B_t, b_t, c_t) 在每个阶段都可能是不确定的。我们采用嵌套公式来描述这个问题。

动态规划公式

对于线性情况,其动态规划递归公式与一般形式一致,但函数是线性的。

最后阶段 (t = T) 的成本函数:

Q_T(x_{T-1}, ξ_T) = minimize  c_T^T x_T
                    subject to  B_{T-1} x_{T-1} + A_T x_T = b_T
                                x_T >= 0

中间阶段 (t = 2, ..., T-1) 的成本函数:

Q_t(x_{t-1}, ξ_t) = minimize  c_t^T x_t + E[ Q_{t+1}(x_t, ξ_{t+1}) | ξ_t ]
                    subject to  B_{t-1} x_{t-1} + A_t x_t = b_t
                                x_t >= 0

第一阶段要解决的问题是:

minimize  c1^T x1 + E[ Q_2(x1, ξ_2) ]
subject to  A1 x1 = b1
            x1 >= 0

我们称函数 Q_t 为价值函数。在线性假设下,该问题是凸规划问题。

关于问题一般性的讨论

你可能会注意到,上述公式中,阶段 t 的决策 x_t 仅直接依赖于前一阶段的决策 x_{t-1},而不是全部历史。一个更一般的公式可能允许约束依赖于所有历史决策,例如:

B1 x1 + A2 x2 = b2
B1 x1 + B2 x2 + A3 x3 = b3
...

然而,通过引入辅助变量 R_t = R_{t-1} + B_t x_t,我们可以将这种一般形式转化为仅依赖前一阶段决策的标准形式。因此,我们使用的公式并没有失去一般性。

基于情景树的建模方法

现在,我们转向使用情景树来明确表示随机过程。

以下是情景树相关的核心定义:

  • 情景:从根节点到叶子节点的一条完整路径,代表一种可能的随机过程实现。
  • 节点:情景树中的每个点。节点 i 的祖先记为 a(i),子节点集合记为 C(i)。
  • 概率:节点 i 的概率 p(i) 是所有经过该节点的情景的概率之和。从节点 i 到其子节点 j 的条件概率记为 p_{ij}。

利用情景树,我们可以将期望计算写为对树上所有节点的求和。由此,原随机规划问题可以写成一个大规模的确定性线性规划问题,即确定性等价问题

确定性等价问题形式:

minimize  Σ_{i ∈ 节点集} p(i) * c(i)^T x(i)
subject to
    对于根节点: A1 x1 = b1
    对于其他节点 i: B(a(i)) x(a(i)) + A(i) x(i) = b(i)
    x(i) >= 0 (对所有节点 i)

其中,x(i) 表示在节点 i 处做出的决策。

方法的局限性

虽然确定性等价方法概念简单,直接将问题转化为线性规划求解,但其计算效率可能很低。

考虑一个例子:规划期 T=12,每个节点有 4 个子节点,每个决策变量 x_t 的维度为 10。那么总情景数将超过 400 万,决策变量总数极其庞大。这会导致内存消耗巨大,建模和求解都非常困难。因此,我们需要更高效的算法来处理大规模问题。

嵌套分解法介绍

上一节我们介绍了求解大规模线性多阶段随机规划的一种直接但低效的方法。本节中,我们来看看一种高效的分解算法——嵌套分解法。

嵌套分解法的核心思想是:不直接求解庞大的确定性等价问题,而是利用动态规划结构,通过迭代地逼*价值函数 Q_t 来求解。

割平面逼*

我们知道,线性规划的价值函数 Q_t(x_{t-1}) 是凸的(实际上是分段线性凸函数)。嵌套分解法用一系列线性函数(称为“割”)的最大值来逼*这个价值函数。

对于阶段 t,在第 k 次迭代时,价值函数的割平面逼*定义为:

Q_t^k(x) = max{ α_t^j + β_t^j^T x : j = 1, ..., k }

其中,每个 (α_t^j, β_t^j) 定义了一个“割”,它是一个支撑价值函数的线性不等式:Q_t(x) >= α_t^j + β_t^j^T x

如何构造割?
割的构造依赖于线性规划的对偶理论。

  1. 对于最后阶段 (t=T):求解节点 i 的子问题,得到最优拉格朗日乘子 π(i)。那么,对于该节点,一个割由下式给出:
    α_T(i) = E[ b_T^T π_T | 历史到 i ]
    β_T(i) = E[ -B_{T-1}^T π_T | 历史到 i ]
    
    这个割满足:Q_T(x) >= α_T(i) + β_T(i)^T x

  1. 对于中间阶段 (t < T):求解一个*似的子问题,该问题中用割平面逼* Q_{t+1}^k 代替真实的 Q_{t+1}。设该*似问题的最优解和对偶乘子为 (x_t^, π_t^, θ_t^),其中 θ_t^ 对应于 Q_{t+1}^k 的约束。那么,可以构造一个割:
    α_t = E[ b_t^T π_t + α_{t+1}^T θ_t | 历史 ]
    β_t = E[ -B_{t-1}^T π_t | 历史 ]
    
    其中,α_{t+1} 是来自子节点割的截距向量。这个割同样满足 Q_t(x) >= α_t + β_t^T x

嵌套分解算法步骤

算法通过“向前步”和“向后步”的迭代进行。

第0步:初始化

  • 设置迭代计数器 k=0。
  • 对所有阶段 t,初始化割平面逼* Q_t^0。通常,如果没有先验信息,可以设 Q_t^0 = -∞ 或某个已知的下界。

第1步:向前步(模拟决策)

  • 从根节点开始,用当前的价值函数逼* Q_t^k 求解每个节点的子问题,得到决策 x_t(i)
  • 将这个决策传递给它的所有子节点。
  • 沿着情景树向前进行,直到叶子节点。
  • 计算当前策略下的总成本,这给出了原问题最优值的上界 (UB)

第2步:向后步(生成割)

  • 从叶子节点开始,向根节点方向回溯。
  • 在每个节点 i,利用从子节点收集到的信息(在向前步中计算的决策 x_t(i)),按照上述方法构造一个新的割 (α_t^{k+1}(i), β_t^{k+1}(i))
  • 将这个新割添加到该节点的割平面逼*集合中,更新 Q_t^{k+1}

第3步:求解主问题并更新下界

  • 回溯到根节点后,用更新后的 Q_2^{k+1} 求解第一阶段问题。
  • 其最优值给出了原问题最优值的下界 (LB)

第4步:检查收敛

  • 计算上下界之间的间隙:Gap = UB - LB
  • 如果 Gap 小于预设的容忍度,则停止迭代,当前策略*似最优。
  • 否则,令 k = k+1,返回第1步。

算法图解与收敛性

算法通过迭代不断改进对价值函数的逼*。在向前步中,我们基于当前的*似未来成本做出决策,可能不是全局最优的。在向后步中,我们利用这些决策点的信息生成新的割,这些割揭示了“未来成本可能更高”的区域,从而在下一次迭代中引导决策。

每次向前步可能降低上界,每次向后步(通过求解更精确的主问题)可能提高下界。理论上,在满足一定条件下(如相对完全追索),该算法能在有限步内收敛到最优解。

总结

本节课中我们一起学*了线性多阶段随机规划的两种求解思路。

  • 第一种是确定性等价方法,它将随机问题转化为一个大规模线性规划。该方法直观,但仅适用于情景树较小的问题。
  • 第二种是嵌套分解法,它是一种利用问题结构的高效算法。其核心是通过割平面迭代逼*价值函数,并交替执行向前步(生成可行策略和上界)和向后步(生成改进割和下界),直至收敛。

嵌套分解法能够有效处理具有大量情景的随机规划问题,是实际应用中的主流算法之一。

16:嵌套分解与块可分问题

在本节课中,我们将要学*多阶段随机规划中嵌套分解算法的收敛性证明,并探讨一种特殊结构的问题——块可分问题,以及针对此类问题的有效求解方法。

嵌套分解算法回顾

上一节我们介绍了多阶段随机线性规划的嵌套分解算法。该算法通过前向和后向两个步骤,迭代地构建“成本-收益”函数的割平面*似。

以下是算法的核心步骤:

  1. 前向步骤:从第一阶段开始,使用当前对“成本-收益”函数的*似(初始时可能为零),依次求解各阶段各节点的线性规划,得到一个可行策略(上界)。
  2. 后向步骤:从最后阶段开始,向前回溯。在每个节点,利用其后代节点的解信息(如对偶乘子)构造新的割平面,用以改进其父节点中“成本-收益”函数的*似。
  3. 迭代与停止:重复前向与后向步骤。每次在第一阶段求解*似问题会得到一个下界。当上界与下界的差距小于预设容差时,算法停止。

该算法的关键在于,每次迭代都在改进对“成本-收益”函数 Q_t(x_{t-1}, ξ_t) 的*似。在有限场景下,这些函数是凸多面体函数,因此可以被有限个割平面精确表示。

收敛性证明

本节中我们来看看嵌套分解算法为何能在有限步内收敛到最优解。证明基于以下几个关键点:

  1. 有限场景与多面体结构:由于随机过程由有限个场景描述,且问题数据是确定性的,因此每个节点的“成本-收益”函数 Q_t 都是凸多面体函数。
  2. 割平面是下界:算法构造的每个割平面 L_t^k(x) 都满足 L_t^k(x) ≤ Q_t(x),即割平面是原函数的一个下*似。
  3. 可行集紧致:我们假设各阶段决策变量的可行集是紧致的(有界闭集)。这保证了算法产生的迭代点序列存在聚点。
  4. 有限次逼*:在紧致集上,一个凸多面体函数可由其有限个支撑超平面(即“切平面”)完全描述。随着算法迭代,在最优解可能出现的区域,我们会不断添加割平面。由于可能的“切平面”数量有限,最终在相关区域,割平面模型 \bar{Q}_t^k(x) 将与真实函数 Q_t(x) 一致。

因此,当在第一阶段求解的*似问题 min_{x_1} { c_1^T x_1 + \bar{Q}_2^k(x_1) } 与真实问题 min_{x_1} { c_1^T x_1 + Q_2(x_1) } 在最优解处给出相同值时,算法获得的上界(来自可行策略)和下界(来自*似问题)将重合,算法终止。由于割平面数量有限,这一过程必然在有限步内发生。

块可分问题简介

嵌套分解是一种通用而强大的方法。然而,对于具有特殊结构的问题,可能存在更高效的专门算法。接下来,我们介绍一类称为块可分问题的多阶段随机规划。

考虑决策变量 x_t 可以分解为两部分:x_t = (w_t, y_t)。其中:

  • w_t 代表投资决策,其影响会延续到未来阶段(例如,建设一条管道)。
  • y_t 代表运营决策,其影响仅限于当前阶段(例如,决定当前管道的流量)。

相应的,问题数据矩阵也具有特殊的分块结构:

A_t = [I, 0], B_t = [0, T_t]

这使得约束系统可以重写为:

w_t = w_{t-1}  (投资状态传递)
T_t y_t = h_t - W_t w_{t-1}  (运营约束)

这种结构的关键优势在于,y_t 变量不再出现在连接不同阶段的方程中,它们被完全解耦到各个节点内。

块可分问题的重构

利用上述结构,我们可以重新表述整个多阶段问题。将所有阶段的投资决策变量 w 收集到一个大向量 z 中(包含第一阶段的初始决策 x_1 和所有后续 w_t),并将所有与 z 相关的约束(主要是状态传递方程 w_t = w_{t-1})集合记为可行集 Z

于是,原问题等价于如下形式:

min_{z ∈ Z} c^T z + Φ(z)

其中,Φ(z) = E[ Σ_t φ_t(z, ξ_t) ],而 φ_t(z, ξ_t) 是仅涉及运营变量 y_t 的线性规划最优值:

φ_t(z, ξ_t) = min_{y_t} { q_t^T y_t | T_t y_t = h_t - W_t z, y_t ≥ 0 }

这里,z 作为参数出现在每个节点运营子问题的右端项中。

针对块可分问题的割平面法

我们得到的新问题 min_{z ∈ Z} c^T z + Φ(z) 是一个两阶段问题的形式:第一阶段的决策是 z,第二阶段的“补偿函数”是 Φ(z)。虽然 Φ(z) 是许多线性规划最优值的期望之和,形式复杂,但它仍然是 z 的凸函数。

更重要的是,对于给定的 z,我们可以通过并行求解所有节点(所有阶段、所有场景)的运营子问题 φ_t(z, ξ_t) 来轻松计算 Φ(z) 的值和一个次梯度。这是因为各个子问题之间完全独立,无需像嵌套分解那样进行前后向通信。

基于此,我们可以应用经典的割平面法(如 Kelley’s 割平面法)来求解该问题:

算法框架如下:

  1. 初始化:选择一个初始点 z^1 ∈ Z,设置迭代计数器 k=1,上界 UB = +∞,下界 LB = -∞,割平面模型 Φ^k_m(z) = max_{i<k} [ Φ(z^i) + g_i^T (z - z^i) ],其中 g_i ∈ ∂Φ(z^i)
  2. 主问题求解:求解 z^{k+1} = argmin_{z ∈ Z} { c^T z + Φ^k_m(z) }。该问题最优值给出了当前下界 LB
  3. 调用Oracle:在点 z^{k+1} 处,并行求解所有运营子问题,计算 Φ(z^{k+1}) 和一个次梯度 g_{k+1}
  4. 更新界限:更新上界 UB = min{UB, c^T z^{k+1} + Φ(z^{k+1})}
  5. 检查停止准则:如果 (UB - LB) < ε,则停止;否则,更新割平面模型 Φ^{k+1}_m(z),令 k = k+1,返回步骤2。

方法的优势与局限:

  • 优势:计算高度并行化,无需处理复杂的嵌套树结构通信;当投资决策维度 dim(w_t) 较小时,主问题变量 z 的维度可控。
  • 局限:如果投资决策维度很大或场景树非常庞大,则 z 的维度会很高,导致主问题难以求解。此外,运营子问题中通常不包含整数变量,否则会破坏凸性。

收敛性证明简述:
对于凸函数 Φ(z) 和紧致可行集 Z,可以证明该割平面法产生的上、下界差距趋于零。一个简洁的证明利用了次梯度的有界性和割平面模型的定义:存在常数 M,使得 UB_k - LB_k ≤ M * ||z^{k+1} - z^i|| 对于某个过去的迭代 i 成立。由于序列 {z^k} 有聚点,当 k 增大时,右端可以任意小,从而证明间隙收敛于零。

总结

本节课中我们一起学*了两个主要内容。首先,我们完成了对嵌套分解算法收敛性的讨论,理解了其在有限场景下基于凸多面体结构和有限切割而有限收敛的原理。其次,我们介绍了一类具有块可分结构的特殊多阶段随机规划问题。通过将耦合变量(投资决策)提升到“第一阶段”,我们得到了一个可并行计算补偿函数的两阶段问题重构,从而能够应用更简单、可并行的割平面法进行求解。这种方法在投资决策维度较小的问题中特别有效,是 exploiting problem structure(利用问题结构)以设计高效算法的典型范例。

17:多阶段问题的对偶分解方法

在本节课中,我们将继续学*多阶段随机规划问题,但这次我们将聚焦于线性情况,并通过求解其对偶问题来寻找解决方案。我们将重点处理非预期性约束,并介绍一种利用拉格朗日松弛进行问题分解的实用方法。

上一节我们介绍了多阶段随机规划的一般形式,本节中我们来看看如何通过处理其对偶问题来求解。

问题回顾与修正

首先,对上一节课的一个表述进行修正。在介绍可分递归问题时,关于函数子梯度的矩阵表述有误。正确的形式应为与向量 W 相关的矩阵 D,感谢 Francisco 的指正。

现在,我们回到今天的主题。我们将处理多阶段随机规划的另一种表述,即一般形式下的线性情况。

线性多阶段随机规划问题 可以表述为:

minimize E[ Σ_{t=1}^{T} c_t(ξ_t)^T x_t(ξ_t) ]
subject to:
    A_t(ξ_t) x_t(ξ_t) + B_t(ξ_t) x_{t-1}(ξ_{t-1}) = b_t(ξ_t), 几乎必然 (a.s.)
    x_t(ξ_t) ≥ 0, a.s.
    x_t 是 F_t 可测的 (非预期性约束)

其中,x_t 的决策依赖于随机过程 ξ_t 的历史信息。我们称满足这些条件的策略为 可执行策略。如果该策略还满足所有约束条件,则称之为 可行策略

我们使用 x_tF_t 可测的来表示非预期性约束。这意味着在时间 t 所做的决策,只能基于到时间 t 为止已知的信息,而不能预知未来。

非预期性约束的示例

为了更好地理解,考虑一个简单的三阶段例子。

假设一个三阶段过程,每个阶段决策变量在 R^2 中。其场景树如下图所示,包含四个最终场景。

对于每个场景树节点,我们都需要做出决策。为了确保非预期性,我们为每个场景复制决策变量,但要求在某些节点上这些复制变量必须相等。

以下是具体做法:

  • 在根节点(阶段1),所有四个场景的决策必须相同。
  • 在阶段2的第一个节点,场景1和场景2的决策必须相同。
  • 在阶段2的第二个节点,场景3和场景4的决策必须相同。
  • 在阶段3的每个叶子节点,决策可以不同,因为未来已确定。

通过这种方式,我们增加了变量的数量(为每个场景复制决策),但引入了等式约束来保证非预期性。这使得原问题转化为一个大型线性规划问题。

虽然这种方法使问题规模变大,但其优势在于,我们可以松弛这些非预期性约束,从而将大问题分解为多个更小的、可按场景独立求解的子问题。这正是对偶分解方法的核心思想。

紧凑形式与对偶理论

为了理论推导的方便,我们将问题改写为更紧凑的形式。

首先,定义包含所有场景所有阶段决策的大向量 X

X = (x_1^1, ..., x_T^1, x_1^2, ..., x_T^2, ..., x_1^K, ..., x_T^K)^T

其中,上标 k 表示场景索引。

定义满足非预期性约束的子空间 LX ∈ L 意味着决策策略是适应性的(即可测的)。

接着,我们定义一个新的内积,用于后续的对偶分析:

⟨X, Y⟩_π = Σ_{k=1}^{K} π_k Σ_{t=1}^{T} (x_t^k)^T y_t^k

其中 π_k 是场景 k 的概率。

利用指示函数,我们可以将原问题等价地写为:

minimize F(X) + δ_L(X)

其中 F(X) 是线性目标函数,δ_L(X) 是子空间 L 的指示函数(在 L 上为0,否则为+∞)。

基于此,我们有以下关键定理,它连接了原问题与拉格朗日松弛问题:

定理:一个策略 X* 是原问题的最优解,当且仅当存在一个乘子 λ* ∈ L^⊥L 的正交补空间),使得 X* 也是如下拉格朗日函数的最小值点:

L(X, λ) = F(X) + ⟨λ, X⟩

并且 X* ∈ L

该定理的证明利用了最优性条件和子空间法锥的性质。由于原问题是线性规划,且约束为线性子空间,无需约束规格条件即可保证强对偶性成立。

这个定理的重要性在于,它表明我们可以通过求解对偶问题来获得原问题的最优解。

对偶分解

根据上述定理,我们定义对偶函数:

D(λ) = inf_{X} { F(X) + ⟨λ, X⟩ }

由于 F(X) 是线性的,且我们引入了内积 ⟨·,·⟩_π,可以证明,这个对偶函数可以分解为各个场景子问题的和:

D(λ) = Σ_{k=1}^{K} π_k * D_k(λ)

其中,每个场景的子问题 D_k(λ) 为:

D_k(λ) = minimize Σ_{t=1}^{T} [ c_t^k^T x_t^k + (λ_t^k)^T x_t^k ]
         subject to: A_t^k x_t^k + B_t^k x_{t-1}^k = b_t^k, for t=1,...,T
                     x_t^k ≥ 0

注意:这里的 λ_t^k 是对应于场景 k、阶段 t 的乘子分量。

这是一个重要的分解。对偶函数 D(λ) 的求值,等价于独立求解 K 个(场景数量)较小的线性规划问题。每个子问题只涉及一条从第一阶段到最后阶段的完整场景路径,完全忽略了其他场景。乘子 λ 起到了惩罚作用,迫使最终解满足非预期性约束。

次梯度计算与算法

我们的目标是最大化对偶函数 D(λ)(因为原问题是最小化,其对偶是最大化)。D(λ) 是一个凹的、分段线性的函数。

为了使用如次梯度法或割平面法等一阶方法求解这个对偶问题,我们需要能够计算对于给定 λ 的函数值 D(λ) 和一个次梯度。

  • 函数值计算:如前所述,求解 K 个场景子问题,将其最优值按概率加权求和。
  • 次梯度计算:对于一个给定的 λ,设求解场景 k 子问题得到的最优解为 X_bar^k。那么,向量 G = (..., π_k * X_bar^k, ...)(按场景和阶段排列)就是 D(λ)λ 点的一个次梯度。

有了函数值和次梯度,我们就可以应用 割平面法 来求解对偶问题。

割平面法的基本步骤如下:

  1. 初始化一个对偶乘子 λ(例如设为0)。
  2. 调用“预言机”(Oracle):求解所有场景子问题,得到 D(λ) 的值和一个次梯度 G
  3. D(λ) 的值给出了原问题最优值的一个下界
  4. 利用得到的次梯度构造一个线性割(支撑超平面),添加到对偶问题的*似模型(一系列割的集合)中。
  5. 在某个有界集合(例如一个足够大的范数球 ||λ|| ≤ M)上,最大化当前割平面模型。这个最大值给出了原问题最优值的一个上界
  6. 用新的 λ(最大化割平面模型得到的解)重复步骤2-5。
  7. 迭代进行,直到上界和下界的差距小于预设容差。

需要注意:为了保证算法收敛,我们需要假设界 M 足够大,以确保包含了最优对偶解。如何选取合适的 M 是一个实际问题。

恢复原问题最优解

求解对偶问题后,我们得到了最优对偶值和对偶乘子 λ*。然而,我们通常更需要原问题的最优决策 X*

一个重要的结论是,通过割平面法迭代过程中产生的场景子问题最优解,我们可以构造出原问题的最优解

具体而言,在割平面法的第 j 次迭代中,我们得到对偶点 λ^j 和对应的各场景最优解 X_bar^j。可以证明,存在一组非负的凸组合系数 α_jΣ α_j = 1),使得原问题的最优解 X* 可以由这些历史解构造出来:

X* = Σ_j α_j * X_bar^j

其中,X_bar^j 是第 j 次迭代中所有场景最优解按原变量结构拼接成的大向量。这个构造过程保证了 X* 不仅满足所有场景内的约束,也满足非预期性约束,从而是原问题的可行最优解。

这样,我们不仅得到了最优值和对偶乘子(具有边际成本等经济解释),也恢复了最优的决策方案。

总结

本节课中我们一起学*了求解线性多阶段随机规划问题的对偶分解方法。

  1. 核心思想:通过引入拉格朗日乘子松弛非预期性约束,将大规模的原问题分解为多个较小的、可按场景独立求解的线性规划子问题。
  2. 关键步骤
    • 将非预期性约束表述为等式约束,并定义相应的子空间 L
    • 利用对偶理论,将原问题转化为最大化凹的对偶函数 D(λ)
    • 对偶函数可分解为各场景子问题之和,使得函数求值和次梯度计算非常高效。
  3. 求解算法:使用割平面法等一阶方法求解对偶问题。每次迭代需并行求解所有场景子问题。
  4. 恢复原解:算法收敛后,可以从迭代历史中构造出原问题的最优可行决策。

这种方法的优势在于它利用了问题的结构,通过分解降低了每次迭代的计算复杂度,特别适用于场景数众多但每个场景的子问题易于求解的情况。在下节课中,我们将证明如何从对偶解恢复原问题解,并可能介绍其他相关的对偶分解方法。

18:对偶分解与乘子法进阶

在本节课中,我们将继续学*多阶段随机规划问题的分解方法。我们将首先完成上一讲末尾一个命题的证明,然后转向另一种在非线性优化中广为人知的方法——乘子法,并探讨如何将其应用于随机规划问题。

回顾与记号

我们关注的是线性多阶段随机规划问题。可行集是线性的。我们可以通过定义目标函数来简化记号:如果可行,则为线性成本;否则为无穷大。我们仍然可以简化这个记号。我们将基于一个具有有限多个场景的场景树。场景的数目记为 K

其核心思想是将所有变量组合成一个大向量。对于每个场景 k,我们有其相关的决策变量 x_k。为了处理非预期性约束,我们要求第一阶段的变量在不同场景下必须相等。我们可以将这些非预期性约束建模为线性约束形式:Gx = 0

如果变量 x 满足非预期性约束,我们可以使用这个紧凑的公式来表示我们的多阶段随机规划问题。目标函数 f(x) 定义为所有场景下各阶段成本函数的总和。因此,我们想要最小化 f(x) 并满足约束 Gx = 0

对偶分解法回顾

在上一讲中,我们使用拉格朗日松弛来定义对偶分解。通过定义拉格朗日函数,原问题可以按场景分解。在每个场景下,我们需要解决一个考虑从第1阶段到最后阶段所有状态的线性规划问题。总共有 K 个子问题需要求解。

其思路是对约束进行对偶化,从而得到对偶问题:最大化对偶函数 D(u),其中 u 无约束。对偶函数 D(u) 是各个场景子函数值的总和。每个子函数是给定对偶变量 u 下,相应场景子问题的拉格朗日函数的最优值。

当我们优化这个对偶问题时,我们假设有一个“黑盒”程序。我们给定一个对偶点 u 给这个黑盒,黑盒需要为每个场景 k 求解一个线性规划问题,然后汇总结果并计算对偶函数值及其次梯度。

这里的关键是,对偶函数可以分解为多个子函数的和。这使得在优化对偶问题时,我们可以并行计算每个场景的子问题。然而,这个方法的难点在于,如果场景树非常大,就需要求解很多线性规划问题,而且这些线性规划问题本身可能维度很高。因此,这个方法适用于场景数不多、时间阶段较短的规划问题。

尽管有这些限制,我们不需要其他假设(例如阶段独立性),因此该方法具有一般性。目标函数甚至可以是非线性的,只要子问题能快速求解即可。

割平面模型与原始解恢复

上一节我们介绍了对偶分解的基本框架,本节中我们来看看如何利用割平面模型来求解对偶问题,并从中恢复原始问题的最优解。

我们使用割平面法来求解对偶问题。给定一个对偶变量 u,我们调用“黑盒”计算函数值 D(u) 和次梯度 g。由于对偶函数是凹的,我们可以构造一个线性化(割平面)。在迭代过程中,我们收集所有这些信息(函数值和次梯度),构建一个割平面模型。

割平面模型定义为所有已生成割平面线性化函数的最大值(因为我们在最大化凹函数)。我们称这个模型为 M_L(u),其中 L 是迭代次数。为了在最大化割平面模型时不至于趋向无穷大,我们需要为对偶变量 u 添加一个边界约束(例如 |u| ≤ M)。这个边界 M 的估计非常重要,如果初始估计错误,可能会得到错误的解。

割平面法在假设边界 M 足够大的情况下,会收敛到对偶问题的最优解。

现在,假设我们已经通过割平面法求解了对偶问题,并找到了最优对偶解 u*。但我们通常更关心原始的决策变量 x。我们需要从对偶信息中恢复原始最优解。

假设算法在第 L 次迭代后收敛,且最优对偶解 u* 位于边界约束的内部(即不是边界点)。当我们求解最后一次的割平面模型主问题时,会得到与每个割平面对应的拉格朗日乘子 α_j(对于约束 D(u_j) + g_j^T (u - u_j) ≥ r)。

可以证明,通过以下凸组合构造的点 是原始问题的最优解:
x̂ = Σ_j α_j x_j
其中 x_j 是在对偶点 u_j 处求解子问题得到的最优原始解,α_j 是相应的拉格朗日乘子,满足 α_j ≥ 0Σ_j α_j = 1

证明分为两步:

  1. 可行性:证明 满足原始问题的约束 Gx̂ = 0。这可以通过分析割平面模型主问题的对偶性来证明。
  2. 最优性:证明目标函数在 处的值等于对偶最优值。利用对偶间隙为零的事实,以及 的构造方式,可以证明其目标值不大于对偶最优值,结合其可行性,即可证明其最优性。

这个恢复过程是“免费”的,我们只需要在求解对偶问题时保存每次迭代产生的原始解 x_j 和最终的乘子 α_j 即可。

对于混合整数随机规划问题,如果子问题包含整数变量,上述凸组合得到的 可能不是整数解(因为整数解的凸组合不一定是整数)。然而,对偶函数的最大化仍然能为原问题提供一个下界,这在分支定界等算法中非常有用。

增广拉格朗日乘子法

上一节我们完成了对偶分解法的讨论,本节中我们转向另一种方法——增广拉格朗日乘子法,并将其应用于多阶段随机规划。

乘子法是非线性优化中的经典方法。考虑惩罚系数 ρ > 0,增广拉格朗日函数定义为标准拉格朗日函数加上约束违反度的二次惩罚项:
L_ρ(x, u) = f(x) + u^T (Gx) + (ρ/2) |Gx|^2

应用于多阶段随机规划的乘子法迭代步骤如下:

  1. 原始更新:给定当前乘子 ul**,求解最小化增广拉格朗日函数的问题:**x ∈ argmin_x L_ρ(x, u^l)
  2. 对偶更新:更新乘子:u^{l+1} = u^l + ρ Gx^{l+1}
  3. 迭代:重复上述步骤,直到 x^{l+1} 接*可行(即 Gx^{l+1} ≈ 0)。

对偶更新公式中的 Gx^{l+1} 正是标准拉格朗日对偶函数在 u^l 处的次梯度。

在问题存在解(例如线性规划情况下)的假设下,由该方法生成的序列 {u^l} 能在有限步内收敛到对偶问题的一个最优解。

这个收敛性可以通过*端点算法的理论来证明。可以证明,乘子法的迭代过程等价于对函数 -D(u)(即负对偶函数)应用*端点算法。*端点算法对于最小化凸函数 φ(y) 的迭代定义为:
y^{l+1} ∈ argmin_y { φ(y) + (1/(2h)) |y - yl|2 }
其中 h > 0 是参数。该算法生成的序列会收敛到原问题的最优解。如果函数 φ 是分片线性的(多面体函数),则收敛是有限的。

通过证明乘子法的迭代与对 -D(u) 应用*端点算法等价,并利用*端点算法的收敛性定理,即可得证。

方法的优缺点与比较

现在我们来总结和比较一下对偶分解法和乘子法。

对偶分解法的特点:

  • 优点
    • 将大问题分解为多个独立的、更易处理的场景子问题。
    • 子问题是线性规划,结构相对简单。
    • 天然适合并行计算。
  • 缺点
    • 需要求解大量子问题(每个场景每个迭代一次)。
    • 对偶变量 u 的维度可能很高。
    • 割平面法的收敛速度可能较慢。
  • 改进方向
    • 使用更高效的非光滑优化算法替代割平面法,例如正则化分解、束方法等。
    • 研究处理“黑盒”计算不精确(如子问题*似求解)的算法。
    • 这些高级方法在双阶段随机规划中已有应用,但在多阶段情形中仍有探索空间。

增广拉格朗日乘子法的特点:

  • 优点
    • 算法形式简单。
    • 由于二次惩罚项的 regularization 效果,通常比对偶分解需要更少的迭代次数。
    • 不需要估计对偶变量的边界。
  • 主要缺点
    • 原始更新步骤 min_x L_ρ(x, u^l) 无法按场景自然分解,因为二次项 |Gx|^2 耦合了所有场景的变量。
  • 克服缺点的传统思路
    • 使用块坐标下降法(如雅可比方法)来*似求解原始更新问题。即,固定其他场景的变量,轮流优化一个场景的变量。但这会将问题转化为一系列需要迭代求解的二次规划子问题,计算量可能很大。

值得注意的是,乘子法中二次惩罚项 |Gx|^2 虽然耦合了变量,但实际上只耦合了具有非预期性关系的变量(即同一节点在不同场景下的变量)。这种耦合结构是稀疏的,可以被 exploit 以设计更高效的求解器。

*年来,机器学*社区在处理大规模优化问题方面发展了许多高效算法(例如,基于交替方向乘子法 ADMM 的各种变体)。这些现代工具为加速乘子法中原始更新步骤的求解提供了新的可能性,是值得探索的研究方向。

总结

本节课中我们一起学*了多阶段随机规划中两种重要的分解算法。

  • 我们首先完成了对偶分解法的讨论,学*了如何利用割平面模型求解对偶问题,并证明了如何从对偶解中恢复出原始最优解。
  • 接着,我们引入了增广拉格朗日乘子法,分析了其迭代格式和收敛性质,并通过*端点算法理论理解了其工作原理。
  • 最后,我们比较了两种方法的优缺点。对偶分解法擅长分解问题但可能收敛慢;乘子法迭代次数少但原始更新步骤计算复杂。两种方法都有进一步优化的空间,特别是可以结合现代优化算法中的新思路来提升其在大规模随机规划问题中的求解效率。

19:多阶段随机规划与SDDP方法 🎲

在本节课中,我们将学*多阶段随机线性规划的最后一部分内容,重点介绍一种结合了采样与优化的强大算法——随机对偶动态规划(SDDP)。我们将看到,当随机过程满足阶段独立性假设时,如何利用此假设大幅提升求解大规模场景树问题的效率。

概述与回顾

上一节我们介绍了处理多阶段随机规划问题的几种方法,包括原始方法和对偶方法。本节中,我们来看看一种专门为处理大规模场景树而设计的算法。

对于多阶段随机线性规划问题,我们已见过几种方法:

  • 原始方法:包括确定性等价形式和嵌套分解法。
  • 对偶方法:包括对偶分解和增广拉格朗日法(如ALC方法)。

这些方法都假设给定一个场景树,并基于此树求解。然而,当场景树非常庞大时,这些方法都会面临计算挑战。例如,嵌套分解法需要为树中的每个节点求解一个线性规划(LP),节点数量会随着阶段数和分支数爆炸式增长。

阶段独立性假设

为了高效处理大规模问题,我们今天引入一个关键假设:阶段独立性。这意味着未来的随机性不依赖于过去的历史,只与当前阶段有关。

考虑一般的多阶段随机线性规划问题,其随机向量可能包含成本 c、矩阵 ATW 和需求向量 b。其动态规划方程通常依赖于历史状态。

然而,在阶段独立性假设下,无论处于哪个节点,未来的随机过程都是相同的。因此,每个阶段只需要一个单一的价值函数,而不是为每个历史节点都定义一个。这极大地简化了问题的结构。

一个转换技巧

有时,原始问题并不直接满足阶段独立性。但我们可以通过引入辅助变量进行转换。例如,假设需求向量 b_t 遵循一个自回归过程:
b_t = ρ * b_{t-1} + ε_t
其中 ε_t 是独立随机变量。我们可以将 b_{t-1} 作为状态变量引入决策中,从而将随机性转移到独立的 ε_t 上,使新问题满足阶段独立性。这种技巧在诸如水电系统调度等实际问题中非常有用。

嵌套分解法的局限与SDDP的动机

嵌套分解法需要在前向传播中访问场景树的所有节点以计算上界,在后向传播中为每个节点生成割平面以*似价值函数。对于大型树,计算成本高昂。

SDDP方法的核心思想是:利用阶段独立性假设,在每次迭代的前向传播中,只随机采样少数几条场景路径,而不是遍历整棵树。由于每个阶段只有一个价值函数,即使只沿着一条路径前进,我们在后向传播中也能更新这个唯一的价值函数*似。

随机对偶动态规划(SDDP)算法 🚀

SDDP算法可以看作是嵌套分解法与随机采样的结合。其主要步骤如下:

  1. 初始化:为每个阶段的价值函数构建一个初始的割平面模型(通常开始时没有割,或仅有一个下界)。
  2. 前向传播(带采样)
    • 从根节点开始,随机选择一条场景路径(即一个完整的场景)。
    • 沿着该路径,在每个节点求解当前割平面模型下的LP,得到该节点的决策变量值 x_t^k
    • 记录该路径上的总成本。重复此过程多次(采样多个场景),用这些样本成本的平均值来估计原问题目标值的上界。
    • 注意:此上界是基于样本的估计,并非真实问题的严格上界。
  3. 后向传播
    • 从最后阶段开始,向前一阶段回溯。
    • 对于前向传播中访问过的每个决策点 x_t^k,求解其所有可能后续节点(对应于该阶段的所有随机实现)的子问题LP。
    • 利用这些子问题的解和对偶变量,为该阶段的价值函数生成新的割平面,并更新割平面模型(取最大值以保持下界性质)。
    • 此过程一直进行到根节点。根节点问题的最优值给出了原问题目标值的一个下界
  4. 迭代与停止:重复步骤2和3。随着迭代进行,价值函数的*似越来越精确,下界逐渐上升。算法可以根据启发式规则停止,例如:
    • 达到最大迭代次数。
    • 下界在连续多次迭代中变化很小。
    • 基于样本的上界估计与当前下界的差距小于某个容差(需注意样本估计的方差)。

SDDP的优势与特性

  • 计算效率:一次迭代的计算复杂度与采样场景数之和成正比,而非所有节点数的乘积,这使其能处理非常大的场景树。
  • 收敛性:在阶段独立性、相对完全追索等假设下,理论上可以证明,若能无限次运行且以正概率采样到每个场景,算法能以概率1收敛到最优解。
  • 实践应用:SDDP是求解大规模多阶段随机规划问题的强大工具,尤其在能源规划领域应用广泛。

其他相关方法与注意事项

  • CPSS方法:另一种结合采样与割平面的方法。它在每次迭代中只沿一条场景路径前向传播,并立即利用当前解生成割平面,没有系统的后向传播步骤。它同样具有收敛性。
  • 可行性割:在实现割平面生成函数时,必须处理好子问题不可行的情况,生成可行性割。即使当前测试问题满足相对完全追索,也应实现此功能以应对更一般的问题。
  • 实现建议
    • 保持代码的通用性,允许成本、矩阵、右端项等均可为随机变量。
    • 处理大规模确定性等价问题时,注意使用稀疏矩阵存储以避免内存问题。
    • 遵循指定的输入输出格式,便于后续测试和扩展。

总结

本节课中,我们一起学*了处理多阶段随机线性规划的最终利器——随机对偶动态规划(SDDP)。我们首先回顾了阶段独立性假设及其重要性,它使得每个阶段的价值函数得以简化。接着,我们探讨了嵌套分解法在处理大规模场景树时的瓶颈,从而引出了SDDP的基本动机:通过在前向传播中随机采样场景路径来降低计算成本

我们详细剖析了SDDP算法的步骤:带采样的前向传播用于估计上界,系统的后向传播用于更新价值函数割平面并计算下界。我们还讨论了算法的收敛性、优势以及在实际实现中的注意事项。

SDDP是随机规划领域一个里程碑式的算法,它成功地将蒙特卡洛采样与数学规划的分解技术相结合,使得求解具有海量场景的实际多阶段决策问题成为可能。从下节课开始,我们将进入新的主题——风险度量。

20:风险度量入门 📊

在本节课中,我们将开始学*一个新的主题:风险度量。我们将回顾随机规划中的一些基本概念,并探讨为什么仅使用期望值作为决策标准可能不够,从而引出对风险进行量化度量的需求。

从随机规划到风险度量 🔄

在之前的课程中,我们处理随机规划问题,是因为存在一些未来的未知事件。例如,在报童问题中,明天的需求是未知的,但今天就需要决定购买多少报纸。根据今天所做的决策,未来的财务状况会发生变化。

在数学上,我们通常用随机变量来表示未来的不确定结果。我们可以区分两种决策:

  • 第一阶段决策:现在做出的决策,用变量 x 表示。采取此决策会产生一个成本,记为 f(x)
  • 第二阶段决策:在未来的不确定变量实现后,可以采取的决策。这会产生另一个成本。

因此,对于现在做出的每一个决策 x,我们在未来都有一个成本分布。我们的任务变成了在众多分布中进行选择。

为什么仅用期望值不够? 🤔

到目前为止,我们选择决策的标准是最小化期望成本。这种方法假设事件是独立的,并且我们可以长期重复决策,使得平均利润接*期望值。

然而,这种方法存在一个问题:即使一个决策的期望成本最低,但某一次具体的实现结果可能非常糟糕,导致破产,从而无法继续等待“好年景”来补偿。因此,在某些情况下,我们需要更谨慎地考虑决策,以避免这种灾难性的结果。

以下是几个具有相同期望值但风险不同的分布示例:

  • 分布A:方差很大,可能出现极好或极坏的结果,风险很高。
  • 分布B:方差较小,避免了极坏结果,但也避免了极好结果。
  • 分布C:避免了极坏结果,但极好结果的可能性依然存在。

我们需要一种方法来量化这种“风险”,以便在决策时不仅能考虑平均表现,还能考虑不利结果的严重性。

风险度量的形式化定义 📈

风险度量是一个函数 ρ,它将一个随机变量 Z(代表未来的成本或损失)映射到扩展实数集上的一个数值 ρ(Z)。通常,我们在 空间(期望值有限的随机变量空间)上考虑风险度量,但有时也需要更严格的空间(如 )。

期望值本身就是一个风险度量,但它被认为是“风险中性”的,因为它没有对不利结果给予特别关注。

风险价值 📉

我们介绍的第一个具体风险度量是风险价值。它在过去非常流行,具有许多良好性质,并且是其他风险度量的基础。

分位数回顾

为了定义VaR,我们首先需要回顾分位数的概念。对于一个随机变量 Z,其累积分布函数为 F_Z(t) = P(Z ≤ t)。对于给定的概率水平 α ∈ (0,1)Zα-分位数 定义为:

q_α (Z) = inf { t ∈ R : F_Z(t) ≥ α }

这个集合总是一个左闭右开的区间 [a, +∞),其中 a 就是下确界 q_α (Z)。如果 F_Zq_α (Z) 处连续,则有 F_Z(q_α (Z)) = α

VaR的定义

对于给定的置信水平 α ∈ (0,1)(通常取 0.95 或 0.99),随机变量 Z(代表损失)的 风险价值 定义为:

VaR_α (Z) = q_α (Z) = inf { t ∈ R : P(Z ≤ t) ≥ α }

直观地说,VaR_α (Z) 表示在 1-α 的概率下,损失不会超过这个值。或者说,损失超过 VaR_α (Z) 的概率最多为 α。例如,VaR_{0.95}(Z) = 100 意味着我们有95%的把握损失不会超过100。

从定义可以直接推导出两个有用的不等式:

  1. P(Z > VaR_α (Z)) ≤ 1 - α
  2. 对于任意 ε > 0,有 P(Z > VaR_α (Z) - ε) > 1 - α

VaR的计算示例

以下是两个常见分布下VaR的计算:

  • 均匀分布 U(a, b)VaR_α (Z) = a + α(b - a)
  • 正态分布 N(μ, σ²)VaR_α (Z) = μ + σ * Φ^{-1}(α),其中 Φ 是标准正态分布的CDF。

风险度量的理想性质 ✅

我们期望一个好的风险度量具备一些直观的数学性质。

以下是几个关键性质及其解释:

  • 平移不变性ρ(Z + a) = ρ(Z) + a,其中 a 是常数。这意味着增加一个确定的损失,风险也增加相同的量。
  • 正齐次性:对于 λ ≥ 0,有 ρ(λZ) = λ ρ(Z)。这意味着将损失放大 λ 倍,风险也放大 λ 倍。
  • 单调性:如果 P(Z₁ ≤ Z₂) = 1(即 Z₁ 几乎处处不大于 Z₂),则 ρ(Z₁) ≤ ρ(Z₂)。这意味着损失更小的随机变量,其风险也更小。
  • 次可加性ρ(Z₁ + Z₂) ≤ ρ(Z₁) + ρ(Z₂)。这是分散化投资的数学体现:将资金分散到多个资产(其损失为 Z₁Z₂)可以降低整体风险。

可以验证,期望值风险价值都满足前三个性质。然而,风险价值不满足次可加性

VaR不满足次可加性的反例 ⚠️

我们通过一个反例来证明VaR不是次可加的。考虑两个独立同分布的随机变量 XY,其密度函数为:

  • 在区间 [-1, 0] 上,密度为 0.9
  • 在区间 [1, 2] 上,密度为 0.05

计算可得,在 α = 0.1 的水平下,VaR_{0.1}(X) = VaR_{0.1}(Y) = 0
然而,通过计算 X+Y 的分布,我们可以发现 VaR_{0.1}(X+Y) > 0
因此,VaR_{0.1}(X+Y) > VaR_{0.1}(X) + VaR_{0.1}(Y),违反了次可加性。

这意味着,使用VaR作为风险度量,可能会得出“分散化投资反而增加风险”的荒谬结论,这与金融学的基本原理相悖。这也是VaR在后来的应用中逐渐被其他风险度量(如条件风险价值)补充或替代的重要原因之一。

总结 📝

本节课中,我们一起学*了风险度量的基本概念。我们从随机规划的决策问题出发,指出了仅依赖期望值的不足,从而引出了对风险进行量化的需求。我们形式化地定义了风险度量函数,并重点介绍了风险价值 的定义、计算和基本性质。最后,我们探讨了风险度量的几个理想性质,并通过反例揭示了VaR的一个关键缺陷:不满足次可加性,这会导致其无法鼓励风险分散。在下一讲中,我们将介绍另一个更优的风险度量——条件风险价值,并进一步讨论风险度量的凸性等问题。

21:风险度量(续)与平均在险价值

在本节课中,我们将继续学*风险度量,重点介绍平均在险价值这一概念。我们将首先回顾上一讲讨论的在险价值,分析其局限性,然后深入探讨平均在险价值的定义、性质及其作为一致性风险度量的优势。

回顾在险价值

上一节我们介绍了在险价值。对于一个随机变量 Z 和风险水平 α ∈ (0,1),在险价值 VaR_α(Z) 定义为满足以下条件的最小值 t

VaR_α(Z) = min { t ∈ R : P(Z ≤ t) ≥ 1-α }

或者等价地,VaR_α(Z)Z 的累积分布函数 F_Z1-α 水平上的分位数。

从定义出发,我们可以推导出一些重要的概率不等式。对于任何 α,以下关系总是成立:

P(Z > VaR_α(Z)) ≤ α ≤ P(Z ≥ VaR_α(Z))

如果随机变量 Z 是连续的,那么上述两个概率相等,都等于 α。然而,当分布存在“原子”(即概率质量点)时,α 会落在上述两个概率值之间。

这个性质揭示了在险价值的一个缺点:当分布存在原子时,对于落在区间 [P(Z > VaR_α(Z)), P(Z ≥ VaR_α(Z))] 内的不同风险容忍度 β,计算出的在险价值 VaR_β(Z) 是相同的。这意味着在险价值无法区分风险容忍度的细微变化,这是其作为风险度量的另一个不足,此外它还不满足次可加性。

一致性风险度量

在上一讲中,我们定义了风险度量应具备的一些良好性质:平移不变性、单调性、正齐次性和次可加性。满足这四条性质的风险度量被称为一致性风险度量

在险价值不满足次可加性,因此不是一致性风险度量。而期望值虽然是一致性度量,但作为风险度量不够有区分度。因此,我们感兴趣的是既一致又有实际意义的风险度量。

一个重要的等价关系是:对于正齐次的风险度量,次可加性等价于凸性。这意味着任何一致性风险度量都是凸函数,这在优化问题中是一个非常好的性质,因为凸优化通常具有良好的数学性质和求解算法。

引入平均在险价值

为了克服在险价值的“短视”问题(即只关注分位点,而忽略分位点之外尾部损失的严重程度),我们引入平均在险价值

首先考虑连续随机变量 Z ∈ L^1 的情况。对于风险水平 α ∈ (0,1),平均在险价值定义为在险价值水平之上的条件期望:

AVaR_α(Z) = E[ Z | Z ≥ VaR_α(Z) ]

由于 Z 连续,P(Z ≥ VaR_α(Z)) = α,因此上式等价于:

AVaR_α(Z) = (1/α) E[ Z * I_{Z ≥ VaR_α(Z)} ]

其中 I 是指示函数。

这个定义直观地考虑了最坏的 α 比例损失的平均水平,因此比在险价值对尾部风险更敏感。

平均在险价值的优化表示

上述定义虽然直观,但在计算和分析上并不方便,因为它需要先计算在险价值。一个更优美的处理方式是将其表示为一个优化问题。

我们定义函数 g(u)

g(u) = u + (1/α) E[ (Z - u)_+ ]

其中 (x)_+ = max{x, 0} 表示正部函数。

可以证明,对于连续随机变量 Z,函数 g(u) 是凸的、可微的,并且其在 u = VaR_α(Z) 处的导数为零。这意味着 VaR_α(Z)g(u) 的一个极小值点,并且该极小值恰好等于 AVaR_α(Z)

AVaR_α(Z) = min_{u ∈ R} { u + (1/α) E[ (Z - u)_+ ] }

这个优化表示形式不依赖于连续性假设,因此我们可以将其作为平均在险价值对于一般随机变量(包括离散和有原子的分布)的定义

对于一般的 Z ∈ L^1,我们定义:

AVaR_α(Z) = inf_{u ∈ R} { u + (1/α) E[ (Z - u)_+ ] }

可以证明:

  1. 目标函数 g(u) 是凸的、有限的,并且是强制的(当 |u| → ∞ 时,g(u) → ∞),因此优化问题至少存在一个解。
  2. 在险价值 VaR_α(Z) 总是该优化问题的一个解(尽管可能不是唯一解)。
  3. 最优值就是平均在险价值。

这个定义是一致且优雅的,它推广了连续情况下的条件期望定义,并且天然地具有一致性风险度量的所有良好性质。

平均在险价值的性质

以下是平均在险价值的一些关键性质:

  • 一致性:平均在险价值是一致性风险度量,满足平移不变性、单调性、正齐次性和次可加性(凸性)。
  • 与在险价值的关系:对于相同的 αZ,平均在险价值总是大于或等于在险价值:AVaR_α(Z) ≥ VaR_α(Z)。因为它考虑了更极端损失的平均水平。
  • 关于α的单调性:如果 0 < α < β < 1,那么 AVaR_α(Z) ≥ AVaR_β(Z)。这意味着风险水平 α 越小(你越不能容忍风险),计算出的风险值就越大,这与直觉一致。α 可以理解为风险容忍度
  • 极限情况
    • α → 1 时,AVaR_α(Z) 趋*于 E[Z],即期望值。这表示如果你完全容忍风险(α=1 对应着考虑所有可能情况),那么风险度量就退化为简单的期望。
    • α → 0 时,AVaR_α(Z) 趋*于 Z本质下确界(在支撑集上的最大下界)。这表示如果你完全不能容忍风险(α=0 对应着只考虑最坏的情况),那么风险度量就是最坏可能的结果。

总结

本节课中我们一起学*了:

  1. 回顾了在险价值的定义,并指出了其在存在原子分布时无法区分不同风险容忍度,以及不满足次可加性的局限性。
  2. 介绍了一致性风险度量的概念,即满足四条公理(平移不变、单调、正齐次、次可加/凸)的风险度量。
  3. 引入了平均在险价值作为在险价值的改进。我们首先在连续情况下给出了其条件期望的直观定义。
  4. 重点介绍了平均在险价值的优化问题表示形式:AVaR_α(Z) = inf_{u ∈ R} { u + (1/α) E[ (Z - u)_+ ] }。这个定义适用于所有可积随机变量,并且是后续分析和计算的基础。
  5. 讨论了平均在险价值的优良性质,包括它是一致性风险度量,以及其值关于风险水平 α 的单调性和极限行为。

平均在险价值因其理论上的良好性质和实际中对尾部风险的关注,成为了金融工程和风险管理中非常重要的工具。在接下来的课程中,我们将继续探索其他风险度量及其在随机规划中的应用。

22:平均在险价值与风险度量

在本节课中,我们将继续学*风险度量,重点探讨平均在险价值(Average Value at Risk, AVaR)的性质。我们将看到,与在险价值(VaR)不同,AVaR对风险容忍度的变化更为敏感,并且是一个一致性风险度量。

上一讲我们介绍了在险价值(VaR)及其局限性。本节中,我们将深入探讨其改进版本——平均在险价值。

回顾与定义

首先,让我们回顾一下上一讲的关键点。对于一个给定的风险容忍水平 α,我们知道以下不等式成立:

P(Z > VaR_α(Z)) ≤ α ≤ P(Z ≥ VaR_α(Z))

当随机变量 Z 在 VaR_α(Z) 处连续时,这两个概率相等。然而,当该点存在“原子”(即概率质量)时,VaR 对 α 在该区间内的微小变化并不敏感。

今天,我们将继续研究平均在险价值(AVaR),并会看到这个新的风险度量对风险水平的变化是敏感的。

上一讲中,我们为连续随机变量定义了 AVaR。当 Z 是连续随机变量时,AVaR 被定义为在 Z 超过 VaR 的条件下的期望值:

AVaR_α(Z) = E[Z | Z > VaR_α(Z)]

由于连续性,这个定义很清晰。然而,对于一般的随机变量(例如离散型),这个定义并不直接适用。

一个有趣的发现是,对于连续随机变量,AVaR 可以通过以下优化问题的最优值来计算:

AVaR_α(Z) = min_{u ∈ R} { u + (1/α) E[(Z - u)^+] }

其中 (x)^+ = max{x, 0}。并且,这个优化问题的一个解就是 VaR_α(Z)。

基于这个结果,我们尝试为一般的 L1 可积随机变量 Z 给出一个通用的 AVaR 定义:

AVaR_α(Z) = inf_{u ∈ R} { u + (1/α) E[(Z - u)^+] }

这个定义总是有限的,并且是连续情况下的良好推广。很容易看出,AVaR 总是大于等于 VaR:

AVaR_α(Z) ≥ VaR_α(Z)

因为 VaR 是该优化问题的一个可行解。

风险水平趋*于极端值时的行为

在深入探讨 AVaR 的性质之前,我们先来看一些关于 VaR 在风险水平趋*于 0 或 1 时的理论结果,这些结果对未来有用。

VaR 在 α=0 时的扩展定义

对于 α ∈ (0,1),VaR 的定义为:

VaR_α(Z) = inf { t : F_Z(t) ≥ 1-α }

其中 F_Z 是累积分布函数。我们可以尝试将这个定义扩展到 α=0:

VaR_0(Z) = inf { t : F_Z(t) ≥ 1 }

这个集合可能为空(此时下确界为 +∞),也可能有限。这代表了一种极端的风险厌恶态度。

相关性质

以下是几个重要的关系:

  1. 单调性:如果 β ≥ α,则 VaR_β(Z) ≤ VaR_α(Z)。这意味着风险容忍度越低(α 越小),VaR 值越大,即越厌恶风险。
  2. 极限行为:当 α ↘ 0(从右侧趋*于0)时,VaR_α(Z) → VaR_0(Z)
  3. 与本质确界的关系:可以证明,VaR_0(Z) = ess sup(Z),即随机变量 Z 的“最坏可能”值。这证实了 α=0 时代表极端的风险厌恶。

这些结果表明,随着 α 趋*于 0,VaR 度量收敛于最坏情景下的结果。

平均在险价值(AVaR)的性质

现在,让我们回到 AVaR 的主要性质。与 VaR 类似,AVaR 也具有单调性:

  • 当 α ↘ 0 时,AVaR_α(Z) 增加,并收敛于 VaR_0(Z) = ess sup(Z)
  • 当 α ↗ 1 时,AVaR_α(Z) 减少,并收敛于 E[Z],即期望值。这代表风险中立。

更重要的是,AVaR 是一个一致性风险度量。这意味着它满足以下四个性质:

  1. 平移不变性AVaR_α(Z + c) = AVaR_α(Z) + c,对于任意常数 c。
  2. 单调性:如果 Z_1 ≤ Z_2 几乎处处成立,则 AVaR_α(Z_1) ≥ AVaR_α(Z_2)
  3. 次可加性AVaR_α(Z_1 + Z_2) ≤ AVaR_α(Z_1) + AVaR_α(Z_2)
  4. 正齐次性:对于 λ ≥ 0,有 AVaR_α(λZ) = λ AVaR_α(Z)

以下是这些性质的简要证明思路:

  • 平移不变性:在定义式 u + (1/α)E[(Z+c - u)^+] 中,令 v = u - c,即可得证。
  • 单调性:利用 (Z_1 - u)^+ ≥ (Z_2 - u)^+(因为 Z_1 ≤ Z_2),然后对优化问题取最小值。
  • 次可加性:利用不等式 (x+y)^+ ≤ x^+ + y^+,并分别对涉及 Z_1Z_2 的部分进行最小化。
  • 正齐次性:对于 λ > 0,可将 λ 从期望中提出;对于 λ = 0,可直接计算。

由于 AVaR 在 α → 0 时的极限是 ess sup(Z),而一致性性质在极限下得以保持,这意味着 ess sup(Z) 本身也是一个一致性风险度量。这与非零 α 下的 VaR(不满足次可加性)形成鲜明对比。

AVaR 的表达式与敏感性

对于一般的随机变量 Z,AVaR 有一个介于两个条件期望之间的表达式:

E[Z | Z > VaR_α(Z)] ≤ AVaR_α(Z) ≤ E[Z | Z ≥ VaR_α(Z)]

当 Z 连续时,等号成立。当 VaR 处存在原子时,AVaR 会根据风险容忍度 α,取这两个条件期望之间的某个值。

这解释了为什么 AVaR 对 α 敏感。考虑概率:

p_> = P(Z > VaR_α(Z)) 和 p_≥ = P(Z ≥ VaR_α(Z))

我们知道 p_> ≤ α ≤ p_≥。当 α 接* p_> 时,投资者非常厌恶风险,AVaR 接*上界 E[Z | Z ≥ VaR_α(Z)](即包含最坏情况原子的期望)。当 α 接* p_≥ 时,投资者更容忍风险,AVaR 接*下界 E[Z | Z > VaR_α(Z)]

因此,与在固定区间内保持不变的 VaR 不同,AVaR 会随着 α 在这个区间内的变化而平滑(或连续)地变化,真实反映了投资者风险偏好的改变。

下半连续性与连续性

最后,从数学分析的角度,AVaR 作为从 L1 空间到实数的泛函,具有很好的正则性。

  • 下半连续性:AVaR 是下半连续的。这意味着其上方图 { (Z, t) : t ≥ AVaR_α(Z) } 是闭集。在凸分析和对偶理论中,下半连续性对于保证分离定理等工具的应用至关重要。
  • 局部利普希茨连续性:实际上,AVaR 是局部利普希茨连续的。在一个赋范空间(如 Lp 空间)中,对于一个真凸函数,局部上有界性与局部利普希茨连续性是等价的。由于我们可以证明 AVaR 在相关空间中是局部有界的,因此它也是局部利普希茨连续的,这比单纯连续更强。

这种连续性保证了数值计算的稳定性和优化问题中理论结果的适用性。

本节课中我们一起学*了平均在险价值的核心性质。我们了解到 AVaR 是对 VaR 的重要改进,它不仅对风险水平的变化敏感,而且满足一致性公理,是一个更优的风险度量工具。我们还探讨了其在极端风险水平下的行为,以及其良好的数学性质(如连续性)。下一讲我们将继续利用这些性质,深入随机优化问题。

23:风险度量与可接受集

在本节课中,我们将学*凸函数的一个重要性质,并探讨如何利用可接受集来定义和构建一致风险度量。我们将重点关注平均风险价值(AVaR)的计算技巧及其在优化问题中的应用。

凸函数与Lipschitz连续性

上一讲我们提到了一个关于凸函数的重要定理。本节中,我们来看看该定理的一个更具体的版本。

假设 F 是一个凸泛函,从一个赋范空间映射到实数集,并且是正齐次的。那么以下三个陈述是等价的:

  1. 函数 F 在零点附*有上界。即存在常数 M,使得对于所有满足 |X| ≤ 1 的向量 X,有 F(X) ≤ M
  2. 函数 F 在整个空间上有界。即存在常数 M,使得对于所有向量 X,有 F(X) ≤ M |X|
  3. 函数 F 是Lipschitz连续的。

证明这个命题并不困难。例如,从陈述1推导到陈述2,我们可以利用函数的正齐次性。对于任意向量 X,向量 X / |X| 的范数为1。根据陈述1,有 F(X / |X|) ≤ M。再由正齐次性可得 F(X) ≤ M |X|

从陈述2推导到陈述3,可以利用凸函数的次可加性。对于任意向量 XY,有:
F(X) - F(Y) ≤ F(X - Y) ≤ M |X - Y|
交换 XY 的位置,可得 |F(X) - F(Y)| ≤ M |X - Y|,这证明了Lipschitz连续性。

对于我们的风险度量,只要风险度量是有限的,要证明其连续性(甚至是Lipschitz连续性),我们只需要证明它在零点附*有上界。

平均风险价值(AVaR)的连续性

对于平均风险价值,证明其连续性相对容易。

我们知道,对于任意实数 u,AVaR的定义满足:
AVaR_α(Z) ≤ u + (1/α) E[(Z - u)^+]

特别地,选择 u = 0,我们得到:
AVaR_α(Z) ≤ (1/α) E[Z^+] ≤ (1/α) E[|Z|]

如果我们考虑空间 L^1 中的随机变量 Z,且其范数 |Z|_1 ≤ 1,那么:
AVaR_α(Z) ≤ 1/α

这表明AVaR在零点附*有上界。因此,根据前面的命题,AVaR是Lipschitz连续的,进而是次可微的。

两阶段随机规划问题中的AVaR

现在,我们来看看如何将AVaR应用于实际问题,例如两阶段随机线性规划。

标准的期望值模型如下:
min { c^T x + E[Q(x, ξ)] : Ax = b, x ≥ 0 }
其中 Q(x, ξ) 是第二阶段的费用函数。

如果我们用AVaR来度量风险,问题变为:
min { c^T x + AVaR_α[Q(x, ξ)] : Ax = b, x ≥ 0 }

由于AVaR的单调性,可以证明这个问题等价于:
min { AVaR_α[ c^T x + Q(x, ξ) ] : Ax = b, x ≥ 0 }

然而,直接求解包含AVaR的问题并不容易,因为AVaR不是线性的,且通常不可微。

AVaR的求解技巧

为了克服这些困难,我们可以利用AVaR的另一种定义形式。

AVaR可以表示为以下优化问题的最优值:
AVaR_α(Z) = min_{u ∈ R} { u + (1/α) E[(Z - u)^+] }

将这个定义代入原问题,我们得到一个双层最小化问题。我们可以将外层的最小化变量 u 引入内层,合并为一个单一的优化问题,从而增加一个决策变量。

如果考虑离散场景(有限个情景),期望值就变成了求和。但目标函数中仍有 (\cdot)^+ 项,是非线性的。

我们可以通过引入额外的变量和约束来将其线性化。对于每个场景 s,我们引入变量 t_s,并添加约束:
t_s ≥ 0
t_s ≥ Z_s - u

这样,原问题就转化成了一个完全线性的优化问题。这种方法的代价是增加了变量和约束的数量,在场景很多时可能影响求解效率。

另一种思路是使用AVaR的光滑*似版本,用光滑的凸函数*似 (\cdot)^+ 函数,从而得到一个可微的问题,便于使用基于梯度的算法(如牛顿法),同时能保持问题的原始结构。

带有AVaR约束的问题

有时我们遇到的问题包含AVaR约束,例如:
AVaR_α(Z) ≤ v

利用AVaR的定义,这个约束等价于存在一个 u,使得:
u + (1/α) E[(Z - u)^+] ≤ v

同样地,对于离散场景,我们可以引入辅助变量将其转化为一组线性约束。

从可接受集定义风险度量

现在,我们从另一个角度来理解一致风险度量:通过可接受集。

我们考虑一个随机变量空间(通常是 L^p 空间)。定义一个子集 A,称为“可接受集”,它包含了所有我们认为“可接受”的随机变量(例如,可以承受的损失)。

对于一个不可接受的随机变量 Z(例如,可能造成巨大损失的随机成本),我们可以考虑支付一笔钱 t,使得调整后的损失 Z - t 变得可接受。很自然地,我们希望找到最小的 t。于是,我们可以定义风险度量 ρ 为:
ρ(Z) = inf { t ∈ R : Z - t ∈ A }

可以证明,无论可接受集 A 如何定义,这样得到的风险度量 ρ 都具有平移不变性。

构建一致风险度量

然而,如果我们希望 ρ 是一个一致风险度量,就需要对可接受集 A 施加一些条件。

以下是构建一致风险度量所需的条件:

  1. A 包含所有几乎必然为负的随机变量(即 L^- ⊆ A)。这意味着确定的盈利总是可接受的。
  2. A 是一个锥。即如果 Z ∈ A,那么对于任意 λ ≥ 0,有 λZ ∈ A
  3. A 是凸集。
  4. A 不包含任何几乎必然为正的随机变量(即 A ∩ L^+ = {0})。这意味着确定的损失是不可接受的。

如果可接受集 A 满足以上四个条件,那么由它定义的风险度量 ρ 就是一个一致风险度量。此外,如果 A 是闭集,那么 ρ 是下半连续的。

可接受集的例子

让我们看几个可接受集的例子。

  • 极端保守集:取 A = L^-,即只接受必然盈利的情况。此时定义的风险度量为:
    ρ(Z) = inf { t : Z - t ≤ 0 a.s. } = ess sup(Z)
    这正是最坏情况风险度量,它是一致风险度量。
  • 极端激进集:考虑期望值 E[Z] 作为风险度量。其可接受集为 { Z : E[Z] ≤ 0 },这是一个半空间。
  • AVaR的可接受集:对于 AVaR_α,其可接受集为 { Z : AVaR_α(Z) ≤ 0 }。这是一个介于上述两个极端之间的凸锥。

实际上,每个一致风险度量 ρ 都对应一个可接受集 A_ρ = { Z : ρ(Z) ≤ 0 },并且这个集合满足上述四个条件。反之,从一个满足条件的可接受集出发,也能定义出一个一致风险度量。这构成了风险度量两种视角之间的对偶关系。

总结

本节课中我们一起学*了:

  1. 凸函数Lipschitz连续性的一个充分条件:在零点附*有上界。
  2. 平均风险价值(AVaR)是Lipschitz连续的,并且可以通过引入辅助变量和约束,将包含AVaR的优化问题转化为线性规划问题。
  3. 可以从“可接受集”的角度定义风险度量。通过要求可接受集满足包含负锥、是凸锥、不包含正元素等条件,可以构造出一致风险度量。
  4. 一致风险度量与其可接受集之间存在一一对应的对偶关系,这为理解风险度量提供了另一个直观的几何视角。

在下一讲,也是关于风险度量的最后一讲中,我们将从凸共轭函数的角度,更深入地探讨一致风险度量的对偶表示结构。

24:风险度量的对偶理论

在本节课中,我们将学*凸分析中的一个核心工具——Fenchel共轭,并探讨其在风险度量理论中的应用。我们将从基本定义出发,逐步构建理论框架,最终揭示相干风险度量的对偶表示形式。

基本定义与概念

首先,我们介绍一些后续讨论所需的基础数学概念。

考虑一个定义在向量空间M(例如L^p空间)上的函数F,其值域为扩展的实数集R∪{±∞}。对于这样的函数,我们可以定义其上图

函数F的上图是乘积空间M×R的一个子集,定义为:

epi(F) = {(x, t) ∈ M × R : t ≥ F(x)}

上图直观地表示了函数图像及其上方的所有点。根据函数F的不同,其上图可能是空集、整个乘积空间,或介于两者之间的集合。

函数的有效域是指函数值不为正无穷的所有点构成的集合:

dom(F) = {x ∈ M : F(x) < +∞}

此外,对于任意实数l,我们可以定义函数的水平集

lev_l(F) = {x ∈ M : F(x) ≤ l}

如果一个函数F满足其有效域非空,且函数值从不取负无穷,则称该函数为正常函数。用公式表示,即:

∃ x ∈ M, F(x) ∈ R 且 ∀ x ∈ M, F(x) > -∞

正常函数是理论分析中一类“行为良好”的函数。

下半连续性与凸性

上一节我们介绍了函数的基本结构,本节中我们来看看函数的两类重要性质:连续性和凸性。

函数F被称为下半连续的,如果其上图epi(F)是M×R中的闭集。一个等价的定义是:对于任意实数l,其水平集lev_l(F)都是闭集。

下半连续性是一种正则性条件,在优化理论中非常重要。一个关键的性质是:如果一个函数族{F_λ}中的每个函数都是下半连续的,那么由它们定义的上确界函数 F(x) = sup_λ F_λ(x) 也是下半连续的。这是因为上确界函数的上图是所有单个函数上图的交集,而闭集的任意交仍然是闭集。

接下来我们定义凸性。函数F被称为凸函数,如果其上图epi(F)是M×R中的一个凸集。等价地,F是凸函数当且仅当对于定义域内的任意两点x, y和任意θ ∈ [0,1],满足:

F(θx + (1-θ)y) ≤ θF(x) + (1-θ)F(y)

凸函数具有一些很好的性质。例如,凸函数的有效域和所有水平集都是凸集。此外,与下半连续性类似,凸函数族的上确界函数仍然是凸函数。证明思路相同:凸集的交集仍然是凸集。

一个重要的特例是示性函数。对于空间M的任意子集D,其示性函数定义为:

I_D(x) = 0, 若 x ∈ D
       = +∞, 若 x ∉ D

示性函数的上图是D × R_+。因此,示性函数I_D是凸的当且仅当集合D是凸集;它是下半连续的当且仅当集合D是闭集。

Fenchel共轭

在建立了凸性和下半连续性的概念后,我们现在可以引入本节课的核心工具——Fenchel共轭。

为了定义共轭,我们需要一个赋范空间M及其对偶空间M。对偶空间由所有从M到R的连续线性泛函构成。对于x ∈ M 和 x ∈ M*,我们记它们之间的对偶配对为 <x*, x>。在具体空间中:

  • 若 M = R^n,则 M* = R^n,且 <x*, x> 就是标准内积。
  • 若 M = L^p(Ω, F, P),其中 1 ≤ p < ∞,则其对偶空间 M* 可以等同于 L^q(Ω, F, P),其中 1/p + 1/q = 1,且对偶配对为 <x*, x> = E[x* · x]

有了这些准备,函数F: M → R∪{±∞}的Fenchel共轭函数 F: M → R∪{±∞} 定义为:

F*(x*) = sup_{x ∈ M} { <x*, x> - F(x) }

由于我们允许函数值取±∞,这个上确界总是存在的。

共轭函数有一些非常重要的固有性质。无论原函数F如何,其共轭F总是凸函数且是下半连续的。这是因为对于每个固定的x,函数 G_x(x*) = <x*, x> - F(x) 关于x是线性(因此是凸且连续的),而F*是这一族函数的上确界。

我们可以从几何角度理解共轭。对于给定的斜率x* ∈ M,共轭值F(x)是使得仿射函数 l(x) = <x*, x> - γ 整体位于F图像下方(即 l(x) ≤ F(x) 对所有x成立)的最小截距γ。换句话说,-F*(x*) 是斜率为x的支撑超平面在垂直方向所能达到的最高位置。

让我们看一个简单例子。考虑函数 F(x) = max{x, 0},即正部函数。通过计算其共轭,我们可以得到:

F*(x*) = 0,         若 0 ≤ x* ≤ 1
       = +∞,        其他情况

这恰好是区间[0,1]的示性函数。这个结果与我们之前的几何直观相符:只有当斜率在0到1之间时,才能找到位于F图上方的直线。

另一个例子是线性函数 F(x) = <a, x>。其共轭为:

F*(x*) = 0,         若 x* = a
       = +∞,        若 x* ≠ a

这可以看作是单点集{a}的示性函数。

然而,如果原函数F“性质很差”,其共轭函数可能退化为恒为正无穷的函数,从而失去信息价值。因此,为了得到有意义的对偶理论,我们通常要求原函数F本身具有较好的性质,特别是凸性和下半连续性。

共轭运算的性质与Fenchel-Moreau定理

我们已经看到,即使原函数不凸,其共轭也是凸的。那么,对共轭函数再取一次共轭会怎样呢?这就是著名的Fenchel-Moreau定理所回答的问题。

首先,我们有两个基本引理。第一个引理指出,对于任何函数F,其二重共轭F**(限制回原空间M)总是满足 F**(x) ≤ F(x)。第二个引理则指出,如果F是正常、凸且下半连续的,那么它等于所有在其下方的仿射函数的上确界。

结合这两个引理,就得到了Fenchel-Moreau定理:若函数F: M → R∪{±∞}是正常、凸且下半连续的,则其二重共轭等于自身,即:

F**(x) = F(x), 对所有 x ∈ M

这个定理是对偶理论的基础。它意味着对于一个性质良好的凸函数,其全部信息都编码在其共轭函数中,并且可以通过二次共轭完全恢复。

此外,对于正常、凸、下半连续的函数F,其共轭F也是正常、凸、下半连续的。并且,F与F通过以下关系紧密联系:x* ∈ ∂F(x)(即x*是F在x点的次梯度)当且仅当:

F(x) + F*(x*) = <x*, x>

这个关系在优化和变分分析中至关重要。

应用于风险度量

现在,我们将上述凸分析工具应用于风险度量。设ρ: M → R∪{+∞}是一个风险度量,其中M通常是某个L^p空间。

首先,我们可以考察风险度量的性质如何影响其共轭ρ*。

  • 平移不变性:若ρ满足平移不变性,即 ρ(Z + c) = ρ(Z) + c,则在其共轭ρ的有效域内,所有元素Z都满足 E[Z*] = 1
  • 单调性:若ρ是单调的,则在其共轭ρ*的有效域内,所有元素几乎处处非负,即 Z* ≥ 0
  • 正齐次性:若ρ是正齐次的,则其共轭ρ*是一个示性函数。即,在其有效域内取值为0,在有效域外取值为+∞。

最重要的结果是关于相干风险度量的表示定理。假设ρ是一个正常、下半连续的相干风险度量(即满足平移不变性、单调性、次可加性和正齐次性)。那么,ρ必然是凸函数。根据Fenchel-Moreau定理和对偶性质,存在一个闭凸集U ⊆ M*,使得ρ可以表示为:

ρ(Z) = sup_{Z* ∈ U} E[Z* · Z]

其中集合U中的元素满足:Z* ≥ 0E[Z*] = 1。集合U正是共轭函数ρ*的有效域 dom(ρ*)

这个表示定理具有深刻的金融意义。集合U中的元素可以解释为概率测度变化的密度(因为非负且期望为1)。因此,任何相干风险度量都可以看作是在一族“广义场景”或“概率测度”下取期望损失的上确界。这为风险度量提供了一个清晰的对偶解释。

此外,风险度量ρ在0点的次微分∂ρ(0)恰好就是这个对偶集合U。而对于一般的点Z,其次微分∂ρ(Z)则是U中使得上确界 sup_{Z* ∈ U} E[Z* · Z] 达到最大的那些元素Z*构成的集合。

两个极端例子是:

  1. 期望风险度量:此时U只包含一个元素,即恒为1的密度,ρ(Z) = E[Z]
  2. 最坏情况风险度量:此时U包含所有满足条件的密度,ρ(Z) = ess sup(Z),即Z的上确界。

案例:平均风险价值(AVaR)

最后,我们应用该框架分析平均风险价值(AVaR)。对于置信水平α,AVaR定义为:

AVaR_α(Z) = inf_{u ∈ R} { u + (1/α) E[ (Z - u)_+ ] }

这是一个相干风险度量。根据表示定理,它必然存在一个对偶集合U_α。可以证明,这个集合为:

U_α = { Z* ∈ L^q : Z* ≥ 0, E[Z*] = 1, 且 Z* ≤ 1/α 几乎处处成立 }

因此,AVaR的对偶表示为:

AVaR_α(Z) = sup { E[Z* · Z] : Z* ≥ 0, E[Z*]=1, Z* ≤ 1/α }

进一步,对于给定的随机变量Z,设u是定义AVaR的那个优化问题的一个解。那么,AVaR在Z点的次微分∂AVaR_α(Z)由所有满足以下条件的Z ∈ U_α构成:

Z* = 1/α, 在集合 {Z > u*} 上
Z* = 0,   在集合 {Z < u*} 上
Z* ∈ [0, 1/α], 在集合 {Z = u*} 上

如果Z是连续型随机变量,那么集合{Z = u}的概率为零,此时次微分∂AVaR_α(Z)只包含一个元素,该元素在{Z > u}上取值为1/α,在{Z < u*}上取值为0。这意味着AVaR在Z点实际上是可微的(在某种推广的意义下)。

总结

本节课中我们一起学*了Fenchel对偶理论及其在风险度量中的应用。我们从凸函数、下半连续性、上图等基本概念出发,引入了Fenchel共轭运算,并阐述了其核心性质——共轭函数总是凸且下半连续的。随后,我们介绍了关键的Fenchel-Moreau定理,该定理表明性质良好的凸函数可通过其二重共轭完全恢复。

最后,我们将这套理论应用于风险度量。我们证明了任何正常、下半连续的相干风险度量,都存在一个对偶的闭凸概率密度集合U,使得该风险度量可以表示为在这族密度下取期望的上确界。这一对偶表示不仅深刻揭示了相干风险度量的数学结构,也为其计算和解释提供了有力工具。作为例子,我们详细推导了平均风险价值(AVaR)的对偶集合和次微分形式。

25:*端束方法 🧵

在本节课中,我们将学*用于求解凸但非光滑优化问题的专门方法——束方法。我们将重点关注*端束方法,其目标是解决随机规划问题。

问题背景与动机

我们考虑的问题是:在凸集 X 上最小化一个凸函数 f(x)。该函数 f(x) 通常难以精确计算,例如在两阶段或多阶段随机规划中,f(x) 可能涉及求解大量线性规划问题。我们称计算函数值和次梯度的过程为“神谕”或“黑盒”。由于每次调用神谕的计算成本很高,我们希望尽量减少调用次数。

传统的割平面方法(如L-Shaped方法)存在一些缺点:它不是下降方法,迭代过程可能不稳定,且需要可行集是紧集。束方法旨在克服这些缺点。

从割平面法到*端束方法

上一节我们回顾了割平面法的基本思想。本节中,我们来看看*端束方法如何对其进行改进。

割平面法通过构建一系列线性化(割平面)来*似原函数,形成模型 m_k(x),并通过求解 min_{x in X} m_k(x) 来获得新的迭代点。这种方法可能导致迭代点剧烈跳跃,且无法有效利用好的初始点。

*端束方法的核心改进是引入了一个“稳定中心” \hat{x}_k(即当前已知的最佳点)和一个二次正则项。其主问题形式如下:

x_{k+1} = argmin_{x in X} { m_k(x) + (1/(2t_k)) * ||x - \hat{x}_k||^2 }

其中:

  • m_k(x) 是当前基于“束”(即一组线性化信息)构建的*似模型。
  • \hat{x}_k 是稳定中心(当前最佳点)。
  • t_k > 0 是*端参数,控制新迭代点与稳定中心的距离。

这个二次项起到了稳定作用,防止迭代点偏离当前最佳区域太远。当 t_k 很大时,正则项影响小,方法类似于割平面法;当 t_k 很小时,新迭代点会被拉向稳定中心。

*端束方法的关键要素

以下是构成*端束方法的三个核心要素:

  1. *似模型 (m_k(x)): 该模型由一组线性化函数构成,且必须是从下方逼*原函数 f(x) 的凸函数。最简单的模型是割平面模型:m_k(x) = max_{i in B_k} { f(x_i) + g_i^T (x - x_i) },其中 B_k 是索引集合(即“束”),g_ifx_i 处的次梯度。

  1. 稳定中心 (\hat{x}_k): 这是算法迄今为止找到的函数值最小的点,被视为当前最优解的候选。算法通过“试探步”来测试新点,并根据函数值下降情况决定是否更新稳定中心(称为“严肃步”)。

  1. 参数更新机制: 主要是*端参数 t_k 的更新。当迭代产生“严肃步”(函数值充分下降)时,可以增大 t_k 以允许更大的探索步长;当产生“试探步”(下降不足)时,则减小 t_k 以加强稳定性。

算法步骤与决策规则

*端束方法的单次迭代包含以下步骤:

  1. 求解主问题: 给定当前稳定中心 \hat{x}_k、模型 m_k 和参数 t_k,求解上述带二次项的主问题,得到候选点 x_{k+1}
  2. 计算预测下降量: 计算 v_k = f(\hat{x}_k) - m_k(x_{k+1})。这代表了模型预测能从当前稳定中心获得的函数值下降量。
  3. 停止准则: 计算聚合次梯度 \hat{g}_k = (\hat{x}_k - x_{k+1}) / t_k 和聚合误差 \hat{e}_k。如果 ||\hat{g}_k||\hat{e}_k 都足够小,则算法停止,\hat{x}_k *似为最优解。
  4. 调用神谕: 在候选点 x_{k+1} 处计算真实的函数值 f(x_{k+1}) 和次梯度 g_{k+1}
  5. 判断是否更新稳定中心(严肃步判定): 如果实际下降量 f(\hat{x}_k) - f(x_{k+1}) 不小于 κ * v_k(其中 κ in (0, 1) 是一个固定参数,如0.1),则认为下降充分,执行严肃步:令 \hat{x}_{k+1} = x_{k+1}。否则,执行试探步:\hat{x}_{k+1} = \hat{x}_k
  6. 更新束集合: 将新的线性化 f(x_{k+1}) + g_{k+1}^T (x - x_{k+1}) 加入束集合 B_k 以更新模型。为了控制计算规模,可以删除一些旧的线性化,但必须保留一个特殊的“聚合线性化”,它总结了被删除信息的关键部分,以保证算法的收敛性。
  7. 更新参数: 根据当前步是严肃步还是试探步,按照启发式规则更新*端参数 t_k(例如,严肃步后增大,试探步后减小)。

优势总结

本节课我们一起学*了*端束方法的基本原理。与传统的割平面法相比,它具有以下优势:

  • 稳定性: 二次正则项防止了迭代点的剧烈跳跃。
  • 下降性: 稳定中心序列 { \hat{x}_k } 对应的函数值是单调不增的。
  • 利用初始点: 通过调整 t_k,可以有效地在好的初始点附*进行搜索。
  • 控制问题规模: 通过管理束集合的大小(利用聚合线性化),可以控制主问题(一个二次规划问题)的规模,避免其无限增长。
  • 可靠的停止准则: 基于聚合次梯度和聚合误差的停止准则具有坚实的理论依据。

在接下来的课程中,我们将探讨另一种束方法——水平束方法,并分析*端束方法的收敛性理论。

26:*端束方法与水平束方法 🎯

在本节课中,我们将要学**端束方法的收敛性分析,并介绍另一种束方法变体——水平束方法。我们将从回顾*端束方法的核心概念开始,然后深入分析其收敛性,最后探讨水平束方法的原理和算法流程。

*端束方法回顾 🔄

上一节我们介绍了*端束方法的基本框架,本节中我们来看看其核心组成部分。我们感兴趣的问题是最小化一个凸函数

问题定义:

min f(x)
s.t. x ∈ X

其中,f 是一个凸函数,X 是一个凸集(例如整个 R^n)。

*端束方法的关键组成部分之一是模型 f_M^k,它是多个线性化函数的最大值。这些线性化函数来自一个信息束,其索引集包含在 {1, 2, ...} 中。此外,束中还包含一个聚合线性化 f_a^k

*端子问题:
迭代点 x^{k+1} 是以下二次规划(QP)问题的唯一解:

min f_M^k(x) + (1/(2t_k)) * ||x - x̂^k||^2
s.t. x ∈ X

其中,x̂^k 是当前的稳定性中心。

如果我们用原函数 f 替换模型 f_M^k,那么上述问题就变成了标准的*端方法。但在随机优化中,函数 f(例如两阶段或多阶段问题)可能难以精确评估,因此我们用简单的模型来*似它,这正是“*端”一词的由来。

我们还有预测下降量 δ_k,定义为 f(x̂^k) - f_M^k(x^{k+1})。利用聚合线性化,可以证明预测下降量可以写成特定形式,并且满足一个重要的不等式。

重要不等式:
对于所有可行的 x,有:

f(x) ≥ f_M^k(x) ≥ f_a^k(x) = f(x̂^k) + <g_a^k, x - x̂^k> - e_a^k

其中,g_a^k 是聚合次梯度,e_a^k 是聚合误差。

我们的目标是生成一个点列,使得聚合误差 e_a^k 和方向范数 ||x^{k+1} - x̂^k|| 都趋于零。如果这两者都为零,那么稳定性中心 x̂^k 就是最优解。

算法流程简述:

  1. 从初始点开始,调用Oracle(黑箱)获取函数值和次梯度信息。
  2. 构建或更新模型。
  3. 求解上述QP子问题,得到候选点 x^{k+1}
  4. 计算预测下降量。
  5. 进行严肃步检验:如果函数值有足够下降,则更新稳定性中心(严肃步);否则,保持稳定性中心不变(零步)。
  6. 丰富模型信息(添加新的线性化),并循环。

收敛性分析 📈

对于收敛性分析,我们需要考虑两种互斥的情况。第一种情况是算法生成了无限多个严肃步,即稳定性中心序列 {x̂^k} 是无限的。第二种情况是严肃步的数量有限

我们将依赖于以下假设:函数 f 下有界,并且*端参数 t_k 远离零(有正下界)。

情况一:无限多个严肃步

假设算法生成了无限多个严肃步,我们希望证明聚合误差和方向范数趋于零。

根据严肃步的判定规则,当第 k 次迭代被声明为严肃步时,满足:

f(x̂^{k+1}) ≤ f(x̂^k) - κ * δ_k

其中,κ 是介于0和1之间的参数,δ_k 是预测下降量。

定义严肃步的索引集合 K_s。由于严肃步无限,且函数 f 下有界,通过对上述不等式从 k=0 求和,可以推导出当 k ∈ K_sk → ∞ 时,有 δ_k → 0

进一步,利用预测下降量的定义和QP问题的最优性条件,可以证明当 δ_k → 0 时,有 e_a^k → 0||x^{k+1} - x̂^k|| → 0。这就完成了第一种情况的证明。

情况二:有限个严肃步

第二种情况的证明更为复杂。其核心依赖于一个关于束管理的技术性引理。

关键引理(束管理):
如果我们选择的束信息(即用于构建模型的线性化集合)满足一定条件,特别是确保新的线性化和聚合线性化都在束中,那么我们可以证明,对于足够大的迭代次数 k,聚合误差满足:

e_a^k ≥ (1/(2t_k)) * ||x^{k+1} - x̂^k||^2

现在,假设严肃步只发生有限次。那么存在一个索引 K_bar,使得对于所有 k ≥ K_bar,稳定性中心 x̂^k 固定不变(即为 x̂^{K_bar})。

我们从这个引理出发。对于足够大的 k,利用该引理和模型的定义,经过一系列推导(类似于情况一),最终可以证明,对于零步的索引集合 K_n,当 k ∈ K_nk → ∞ 时,同样有 e_a^k → 0||x^{k+1} - x̂^k|| → 0

主要收敛定理

综合以上两种情况,我们得到*端束方法的主要收敛定理。

定理:
假设函数 f 下有界,*端参数 t_k 有正下界。那么:

  1. 存在一个索引集合 K,使得当 k ∈ Kk → ∞ 时,有 e_a^k → 0||x^{k+1} - x̂^k|| → 0
  2. 函数值序列 {f(x̂^k)} 收敛到 fX 上的下确界 f^*
  3. 稳定性中心序列 {x̂^k} 的任何聚点(如果存在)都是原优化问题的最优解。

如果进一步假设函数 f 是强制的(例如可行域有界),那么整个序列 {x̂^k} 会收敛到一个最优解。

水平束方法介绍 🔽

现在,我们转向另一种束方法变体——水平束方法。该方法由 Lemaréchal, Nemirovskii 和 Nesterov 在1995年提出。

水平束方法与*端束方法密切相关。主要区别在于,它将模型移到了约束中,并使用一个水平参数来代替*端参数。

水平子问题:
迭代点 x^{k+1} 是以下投影问题的解:

min (1/2) * ||x - x̂^k||^2
s.t. f_M^k(x) ≤ l_k
      x ∈ X

其中,l_k 是水平参数。这可以理解为将稳定性中心 x̂^k 投影到模型 f_M^k 的水平集 {x ∈ X: f_M^k(x) ≤ l_k} 上。

两种方法的联系:
事实上,通过拉格朗日对偶,可以证明在一定条件下,*端子问题的解也是某个特定水平参数下的水平子问题的解,反之亦然。参数 t_kl_k 通过最优拉格朗日乘子相联系。但在实际中,两种方法的行为有所不同。

水平束方法的一个显著特点是,稳定性中心的选择具有更大的灵活性。它不必是当前已知的最好点,可以是初始点或前一个迭代点。稳定性通过水平集约束来实现,该约束确保了新迭代点不会偏离“好”的函数值区域太远。

水平参数更新

水平参数 l_k 的更新至关重要。一个常见的策略是将其设置为当前最优值上界 f_k^{up} 和下界 f_k^{low} 的凸组合:

l_k = f_k^{low} + γ * (f_k^{up} - f_k^{low}), 其中 γ ∈ (0, 1)

这里,f_k^{up} 通常是当前最好函数值 f(x̂^k)f_k^{low} 是目标函数最优值的一个下界估计。

下界估计的获取:
有两种主要方式:

  1. 积极更新:在每次迭代时,通过求解一个线性规划(LP)来最小化当前模型,从而得到一个下界 f_k^{low} = min_{x∈X} f_M^k(x)。这能提供更紧的下界,可能减少迭代次数,但每次迭代需要多解一个LP。
  2. 惰性更新:保持一个固定的下界估计不变。当尝试求解水平子问题(投影)时,如果发现该水平集是空的(即 {x ∈ X: f_M^k(x) ≤ l_k} = ∅),则意味着当前的水平参数 l_k 已经低于模型所能达到的最小值,从而也低于真实函数的最优值。此时,我们可以将 l_k 设置为这个模型最小值(通过求解一次LP获得),并更新下界。这种方法在Oracle调用非常耗时,而求解LP相对便宜时比较有效。

算法与性质

水平束算法框架(简化版):

  1. 初始化:给定初始点 x̂^0,获取初始上界 f_0^{up}=f(x̂^0),计算或给定初始下界 f_0^{low},设定参数 γ ∈ (0,1),容忍度 ε > 0
  2. 迭代
    a. 计算当前间隙 gap = f_k^{up} - f_k^{low}。若 gap ≤ ε,则停止。
    b. 设置水平参数 l_k = f_k^{low} + γ * gap
    c. 尝试求解投影子问题(水平子问题),得到候选点 x^{k+1}
    - 若问题不可行(水平集为空),则按上述“惰性更新”方式更新 f_k^{low}l_k,然后返回步骤c重试。
    d. 调用Oracle计算 f(x^{k+1}) 和次梯度。
    e. 更新上界:f_{k+1}^{up} = min{f_k^{up}, f(x^{k+1})}
    f. 更新模型(束管理),添加新的线性化。
    g. (可选)按一定规则更新稳定性中心 x̂^{k+1}(例如,使用类似严肃步的规则,或当最优间隙减少到一定比例时更新)。
    h. 令 k = k+1,返回步骤a。

一个重要性质:
与*端束方法类似,水平束方法中产生的聚合线性化 f_a^k 包含了模型的关键信息。可以证明,如果只使用这个聚合线性化(而丢弃束中所有其他线性化)来定义水平集并做投影,得到的点与使用完整模型得到的点 x^{k+1} 是相同的。这为束管理(删除旧线性化)提供了理论依据。

收敛性直观与优势

水平束方法的收敛性分析通常通过将迭代划分为循环来进行。一个循环是指连续多次迭代中稳定性中心保持不变的阶段。

可以证明,如果使用特定的稳定性中心更新规则(例如,当最优间隙减少到初始间隙的 δ^l 倍时更新,其中 δ ∈ (0,1)),那么算法会生成无限多个这样的循环,从而驱动最优间隙趋于零。

实践优势:
当应用于两阶段随机规划问题时,水平束方法被称为水平分解法。与传统的L形方法(割平面法)相比,水平束方法通常能显著加快收敛速度(有文献报告可达70%-80%)。其关键在于通过水平集约束提供的稳定性,以及可以灵活控制Oracle调用的次数(例如,只在必要时精确计算函数值)。

总结 📝

本节课中我们一起学*了*端束方法的收敛性分析,并介绍了水平束方法。

  • 我们首先回顾了*端束方法,分析了其在生成无限多严肃步和有限严肃步两种情况下的收敛性,证明了关键的最优性度量会趋于零。
  • 接着,我们引入了水平束方法,它通过将模型作为水平集约束,并使用投影来产生新迭代点。我们讨论了水平参数的更新策略、算法的基本流程,以及该方法在理论和实践上的特点,特别是其灵活性、与*端方法的联系,以及在随机规划中应用时的效率优势。

水平束方法为求解复杂的凸优化问题,特别是那些函数求值昂贵的随机规划问题,提供了一个强大而高效的框架。

27:利用智能预言机加速优化

在本节课中,我们将继续学*束方法,并探讨如何利用两阶段随机规划问题的结构来加速优化过程。我们将重点介绍一种称为“智能预言机”的技术,它通过控制计算精度来减少每次迭代的计算成本,从而在整体上节省CPU时间。

上一节我们介绍了基本的水平束方法及其收敛性分析。本节中,我们将看看如何将这种方法应用于两阶段随机规划问题,并利用其结构设计更高效的预言机。

算法回顾:水平束方法

首先,我们回顾一下上一节课介绍的水平束方法算法。该算法只需要设置一个参数 gamma,这简化了参数调优过程。

算法步骤:

  1. 初始化:给定初始点 x1(作为第一个稳定中心),设置参数 gamma(通常在0到1之间,理论最优值约为0.23),以及最优间隙的容忍度。
  2. 计算下界:通过求解一个线性规划问题(例如,在可行集上最小化第一个线性化函数)来获得目标函数最优值的下界 low。如果不知道,可以简单计算。
  3. 设置水平参数:水平参数 f_level 是上界 up 和下界 low 的一个凸组合:f_level = (1 - gamma) * low + gamma * up。它被用来定义水平集。
  4. 求解子问题:将当前稳定中心投影到由割模型定义的水平集上,得到试探点 x_k+1。这通过求解一个二次规划(QP)完成。
    • 如果QP可行,得到 x_k+1,转到步骤5。
    • 如果QP不可行(水平集为空),则更新下界:low = f_level,然后返回步骤3重新计算水平参数。
  5. 调用预言机:在点 x_k+1 处计算函数值 f(x_k+1) 和次梯度 g_k+1。用 f(x_k+1) 更新当前最优上界 up
  6. 束管理:将新的线性化信息(函数值和次梯度)加入束中。可以采取两种策略:
    • 添加:直接加入新的线性化。
    • 压缩:删除所有旧的线性化,只保留最新的线性化和一个聚合线性化。聚合线性化是之前所有次梯度的凸组合,其系数来自QP问题的拉格朗日乘子。实际上,可以删除那些对应拉格朗日乘子为0的线性化,因为它们对定义当前试探点没有贡献。
  7. 更新稳定中心:检查是否显著减小了最优间隙。如果是,则将 x_k+1 设为新的稳定中心,并增加计数器 L
  8. 收敛性检查:如果最优间隙 up - low 小于容忍度,则停止;否则,返回步骤3。

该算法的直观理解是,通过将迭代过程划分为以稳定中心不变的“周期”,并证明在每个周期内,迭代点会逐渐远离稳定中心,且步长与当前最优间隙成正比。由于可行集有界,这种远离不可能无限进行,因此周期长度有限,算法最终会更新稳定中心并减小最优间隙,从而收敛。

应用于两阶段随机规划

现在,我们将上述方法应用于标准的两阶段随机线性规划问题。

问题形式:

最小化 c^T x + E[Q(x, ξ)]
约束条件: Ax = b, x >= 0
其中,Q(x, ξ) = 最小化 q(ξ)^T y
约束条件: T(ξ)x + W(ξ)y = h(ξ), y >= 0

在传统的L形方法或*似束方法中,“预言机”(即第二阶段问题的求解)需要为每个场景ξ精确求解线性规划(LP),以得到精确的函数值和次梯度(由对偶变量给出)。

智能预言机的思想:我们不精确求解所有LP,而是为一部分场景提供快速*似解,从而得到一个*似的函数值和次梯度。我们以一种可控的方式引入这种不精确性,确保算法仍然收敛,并且由于每次预言机调用更廉价,总体CPU时间减少。

智能预言机的类型

关键在于如何处理预言机的不精确性。我们主要关注能提供“下*似”的预言机。

  • 精确预言机:提供精确的 f(x)g。这是传统方法。
  • 下预言机:提供*似值 f̃(x),并确保 f̃(x) <= f(x),且*似线性化不会“切割”掉真实函数。即,对于所有 y,有 f̃(x) + g̃^T (y - x) <= f(y)。这保证了我们的割模型始终是真实函数的一个下*似。
  • 可控精度的预言机:我们向预言机传递一个点 x、一个误差上界 ε_bar 和一个目标值 target。预言机的工作流程如下:
    1. 首先,利用历史对偶点快速计算一个初始下*似 f̃_0(x)
    2. 检查 f̃_0(x) 是否已经大于 target。如果是,说明当前点 x 不够好(函数值可能太高),立即停止并返回当前*似值,不再花费更多计算。
    3. 如果 f̃_0(x) <= target,则开始逐个场景更精确地求解LP(例如使用内点法)。每解完一个场景,就更新*似值 f̃_j(x)
    4. 在求解过程中,持续检查当前*似值 f̃_j(x) 是否超过 target,或者*似误差是否已小于 ε_bar。一旦满足任一条件,就停止计算并返回当前的 f̃_j(x) 和对应的次梯度*似。

参数设置

  • target(目标值):通常设置为当前最佳上界 up,或者 uplow 的某个凸组合。它用来判断一个点是否值得进行精确计算。
  • ε_bar(误差上界):随着算法进行,最优间隙 up - low 减小,我们也可以逐步减小 ε_bar,要求预言机提供更精确的*似,最终趋向于精确解。

集成智能预言机的水平束方法

将可控精度的下预言机集成到水平束方法中,只需对原始算法做少量修改:

  1. 步骤4(调用预言机前):根据当前的最优间隙更新传递给预言机的参数 targetε_bar。例如,target = uptarget = (1 - γ) * low + γ * upε_bar 可以设为与最优间隙相关的一个小量。
  2. 步骤5(调用预言机):调用智能预言机,传入当前试探点 x_k+1targetε_bar。获得*似函数值 f̃_k+1 和*似次梯度 g̃_k+1
  3. 步骤5(更新上界):由于我们得到的是下*似 f̃_k+1,真实的 f(x_k+1) 未知。但我们可以确定 f(x_k+1) <= f̃_k+1 + ε_bar。因此,我们用 f̃_k+1 + ε_bar 来更新上界 up,这仍然是一个有效的上界。
  4. 其余步骤(束管理、更新稳定中心等)保持不变。

数值实验与效果

研究表明,采用智能预言机可以显著加速求解。

  • 在测试的150个两阶段随机线性规划问题中:
    • 使用传统的精确L形方法需要超过7小时。
    • 在L形方法中集成智能预言机技术,时间减少到约1小时。
    • 使用集成智能预言机的水平束方法,总CPU时间进一步减少到约2小时,总体获得了72%的CPU时间缩减。

这证明了利用问题结构设计智能预言机,是加速随机规划问题优化的有效手段。

总结

本节课中我们一起学*了如何将水平束方法应用于两阶段随机规划,并引入了“智能预言机”的概念。关键点在于,通过向预言机传递目标值和误差容忍度,我们可以控制第二阶段问题求解的精度,避免在不 promising 的点上浪费计算资源。这种利用问题结构、管理计算精度的思想,可以显著提升优化算法的整体效率,是解决大规模随机规划问题的重要策略。

posted @ 2026-03-29 09:15  绝不原创的飞龙  阅读(1)  评论(0)    收藏  举报