1. 项目背景与核心价值
两阶段鲁棒优化问题在电力系统调度、物流规划、金融风险管理等领域有着广泛的应用。这类问题的核心挑战在于:第一阶段决策需要在不完全了解未来不确定参数的情况下做出,而第二阶段决策则需根据实际发生的不确定参数进行调整。传统随机规划方法依赖于精确的概率分布假设,而鲁棒优化则仅需不确定参数的波动范围,更适合实际工程应用。
列约束生成法(Column-and-Constraint Generation, CCG)是求解两阶段鲁棒优化问题的有效算法。它通过主问题(Master Problem)和子问题(Subproblem)的迭代求解,逐步逼近最优解。与传统的Benders分解相比,CCG在每次迭代中向主问题添加变量和约束,而非仅添加约束,这使得算法收敛速度更快。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 算法原理详解
2.1 问题标准形式
考虑如下两阶段鲁棒优化问题:
min_{x} c^T x + max_{u∈U} min_{y∈F(x,u)} d^T y
其中:
- x为第一阶段决策变量
- u为不确定参数,属于不确定集合U
- y为第二阶段决策变量
- F(x,u)定义了给定x和u时y的可行域
2.2 CCG算法流程
-
初始化:
- 设置上界UB=+∞,下界LB=-∞
- 生成初始场景集合Ξ=∅
- 设定收敛阈值ε>0
-
主问题求解:
min c^T x + η
s.t. η ≥ d^T y^l, ∀l∈Ξ
A x ≥ b
T^l x + W y^l ≥ h^l, ∀l∈Ξ
(x, y^l, η)为决策变量 -
子问题求解:
给定主问题解x*,求解:
max_{u∈U} min_{y} d^T y
s.t. T(u) x* + W y ≥ h(u) -
收敛判断:
- 更新上界UB=min(UB, c^T x* + obj_sub)
- 更新下界LB=max(LB, c^T x* + η*)
- 如果(UB-LB)/UB ≤ ε,算法终止
- 否则,将子问题解对应的场景加入Ξ,返回步骤2
3. MATLAB实现详解
3.1 主问题实现
matlab复制fu
