solving mixed-integer optimization problems using benders decomposition 7
• Step 3: Solve the subproblem. Solve (S(k)) for the current value
of x
(k)
, t
(k)
. There are two possibilities again:
– If d
⋆
(x
(k)
) = −∞, then we have found one extreme point u
(k)
∈
E and one extreme ray r
(k)
∈ R such that d
⋆
(x
(k)
) can decrease
as much as we vary θ ≥ 0 in u
(k)
+ θr
(k)
. We set E(k + 1)
:
=
E(k) ∪ {u
(k)
} and R(k + 1)
:
= R(k) ∪ {r
(k)
}, i.e., we add the
following constraints lazily to (M(k) ):
t ≤ c
⊤
1
x + (b − A
1
x)
⊤
u
(k)
,
(b − A
1
x
′
)
⊤
r
(k)
≥ 0,
Then we set k
:
= k + 1 and go to Step 2.
– If d
⋆
(x
(k)
) finite, then we have found one optimal solution
u
(k)
∈ E, i.e. u
(k)
is an extreme point of S. Using (3) and (4)
we have:
d
⋆
(x
(k)
) ≤ p
⋆
≤ p
⋆
(
E(k), R(k)
)
. (5)
In this d
⋆
(x
(k)
) finite case, one of two things can happen:
*
If d
⋆
(x
(k)
) =
(
E(k), R(k)
)
, then from (5) we must have, p
⋆
=
d
⋆
(x
(k)
) =
(
E(k), R(k)
)
. So we have found the optimal value
and x
⋆
:
= x
(k)
is an optimal solution to (P). By solving
P(x
(k)
)
, we can compute an optimal v
⋆
:
= v
(k)
to (P).
*
If d
⋆
(x
(k)
) <
(
E(k), R(k)
)
, then we E(k + 1)
:
= E(k) ∪ {u
(k)
},
i.e, we add the following constraints lazily to (M(k))
t ≤ c
⊤
1
x + (b − A
1
x)
⊤
u
(k)
.
Then we set k
:
= k + 1 and proceed to Step 2.
In worst case, the number of iterations of this algorithm is bounded
by |E| + |R|.
Benefits of the algorithm.
When S(k) has an optimal solution with finite objective value, after
step 3, we have a feasible solution to (P) along with a measure of
suboptimality p
⋆
(
E(k), R(k)
)
− d
⋆
(x
(k)
) from (5). So, in practice, even
if we terminate early, we can have a good enough feasible solution
with small suboptimality gap.
References
Dimitris Bertsimas and John N Tsitsiklis. Introduction to linear opti-
mization, volume 6. Athena Scientific Belmont, MA, 1997.