Benders decomposition (or Benders' decomposition) is a technique in mathematical programming that allows the solution of very large linear programming problems that have a special block structure. This block structure often occurs in applications such as stochastic programming as the uncertainty is usually represented with scenarios. The technique is named after Jacques F. Benders.
The strategy behind Benders decomposition can be summarized as divide-and-conquer. That is, in Benders decomposition, the variables of the original problem are divided into two subsets so that a first-stage master problem is solved over the first set of variables, and the values for the second set of variables are determined in a second-stage subproblem for a given first-stage solution. If the subproblem determines that the fixed first-stage decisions are in fact infeasible, then so-called Benders cuts are generated and added to the master problem, which is then re-solved until no cuts can be generated. Since Benders decomposition adds new constraints as it progresses towards a solution, the approach is called "row generation". In contrast, Dantzig–Wolfe decomposition uses "column generation".
Assume a problem that occurs in two or more stages, where the decisions for the later stages rely on the results from the earlier ones. An attempt at first-stage decisions can be made without prior knowledge of optimality according to later stage decisions. This first-stage decision is the master problem. Further stages can then be analyzed as separate subproblems. Information from these subproblems is passed back to the master problem. If constraints for a subproblem were violated, they can be added back to the master problem. The master problem is then re-solved.
The master problem represents an initial convex set which is further constrained by information gathered from the subproblems. Because the feasible space only shrinks as information is added, the objective value for the master function provides a lower bound on the objective function of the overall problem.
Benders Decomposition is applicable to problems with a largely block-diagonal structure.
Assume a problem of the following structure:
\begin{align} &minimize&&cTx+dTy\\ &subjectto&&Ax+By\geqb\\ &&&y\inY\\ &&&x\geq0 \end{align}
Where
A,B
Y
y
\bar{y
\begin{align} &minimize&&cTx+dT\bar{y
The dual of the residual problem is
\begin{align} &maximize&&(b-B\bar{y
Using the dual representation of the residual problem, the original problem can be rewritten as an equivalent minimax problem
miny\left[dTy+maxu\left\{(b-By)Tu\midATu\leqc\right\}\right].
Benders decomposition relies on an iterative procedure that chooses successive values of
y
(u,y)
\bar{y
\bar{x
\bar{y
The decisions for the first stage problem can be described by the smaller minimization problem
\begin{align} &minimize&&z\\ &subjectto&&\{cuts\}\\ &&&y\inY\\ \end{align}
Initially the set of cuts is empty. Solving this master problem will constitute a "first guess" at an optimal solution to the overall problem, with the value of
z
y
The set of cuts will be filled in a sequence of iterations by solving the inner maximization problem of the minimax formulation. The cuts both guide the master problem towards an optimal
y
y
y
z
x
Since the value of
z
\bar{y
The subproblem considers the suggested solution
\bar{y
\begin{align} &maximize&&(b-B\bar{y
While the master problem provides a lower bound on the value of the problem, the subproblem is used to get an upper bound. The result of solving the subproblem for any given
\bar{y
\bar{u
\bar{u
At a high level, the procedure will iteratively consider the master problem and subproblem. Each iteration provides an updated upper and lower bound on the optimal objective value. The result of the subproblem either provides a new constraint to add to the master problem or a certificate that no finite optimal solution exists for the problem. The procedure terminates when it is shown that no finite optimal solution exists or when the gap between the upper and lower bound is sufficiently small. In such a case, the value of
\bar{x
\bar{y
Formally, the procedure begins with the lower bound set to
-inf
inf
\bar{y
\epsilon
The first step of each iteration begins by updating the upper bound by solving the subproblem given the most recent value of
\bar{y
In the first case, the objective value of the subproblem is unbounded above. By duality theory, when a dual problem has unbounded objective the corresponding primal problem is infeasible. This means that the choice of
\bar{y
Ax+B\bar{y
x\geq0
\bar{u
(b-By)T\bar{u
In the second case, the subproblem is infeasible. Since the dual feasible space to the problem is empty, either the original problem is not feasible or there is a ray in the primal problem that certifies the objective value is unbounded below. In either case, the procedure terminates.
In the third case, the subproblem has a finite optimal solution. By duality theory for linear programs, the optimal value of the subproblem is equal to the optimal value of the original problem constrained on the choice of
\bar{y
\bar{u
z\geq(b-By)T\bar{u
z
\bar{y
\bar{y
Finally, the last part of each iteration is creating a new solution to the master problem by solving the master problem with the new constraint. The new solution
(\bar{y
\epsilon
\bar{x
\bar{y