IT圈老男孩1 发表于 2022-10-12 14:51

优化|Benders分解算法的应用

阅读本节要达到的效果
识别一个包含多个复杂变量和子问题的随机优化问题的可分解结构
写出通用随机规划优化问题的Benders分解算法
使用Benders分解算法求解一个简单的随机市场出清问题案例
首先祭出始祖的文章:
Benders, J. F. (1962). Partitioning procedures for solving mixed-variables programming problems. Numerische mathematik, 4(1), 238-252.
1 一个简答的数值案例

下面给出一个例子:



1.1 问题分解

例子中,只有一个复杂变量,也就是x3;固定(fixed)该变量,子问题的表述形式如下:



我们只固定了一个约束,为什么对偶变量会有小标 h 呢?
对偶变量的定义是目标相对于约束的敏感性,目标函数不是唯一的,所以对偶变量也就有小标h。
下面我们分析主问题:



1.2 算法过程及收敛条件

算法过程:



收敛条件:



2 使用Benders分解方法求解基于场景的两阶段随机规划问题

下面给出一个例子:
2.1 概述




在基于场景的两阶段随机规划问题中,第一阶段是主问题,第二阶段是子问题。主问题为子问题提供固定变量的值,子问题为主问题提供复杂变量的敏感性。


2.2 算法流程




2.3 紧凑模型

更compact的形式,再次重申,一阶段的变量x是复杂变量:


运筹码仓的博客_CSDN博客-优化模型验证,电力系统中的高级优化和博弈论,Latex公式的编写领域博主

2.4 解法



2.5 分解模型 -- 概率的等价处理





2.6 终止准则



总结:

[*]随机规划问题是可分解的
[*]复杂变量是一阶段的决策变量,子问题最少有场景数目个
[*]我们可以使用通用的两阶段随机优化问题来表述benders 分解算法
[*]对于一个凸优化问题,benders分解能够确保收敛于问题的全局最优解。

3 随机市场出清的案例分析

3.1 问题建模

问题描述:


3.2 问题分解

确定要固定的复杂变量:


识别子问题:


主问题:


注解:
Objective function of subproblems (previous iterations)
Sensitivities of subproblems, with respect to complicating variable G1,DA
Sensitivities of subproblems, with respect to complicating variable G2,DA
Sensitivities of subproblems, with respect to complicating variable GW,DA

3.3 计算结果





4 multi-cut benders decomposition

还是先上参考文献:
Birge, J. R., & Louveaux, F. V. (1988). A multicut algorithm for two-stage stochastic linear programs. European Journal of Operational Research, 34(3), 384-392.
You, F., & Grossmann, I. E. (2013). Multicut Benders decomposition algorithm for process supply chain planning under uncertainty. Annals of Operations Research, 210(1), 191-211.单cut模型:


多cut版本:


两者的区别在于:多cut版本的辅助变量和cut都是基于场景构建的


注解:

[*]单cut版本我们只有保证cut是有效的,才会被加入到主问题当中;但是多cut版本保证不了这一点,其中可能会包含一些无效的cut。
[*]多cut版本需要权衡内存和计算负担
[*]如果添加的cut都是有效的,多cut版本肯定比单cut版本更有效,更快的收敛。
[*]在单cut版本中,我们主问题的规模随着迭代次数线性增长;而在多cut中,主问题规模呈指数式增长。迭代越多,多cut的弱点若明显。
[*]如果子问题不是线性规划问题,benders分解得到的不一定是最优解,所以需要加入一些启发式策略。
[*]benders分解并不一定比直接求解原问题更快,他只是使原问题变得更加容易处理。
5 自适应策略的benders分解

动机:多cut版本每次生成多个cut,需要较少的迭代次数。转化为单cut版本,可以避免主问题的变量和约束数目规模过大。
参考文献:
Sifuentes, W. S., & Vargas, A. (2007). Hydrothermal scheduling using benders decomposition: accelerating techniques. IEEE Transactions on Power Systems, 22(3), 1351-1359.
Skar, C., Doorman, G., & Tomasgard, A. (2014, August). Large-scale power system planning using enhanced Benders decomposition. In 2014 Power Systems Computation Conference (pp. 1-7). IEEE.
Zverovich, V., Fábián, C. I., Ellison, E. F., & Mitra, G. (2012). A computational study of a solver system for processing two-stage stochastic LPs with enhanced Benders decomposition. Mathematical Programming Computation, 4(3), 211-238.
Rahmaniani, R., Crainic, T. G., Gendreau, M., & Rei, W. (2017). The Benders decomposition algorithm: A literature review. European Journal of Operational Research, 259(3), 801-817.
原文链接:

<hr/>欢迎关注(公众号) @运筹OR帷幄 ,了解更多运筹学、人工智能及相关学科的干货资讯。
知乎专栏: 『运筹OR帷幄』大数据时代的运筹学 『运筹AI帷幄』大数据时代的人工智能
获得最新运筹学及其相关学科的干货资料、行业前沿信息、学术动态、硕博offer信息等。特别适合你~
欢迎大家交流。
也欢迎大佬们投稿和商业合作,学术信息、会议通讯、征稿启事、硕博招生信息等免费推广。

johnsoncodehk 发表于 2022-10-12 14:59

太棒了!

c0d3n4m 发表于 2022-10-12 15:04

[超认真]
页: [1]
查看完整版本: 优化|Benders分解算法的应用