Benders分解算法已经成功地应用于许多复杂的优化问题。这里首先介绍了该算法的基本原理。
The Benders decomposition method
这里介绍Benders算法的经典版本,是由Benders在1962年提出的。
1 经典模型
考虑一个MILP混合整数线性规划问题,
y
∈
R
n
1
y\in \mathbb{R}^{n_1}
y∈Rn1是正整数变量,满足约束条件(2),且
A
∈
R
m
1
×
n
1
A\in \mathbb{R^{m_1\times n_1}}
A∈Rm1×n1,
b
∈
R
m
1
b\in \mathbb{R^{m_1}}
b∈Rm1,
x
∈
R
n
2
x \in \mathbb{R^{n_2}}
x∈Rn2是连续变量,和
y
y
y一起满足约束条件(3),且
B
∈
R
m
2
×
n
1
B\in \mathbb{R^{m_2\times n_1}}
B∈Rm2×n1,
D
∈
R
m
2
×
n
1
D \in \mathbb{R^{m_2\times n_1}}
D∈Rm2×n1,
d
∈
R
n
2
d\in \mathbb{R^{n_2}}
d∈Rn2,此外
f
∈
R
n
1
,
c
∈
R
n
2
f\in \mathbb{R}^{n_1},c\in \mathbb{R}^{n_2}
f∈Rn1,c∈Rn2。
这个模型可以重新表示为:
其中
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={y∣Ay=b,y>0 and integer}。子最小化问题是一个连续型线性规划问题,设
π
\pi
π为对应的对偶变量,可以写出对应的子对偶问题:
根据对偶问题理论,可以将原式和对偶式互换,得到以下等价模型:
可以发现这个子最大化问题的可行域
F
=
{
π
∣
π
T
D
≤
c
}
F=\left\{\pi | \pi^TD \leq c\right\}
F={π∣πTD≤c},与
y
ˉ
\bar{y}
yˉ无关。因此对于任意
y
ˉ
\bar{y}
yˉ而言,如果
F
F
F非空,则子问题可能是无界的或可行的,此时考虑一组极端射线
Q
∈
F
Q\in F
Q∈F,有一个无界的方向
r
q
r_q
rq,
q
∈
Q
q \in Q
q∈Q且满足
r
q
T
(
d
−
B
y
ˉ
)
>
0
r_q^T\left(d-B\bar{y}\right)>0
rqT(d−Byˉ)>0(非相关专业可不必深究)。在求解时必须避免上述这种情况(因为它表明
y
ˉ
\bar{y}
yˉ的解不可行,因此可以增加一个cut来限制上述可能的情况。
式(9)限制的情况下,子问题的解应该是极值点之一
π
e
,
e
∈
E
\pi_e,e\in E
πe,e∈E,其中
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中,并重复该过程。