Benders Decomposition
Problem Description
Remove some variables would make the remaining program easy to solve.
Assume the LP is below and \(x\) is the complicated variable:
Benders Decomposition
First projecting the problem into the \(x\) space:
where the second-stage problem is:
and
-
How do we enforce we can find \(x\) such that \(x\in\mathcal K_x\)?
By Farkas Lemma, which states, we can find \(y:Hy=d-Gx\) iff
This is equivalent to prove:
Since \(\mathcal V\) is a convex polyhedral cone which obtains its extreme value at the origin, which means along the extreme ray, the objective value can only decrease, let \(v_i^T\) denote the extreme ray, and we can try:
-
How could we make sure the solution found in \(\mathcal K\) is optimal (examine the condition \(\phi\geq Q(x)\))?
Solve the dual program of \(Q(x)\):
\[Q(x)^{D}=\max \left\{u^{\top}(d-G x): u H \leq h\right\} \]by strong duality, we have:
\[\phi \geq Q^{D}(x) \]Since \(Q^D(x)\) is convex and its optimum attained at one of the extreme points, let \(u_j\) be the extreme points, above condition changes to:
\[\phi \geq \max _{j=1, \ldots, M}\left(u_{j}\right)^{\top}(d-G x)\\ =\left(u_{j}\right)^{\top}(d-G x), \quad j=1, \ldots, M \]
Finally, we have:
BD cuts
Let \((x_t,\phi ^t)\) be the solution to MP at a generic iteration \(t\).
Feasibility Test
Solve the program:
Without \(\ref{eq1},\ref{eq2}\) the feasibility subproblem is unbounded. Assume the solution is \(v^t\).
If \(F(x^t)\leq 0\), Farkas Lemma would make sure one feasible solution exists. Otherwise add feasibility cut:
This cut has following two properties:
-
Would cut \(F(x^t)\), since \((v^t)^T(d-Gx^t)>0\) violating.
-
Would not cut other solution \(x'\in\mathcal K\), since:
\[\begin{align} 0\geq F(x')&=(v')^T(d-Gx')\geq (v^t)^T(d-Gx') \end{align} \]
General we solve the dual, since we care more about the maximum value rather than itself:
Optimality Test
We solve
and if \(\phi \geq Q^D(x^t)\), the solution is optimal. Otherwise, add optimality cut:
This cut would:
-
Cut the solution \((x^t,\phi^t)\) since \((u^t)^T(d-Gx^t)<0\) violates the cut.
-
Never cut the optimal solution. Since
\[Q^D(x')=(u')^T(d-Gx')\geq (u^t)^T(d-Gx') \]