详细内容或原文请订阅后点击阅览
Benders 分解 101:如何破解一个太大而无法吞没的随机程序
每当你可以重写一个优化问题,以便修复一些变量使其余变量可分离时,你可以尝试 Benders。Benders 的分解 101:如何破解一个太大而无法吞咽整个的随机程序首先出现在 Towards Data Science 上。
来源:走向数据科学在我的第一篇 TDS 帖子中,我将现实世界的问题转化为整数线性程序。在我的第二个项目中,我使该程序能够抵御不确定性。在我的第三篇文章中,我介绍了随机编程:将不确定性放入模型中而不是手动将其消除的四种原则方法。
第三篇文章以承诺结束。我说过两阶段追索模型在理论上很容易写下来并且很整洁,但在实践中它们有一个尴尬的问题:当你添加更多场景时,所谓的“确定性等价物”的大小会爆炸,求解器开始抱怨。我点名本德斯的分解作为标准修复,然后就消失了,没有展示它的实际工作原理。
这篇文章兑现了这一承诺。
我们将从上一篇文章结束的地方开始,展示为什么明显的方法在规模上会失败,找出拯救我们的一个观察结果,然后慢慢地浏览算法本身。数学比上次多了一点,但没有什么奇怪的;我们将使用的最先进的工具是 LP 对偶性,甚至它也被打包为“我们可以用不同的方式编写相同的问题”。
快速回顾:我们正在尝试解决的模型
在上一篇文章中,我们的主角是一家德国时装公司,从孟加拉国采购冬季服装。需求 Ψ 是一个随机变量;生产 x 必须在 Ψ 已知之前确定。需求公布后,追索权决定以更高的成本弥补任何短缺(例如来自罗马尼亚的紧急批次)。
如果我们假设具有 S 个场景的离散分布 — 值 xi1, xi2, …, xi 的概率为 p₁, …, p — 两阶段追索模型会崩溃为单个大 LP,确定性等价物:
每个场景第二阶段的一个副本,全部粘在同一个第一阶段。将其交给 HiGHS 或 Gurobi,等待并找到解决方案。故事结束。
除了有时等待成为整个故事。
当确定性等价物碰壁时
为什么天真的技巧没有帮助
这个东西自 1962 年以来就一直存在。
