原理:Benders decomposition method

文章介绍了Benders分解算法,主要用于解决MILP问题。该算法将问题拆分为一个主问题和一个子问题,通过迭代添加cut限制来逐步逼近最优解。子问题是连续线性规划,其解与主问题的某些变量值有关。在每次迭代中,根据子问题的解生成新的约束(optimalitycut或feasibilitycut),直到找到满足条件的解。
摘要由CSDN通过智能技术生成

Benders分解算法已经成功地应用于许多复杂的优化问题。这里首先介绍了该算法的基本原理。

The Benders decomposition method

这里介绍Benders算法的经典版本,是由Benders在1962年提出的。

1 经典模型

考虑一个MILP混合整数线性规划问题, y ∈ R n 1 y\in \mathbb{R}^{n_1} yRn1是正整数变量,满足约束条件(2),且 A ∈ R m 1 × n 1 A\in \mathbb{R^{m_1\times n_1}} ARm1×n1 b ∈ R m 1 b\in \mathbb{R^{m_1}} bRm1 x ∈ R n 2 x \in \mathbb{R^{n_2}} xRn2是连续变量,和 y y y一起满足约束条件(3),且 B ∈ R m 2 × n 1 B\in \mathbb{R^{m_2\times n_1}} BRm2×n1 D ∈ R m 2 × n 1 D \in \mathbb{R^{m_2\times n_1}} DRm2×n1 d ∈ R n 2 d\in \mathbb{R^{n_2}} dRn2,此外 f ∈ R n 1 , c ∈ R n 2 f\in \mathbb{R}^{n_1},c\in \mathbb{R}^{n_2} fRn1,cRn2
在这里插入图片描述
这个模型可以重新表示为:
在这里插入图片描述
其中 y ˉ \bar{y} yˉ是决策变量 y y y的一种确定值,且 y ˉ ∈ Y = { y ∣ A y = b , y > 0  and integer } \bar{y} \in Y=\left\{y|Ay=b,y>0 \text{ and integer}\right\} yˉY={yAy=b,y>0 and integer}。子最小化问题是一个连续型线性规划问题,设 π \pi π为对应的对偶变量,可以写出对应的子对偶问题:
在这里插入图片描述
根据对偶问题理论,可以将原式和对偶式互换,得到以下等价模型:
在这里插入图片描述
可以发现这个子最大化问题的可行域 F = { π ∣ π T D ≤ c } F=\left\{\pi | \pi^TD \leq c\right\} F={ππTDc},与 y ˉ \bar{y} yˉ无关。因此对于任意 y ˉ \bar{y} yˉ而言,如果 F F F非空,则子问题可能是无界的或可行的,此时考虑一组极端射线 Q ∈ F Q\in F QF,有一个无界的方向 r q r_q rq q ∈ Q q \in Q qQ且满足 r q T ( d − B y ˉ ) > 0 r_q^T\left(d-B\bar{y}\right)>0 rqT(dByˉ)>0(非相关专业可不必深究)。在求解时必须避免上述这种情况(因为它表明 y ˉ \bar{y} yˉ的解不可行,因此可以增加一个cut来限制上述可能的情况。
在这里插入图片描述
式(9)限制的情况下,子问题的解应该是极值点之一 π e , e ∈ E \pi_e,e\in E πe,eE,其中 E E E F F F的极值点集合。将所有的诸如(9)的cut加入到主问题中,则子问题的解是相应的极值点,可以将模型(8)重新表述为:
在这里插入图片描述
可以通过一个连续变量线性化这个模型(10-11),因此可以得到Benders主问题MP:
在这里插入图片描述
其中(14)是optimality cut,(15)是feasibility cut。事实上完整地列举这些cuts通常是不实际的。因此,Benders (1962) 提出了放宽可行性、最优性cuts以及迭代方法。因此算法反复求解只包含约束(14)和(15)子集的MP,得到变量 y y y的试值$\bar{y},然后用其求解子问题(7)。如果子问题可行且有界,则产生类型为(14)的cut。如果子问题无界,则产生类型为(15)的cut。如果当前解决方案违反了cuts,则将它们插入到当前MP中,并重复该过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞行高度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值