前言
相信大家看完Benders分解方法,已经对Benders有了一定的理解,这一篇主要作用在于加深理解,并结合实际问题来真正学会Benders分解方法。
Benders处理框架:
这个图我们就能直观的看到Benders是怎么一步一步分解我们的初始问题的了。(这是主播辛辛苦苦画的补药直接偷走QAQ!)
Benders分解全程
(1)首先求初始主问题的解:
这样子会得到最优解。这个最优解的值
当做固定值代入下一步迭代中。
(2)将Master Problem 中的最优解代入子问题的对偶问题中,求解:
得到极点和极射线。如果有最优解就获得其目标值.因为子问题与对偶问题互为对偶所以目标值是相同的。
(3)在求解完子问题的对偶问题之后,将极点与极射线的相关约束加入松弛的主问题中,更新主问题,主问题变成等价的形式,求解更新厚的模型:
这样子之后可以获得目标值中的的值
,算法停止,得到最优解。这里的终止条件可以从全局的UB和全局的LB得到。Benders分解中,
提供了一个全局LB,
提供了一个全局UB。因此UB=LB是,有
.
相信大家看到这里也是学的差不多了(如果还是没明白可以评论留言,相信主播要是看得到就会回复的),接下来我们话不多说直接进入实战!gogogo
应用案例:设施选址问题
设施选址问题(Facility Location Problem,FLP)可以使用 Benders 分解算法快速求解。首先给出FLP的描述(本例中设施为仓库)。
假设可选的仓库点(CandidateWarehouse)的集合为W={1,2,,n},零售店点(retailer)的可选集合为 R={1,2,……·,m}。假设开通仓库i的固定成本为f,其供货上限为S。如果仓库i要为零售店j供货,则会产生相应的运输成本,假设单位运输成本为G。我们需要决策在哪些点建设仓库,并且决定仓库与零售店之间的供货关系,使得所有零售店的需求都被满足,同时要最小化总的设施建设成本和服务成本。
基于上述描述,引入下面的决策变量。
yi:如果选择在i∈W 建设仓库,则出=1,否则y=0
:仓库i向零售店j的供货量。
理解完FLP,我们可以建模了:
,
由于仓库选址变量yi为0-1变量,在该问题中属于复杂变量,因此可以将其分成主问题和子问题,利用Benders分解算法来求解。
很容易地得到主问题和子问题只要把y变量与x变量分开就好啦
主问题:
子问题:
接着我们就写对偶问题了
因此Benders松弛主问题可以写成
这里的K和L 分别是极点和极射线的集合。Benders松弛主问题也可以等价下面形式
这样子我们就系统的解决了Benders分解来处理设施选址问题,代码在之后章节会展示。