Benders for Mixed-Integer Problems

Apply Benders decomposition to mixed-integer programs (MIPs) with complicating integer variables. Iterate between an integer master problem and a continuous LP subproblem, generating optimality cuts from subproblem duals and tracking upper and lower bounds until they coincide.

Step 1 of 157%

Tutorial

Decomposing a Mixed-Integer Program

A mixed-integer program (MIP) often contains two distinct kinds of decisions: a small set of complicating integer variables y\mathbf{y} (e.g., facility-open decisions, design choices) and a larger set of continuous variables x\mathbf{x} (e.g., shipping quantities, flows). We write such a problem in the form

mincTx+fTys.t.Ax+Bybx0, yY,\begin{aligned}\min\quad & \mathbf{c}^T\mathbf{x} + \mathbf{f}^T\mathbf{y} \\ \text{s.t.}\quad & A\mathbf{x} + B\mathbf{y} \geq \mathbf{b} \\ & \mathbf{x} \geq \mathbf{0},\ \mathbf{y} \in Y,\end{aligned}

where YZpY \subseteq \mathbb{Z}^p is the set of admissible integer values for y\mathbf{y}.

Benders decomposition exploits this structure. Once we fix y=y^\mathbf{y} = \hat{\mathbf{y}}, the residual problem in x\mathbf{x} is a linear program -- the subproblem:

Q(y^)  =  min cTxs.t. AxbBy^, x0.Q(\hat{\mathbf{y}}) \;=\; \min\ \mathbf{c}^T\mathbf{x}\quad \text{s.t.}\ A\mathbf{x} \geq \mathbf{b} - B\hat{\mathbf{y}},\ \mathbf{x} \geq \mathbf{0}.

The choice of y\mathbf{y} is delegated to the master problem, an integer program that uses an auxiliary variable η\eta to stand in for Q(y)Q(\mathbf{y}):

min fTy+ηs.t. yY, (Benders cuts).\min\ \mathbf{f}^T\mathbf{y} + \eta\quad \text{s.t.}\ \mathbf{y} \in Y,\ (\text{Benders cuts}).

Benders alternates: solve the integer master to obtain y^\hat{\mathbf{y}}, solve the LP subproblem at y^\hat{\mathbf{y}}, and append a cut that forces η\eta to better approximate Q(y)Q(\mathbf{y}). The integer search is handled only in the master; the continuous variables are handled only in the subproblem.

navigate · Enter open · Esc close · ⌘K/Ctrl K toggle