真正学会Benders分解方法:分解的全过程,实战:设施选址问题

前言

相信大家看完Benders分解方法,已经对Benders有了一定的理解,这一篇主要作用在于加深理解,并结合实际问题来真正学会Benders分解方法。

Benders处理框架:

 这个图我们就能直观的看到Benders是怎么一步一步分解我们的初始问题的了。(这是主播辛辛苦苦画的补药直接偷走QAQ!)


Benders分解全程

(1)首先求初始主问题的解:

min    fTy+q(y)

s.t. y\epsilon Y\varepsilon R^{q}

这样子会得到最优解。这个最优解的y\frac{}{y}当做固定值代入下一步迭代中。

(2)将Master Problem 中的最优解\frac{}{y}代入子问题的对偶问题中,求解:

max   (b-B\frac{}{y})Ta

s.t.ATa\leq c

a free

得到极点和极射线。如果有最优解就获得其目标值q(y*)=a ^{T*}(b-B\frac{}{y}).因为子问题与对偶问题互为对偶所以目标值是相同的。

(3)在求解完子问题的对偶问题之后,将极点与极射线的相关约束加入松弛的主问题中,更新主问题,主问题变成等价的形式,求解更新厚的模型:

minfT+q

s.t.(a_{r}^{j})^{T}(b-By)\leq 0 ,\Lambda j=1,2,3......J

(a_{p}^{i})^{T}(b-By)\leq q ,\Lambda i=1,2,3......I

y\epsilon Y,qfree

这样子之后可以获得目标值中的q的值q*,算法停止,得到最优解。这里的终止条件可以从全局的UB和全局的LB得到。Benders分解中,fTy+q提供了一个全局LB,fTy+q(y)提供了一个全局UB。因此UB=LB是,有q(y)=q.


相信大家看到这里也是学的差不多了(如果还是没明白可以评论留言,相信主播要是看得到就会回复的),接下来我们话不多说直接进入实战!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

x_{ij}:仓库i向零售店j的供货量。

理解完FLP,我们可以建模了:

minf_{i}y_{i}+\sum_{i\epsilon W}\sum_{j\epsilon R}c_{ij}x_{ij}

s.t.\sum_{j\epsilon R}x_{ij}\leq s_{i}y_{i},\Lambda i\varepsilon W

\sum_{i\epsilon W}x_{ij}=d_{j},\Lambda j\varepsilon R

y\varepsilon\left \{ 0,1 \right \},i\varepsilon W

由于仓库选址变量yi为0-1变量,在该问题中属于复杂变量,因此可以将其分成主问题和子问题,利用Benders分解算法来求解。

很容易地得到主问题和子问题只要把y变量与x变量分开就好啦

主问题:

min\sum_{i\epsilon W}f_{i}y_{i}+q(y)

s.t.y_{i}\epsilon\left \{ 0,1 \right \},\Lambda i\varepsilon W

子问题:

min\sum_{i\epsilon W}\sum_{j\epsilon R}c_{ij}x_{ij}

s.t.                                                    \sum_{j\epsilon R}x_{ij}\leq s_{i}\frac{}y{}{}_{i},\Lambda i\varepsilon W

                                                          \sum_{i\epsilon W}x_{ij}=d_{j},\Lambda j\varepsilon R

x_{ij}\geq 0

接着我们就写对偶问题了

max\sum_{i\epsilon W}s_{i}\frac{} {y}_{i}\alpha _{i}+\sum_{j\epsilon R}d_{j}\beta_{j}

s.t\alpha _{i}+\beta _{j}\leq c_{ij},\Lambda i\epsilon W\Lambda j\epsilon R

\alpha _{i}\leq 0i\epsilon W

\beta _{j}free\Lambda j\varepsilon R

因此Benders松弛主问题可以写成

min\sum_{i\epsilon W}f_{i}y_{i}+z

s.t.z\geq\sum_{i\epsilon W}s_{i}\frac{} {y}_{i}\alpha _{i}^{(K)}+\sum_{j\epsilon R}d_{j}\beta_{j}^{(K)}

\sum_{i\epsilon W}s_{i}\frac{} {y}_{i}\alpha _{i}^{(l)}+\sum_{j\epsilon R}d_{j}\beta_{j}^{(l)}\leq 0

y_{i}\epsilon\left \{ 0,1 \right \}zfree

这里的K和L 分别是极点和极射线的集合。Benders松弛主问题也可以等价下面形式

minz

s.t.z\geq\sum_{i\epsilon W}s_{i}\frac{} {y}_{i}\alpha _{i}^{(K)}+\sum_{j\epsilon R}d_{j}\beta_{j}^{(K)}+\sum_{i\epsilon W}f_{i}y_{i}

\sum_{i\epsilon W}s_{i}\frac{} {y}_{i}\alpha _{i}^{(l)}+\sum_{j\epsilon R}d_{j}\beta_{j}^{(l)}\leq 0

y_{i}\epsilon\left \{ 0,1 \right \}zfree

这样子我们就系统的解决了Benders分解来处理设施选址问题,代码在之后章节会展示。

制作不易,免费解析,恳请大家三连,多多支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值