Back

Dantzig-Wolfe decomposition

We consider linear programming problems of the form \[\begin{array}{rrcrcrcrcl} \min \ & {\mathbf{c}^{(1)}}^\mathsf{T}\mathbf{x}^{(1)} & + & {\mathbf{c}^{(2)}}^\mathsf{T}\mathbf{x}^{(2)} & + & \cdots & + & {\mathbf{c}^{(k)}}^\mathsf{T}\mathbf{x}^{(k)} \\ (P)\quad\text{s.t.} & \mathbf{A}^{(1)}\mathbf{x}^{(1)} & + & \mathbf{A}^{(2)}\mathbf{x}^{(2)} & + & \cdots & + & \mathbf{A}^{(k)}\mathbf{x}^{(k)} & = & \mathbf{b} \\ & \mathbf{x}^{(1)} & & & & & & & \in & P_1 \\ & & & \mathbf{x}^{(2)} & & & & & \in& P_2 \\ & & & & & \ddots & & & & \vdots \\ & & & & & & & \mathbf{x}^{(k)} & \in & P_k. \end{array}\] where \(\mathbf{b} \in \mathbb{R}^m\) for some positive integer \(m\), and for \(i = 1,\ldots,k\), \(n_i\) is a positive integer, \(\mathbf{A}^{(i)} \in \mathbb{R}^{m \times n_i}\), \(\mathbf{c}^{(i)} \in \mathbb{R}^{n_i}\), and \(P_i\) is a pointed polyhedron.

For each \(i = 1,\ldots,k\), let \(\mathbf{x}^{(i,j)}\), \(j = 1,\ldots,p_i\) be the extreme points of \(P_i\) and let \(\mathbf{d}^{(i,j)}\), \(j = 1,\ldots,r_i\) give a complete set of extreme rays of \(P_i\) where \(p_i\) and \(r_i\) are nonnegative integers.

By Theorem 12.1, \(\mathbf{x}^{(i)} \in P_i\) can be written as \[\sum_{j = 1}^{p_i} \lambda_{(i,j)} \mathbf{x}^{(i,j)} + \sum_{j = 1}^{r_i} \gamma_{(i,j)} \mathbf{d}^{(i,j)}\] for some \(\lambda_{(i,j)} \geq 0\), \(j = 1,\ldots, p_i\) and \(\gamma_{(i,j)} \geq 0\), \(j = 1,\ldots, r_i\) where \(\sum_{j=1}^{p_i} \lambda_{(i,j)} = 1\).

Then \((P)\) can be reformulated as \begin{align*} \min \ & \sum_{i=1}^k \left(\sum_{j = 1}^{p_i} {\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{x}^{(i,j)} \lambda_{(i,j)} + \sum_{j = 1}^{r_i} {\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{d}^{(i,j)} \gamma_{(i,j)}\right) \\ (DW)\quad\text{s.t.} \ & \sum_{i=1}^k \left(\sum_{j = 1}^{p_i} \lambda_{(i,j)} \mathbf{A}^{(i)} \mathbf{x}^{(i,j)} + \sum_{j = 1}^{r_i} \gamma_{(i,j)} \mathbf{A}^{(i)} \mathbf{d}^{(i,j)} \right) = \mathbf{b} \\ & \sum_{j=1}^{p_i} \lambda_{(i,j)} = 1, \quad i = 1,\ldots, k, \\ & \lambda_{(i,j)} \geq 0, \quad i = 1,\ldots,k,\ j = 1,\ldots, p_i,\\ & \gamma_{(i,j)} \geq 0,\quad i = 1,\ldots,k,\ j = 1,\ldots, r_i. \end{align*}

Example. Consider \begin{align*} \min \ & 5x^{(1)}_1 + x_2^{(1)} + 3x^{(2)}_1 + 4x^{(2)}_2 \\ (P)~~~~\text{s.t.} \ & -x^{(1)}_1 + 5 x^{(1)}_2 +7x^{(2)}_1 - 6x^{(2)}_2 = 5 \\ & \begin{bmatrix} x^{(1)}_1 \\ x^{(1)}_2 \end{bmatrix} \in P_1 \\ & \begin{bmatrix} x^{(2)}_1 \\ x^{(2)}_2 \end{bmatrix} \in P_2 \end{align*} where \(P_1 = \left\{ \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} : \begin{array}{r} x_1 + x_2 \geq 1 \\ -x_1 + 2x_2 \geq 0 \\ x_2 \geq 1 \end{array} \right\}\) and \(P_2 = \left\{ \begin{bmatrix} y_1 \\ y_2 \end{bmatrix} : \begin{array}{r} 3x_1 - x_2 \geq 2 \\ x_1 + 2x_2 \geq 3 \end{array} \right\}.\)

Hence, \(\mathbf{c}^{(1)} = \begin{bmatrix} 5 \\ 1 \end{bmatrix}\), \(\mathbf{c}^{(2)} = \begin{bmatrix} 3 \\ 4 \end{bmatrix}\), \(\mathbf{A}^{(1)} = \begin{bmatrix} -1 & 5 \end{bmatrix}\), and \(\mathbf{A}^{(2)} = \begin{bmatrix} 7 & -6 \end{bmatrix}\).

Solving \((P)\) directly gives an optimal solution \(\begin{bmatrix} x^{(1)}_1 \\x^{(1)}_2\\x^{(2)}_1\\x^{(2)}_2\end{bmatrix} = \begin{bmatrix} 0 \\ 1 \\ \frac{12}{11} \\ \frac{14}{11} \end{bmatrix}\) with optimal value \(\frac{103}{11}\).

Now, \(P_1\) has extreme points \(\begin{bmatrix} 0 \\ 1 \end{bmatrix}\) and \(\begin{bmatrix} 2 \\ 1 \end{bmatrix}\) and a complete set of extreme rays \(\left\{ \begin{bmatrix} -1 \\ 1 \end{bmatrix}, \begin{bmatrix} 2 \\ 1 \end{bmatrix} \right\}\) where as \(P_2\) has one extreme point \(\begin{bmatrix} 1 \\ 1 \end{bmatrix}\) and a complete set of extreme rays \(\left\{ \begin{bmatrix} 1 \\ 3 \end{bmatrix}, \begin{bmatrix} 2 \\ -1 \end{bmatrix} \right\}\). Hence, \[ P_1 = \left\{ \lambda_{(1,1)}\begin{bmatrix} 0 \\ 1 \end{bmatrix} + \lambda_{(1,2)}\begin{bmatrix} 2 \\ 1 \end{bmatrix} + \gamma_{(1,1)}\begin{bmatrix} -1 \\ 1 \end{bmatrix} + \gamma_{(1,2)}\begin{bmatrix} 2 \\ 1 \end{bmatrix} :\ \begin{array}{r} \lambda_{(1,1)} + \lambda_{(1,2)} = 1 \\ \lambda_{(1,1)}, \lambda_{(1,2)} \geq 0 \\ \gamma_{(1,1)}, \gamma_{(1,2)} \geq 0 \\ \end{array}\right\}\] and \[P_2 = \left\{ \lambda_{(2,1)}\begin{bmatrix} 1 \\ 1 \end{bmatrix} + \gamma_{(2,1)}\begin{bmatrix} 1 \\ 3 \end{bmatrix} + \gamma_{(2,2)}\begin{bmatrix} 2 \\ -1 \end{bmatrix} :\ \begin{array}{r} \lambda_{(2,1)} = 1 \\ \lambda_{(2,1)} \geq 0 \\ \gamma_{(2,1)}, \gamma_{(2,2)} \geq 0 \\ \end{array}\right\}.\]

We can reformulate \((P)\) as \begin{align*} \min \ & \lambda_{(1,1)} + 11\lambda_{(1,2)} -4\gamma_{(1,1)} + 11\gamma_{(1,2)} + 7\lambda_{(2,1)} + 15\gamma_{(2,1)} + 2\gamma_{(2,2)} \\ \text{s.t.} \ & 5\lambda_{(1,1)} + 3\lambda_{(1,2)} + 5\gamma_{(1,1)} + 3\gamma_{(1,2)} + \lambda_{(2,1)} - 11\gamma_{(2,1)} + 20\gamma_{(2,2)} = 5 \\ & \lambda_{(1,1)}+\lambda_{(1,2)} = 1 \\ & \lambda_{(2,1)} = 1 \\ & \lambda_{(1,1)}, \lambda_{(1,2)}, \gamma_{(1,1)},\gamma_{(1,2)}, \lambda_{(2,1)}, \gamma_{(2,1)}, \gamma_{(2,2)} \geq 0 \end{align*} Solving this reformulation gives an optimal solution \(\lambda_{(1,1)} = \lambda_{(2,1)} = 1\), \(\gamma_{(2,1)} = \frac{1}{11}\) with the remainder of the variables equal to 0. The optimal value is again \(\frac{103}{11}\) and the solution gives the point \(\lambda_{(1,1)} \begin{bmatrix} 0 \\ 1 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}\) in \(P_1\) and \(\lambda_{(2,1)} \begin{bmatrix} 1 \\ 1 \end{bmatrix} + \gamma_{(2,1)} \begin{bmatrix} 1 \\ 3\end{bmatrix} = \begin{bmatrix} 1+ \frac{1}{11} \\ 1+\frac{3}{11}\end{bmatrix} = \begin{bmatrix} \frac{12}{11} \\ \frac{14}{11}\end{bmatrix}\) in \(P_2\).

Note that \((DW)\) is a linear programming problem in standard form. But it might have too many variables compared to \((P)\). To solve \((DW)\), we will use the simplex method with column generation. We illustrate the concepts on the problem \begin{align*} \min \ & \mathbf{c}^\mathsf{T}\mathbf{x} \\ (SP)~~~~~\text{s.t.}\ & \mathbf{A}\mathbf{x} = \mathbf{b} \\ & \mathbf{x} \geq \mathbf{0}. \end{align*}

Suppose that \(B\) is a basis determining a basic feasible solution. Recall that the only part of \(\mathbf{A}\) that is needed to compute the associated basic feasible solution is the submatrix \(\mathbf{A}_B\). To determine if the basic feasible solution is optimal, we solve for \(\mathbf{y}\), which we call the simplex multiplier with respect to the basis \(B\), in \(\mathbf{y}^\mathsf{T}\mathbf{A}_B = \mathbf{c}_B^\mathsf{T}\) and check if it is feasible to the dual; i.e. if \(\mathbf{y}^\mathsf{T}\mathbf{A}_j \leq c_j\) for all \(j \notin B\). If not, we have a \(k \notin B\) such that \(\mathbf{y}^\mathsf{T}\mathbf{A}_k \gt c_k\) and \(x_k\) is the entering variable. The leaving variable can be obtained knowing only \(\mathbf{A}_{B\cup\{k\}}\), \(\mathbf{c}_{B\cup\{k\}}\), and \(\mathbf{b}\). Therefore, the only step that involves knowledge of the entire \(\mathbf{A}\) is in finding \(k\).

In the case of \((DW)\), the check can be performed without the explicit knowledge of the entire \(\mathbf{A}\). Suppose that we have a basis determining a basic feasible solution. Let the simplex multiplier with respect to this basis be given by \(\begin{bmatrix} \mathbf{u} \\ \zeta_1 \\ \vdots \\ \zeta_k\end{bmatrix}\) where \(\mathbf{u} \in \mathbb{R}^m\) is associated with \(\displaystyle\sum_{i=1}^k \left(\displaystyle\sum_{j = 1}^{p_i} \lambda_{(i,j)} \mathbf{A}^{(i)} \mathbf{x}^{(i,j)} + \displaystyle\sum_{j = 1}^{r_i} \gamma_{(i,j)} \mathbf{A}^{(i)} \mathbf{d}^{(i,j)} \right) = \mathbf{b}\) and \(\zeta_i \in \mathbb{R}\) is associated with \(\displaystyle\sum_{j=1}^{p_i} \lambda_{(i,j)}=1\), for \(i=1,\ldots,k\).

Note that in the objective function, the coefficient of \(\lambda_{(i,j)}\) is \({\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{x}^{(i,j)}\) and that of \(\gamma_{(i,j)}\) is \({\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{d}^{(i,j)}.\) In addition, the column of coefficients of \(\lambda_{(i,j)}\) in the equality constraints is \(\begin{bmatrix} \mathbf{A}^{(i)}\mathbf{x}^{(i,j)} \\ \mathbf{e}^{(i)} \end{bmatrix}\) where \(\mathbf{e}^{(i)}\) is the \(i\)th column of the \(k\times k\) identity matrix, and the column of coefficients of \(\gamma_{(i,j)}\) in the equality constraints is \(\begin{bmatrix} \mathbf{A}^{(i)}\mathbf{x}^{(i,j)} \\ \mathbf{0} \end{bmatrix}\). Hence, we need to check for each \(i \in \{1,\ldots,k\}\) if there exists \(j \in \{1,\ldots, n_i\}\) such that \[ \mathbf{u}^\mathsf{T}\left(\mathbf{A}^{(i)} \mathbf{x}^{(i,j)}\right) +\zeta_i \gt {\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{x}^{(i,j)} \] or if there exists \(j \in \{1,\ldots, r_i\}\) such that \[ \mathbf{u}^\mathsf{T}\left(\mathbf{A}^{(i)} \mathbf{d}^{(i,j)}\right) \gt {\mathbf{c}^{(i)}}^\mathsf{T} \mathbf{d}^{(i,j)}. \]

These inequalities can be rewritten as \[\zeta_i \gt \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{x}^{(i,j)}\] and \[0 \gt \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{d}^{(i,j)},\] respectively. We can handle both sets of inequalities for a particular \(i \in \{1,\ldots,k\}\) by solving the subproblem \begin{align*} \min \ & \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{x} \\ \text{s.t.} \ & \mathbf{x} \in P_i. \end{align*}

By assumption, \(P_i\) is pointed and is therefore nonempty. By the Fundamental Theorem of Linear Programming, the subproblem either has an optimal solution or is unbounded.

Suppose that it has an optimal solution. By Theorem 8.7 there is one that is an extreme point \(\mathbf{x}^{(i)}\) of \(P_i\). If the optimal value is less than \(\zeta_i\), then \[\zeta_i \gt \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{x}^{(i)}\] and so we have found an entering variable for \((DW)\).

Suppose that it is unbounded. By Theorem 10.5 there is an extreme ray \(\mathbf{d}^i\) of \(P_i\) so that \[0 \gt \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{d}^{i}.\] Again, we have found an entering variable for \((DW)\).

If none of the above applies for all \(i = 1,\ldots,k\), then \((DW)\) has been solved to optimality.

The computational advantage of the above method for solving \((DW)\) instead of solving \((P)\) directly is that if \(k\) is large, the problem \((P)\) has many constraints. So in the case when \(m\) is small and each of the subproblem is easy to solve, each iteration of the simplex method has only modest memory requirements, making it possible to solve very large instances of \((P)\).

Example. Suppose that in the example above, the current basic variables are \(\lambda_{(1,2)},\gamma_{(1,1)},\lambda_{(2,1)}\). The basic solution therefore has \(\begin{bmatrix} \lambda_{(1,2)} \\ \gamma_{(1,1)} \\ \lambda_{(2,1)} \end{bmatrix}= \begin{bmatrix} 1 \\ \frac{1}{5} \\ 1 \end{bmatrix}\). We now attempt to find an entering variable.

The simplex multiplier can be obtained by solving \[\begin{bmatrix} u & \zeta_1 & \zeta_2\end{bmatrix} \begin{bmatrix} 3 & 5 & 1 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 11 & -4 & 7 \end{bmatrix}\] which gives \(\begin{bmatrix} u \\ \zeta_1 \\ \zeta_2\end{bmatrix} = \begin{bmatrix} -\frac{4}{5} \\ \frac{67}{5} \\ \frac{39}{5}\end{bmatrix}\).

We solve \begin{align*} \min \ & \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{x} \\ \text{s.t.} \ & \mathbf{x} \in P_i. \end{align*} with \(i = 1\): \begin{align*} \min \ & \left(\begin{bmatrix} 5 & 1 \end{bmatrix} - \left(-\frac{4}{5}\right) \begin{bmatrix} -1 & 5 \end{bmatrix}\right) \begin{bmatrix} x_1 \\ x_2\end{bmatrix} \\ ~\text{s.t.} \ & \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \in P_1. \end{align*} That is, \[\begin{array}{rrcrcl} \min \ & \frac{21}{5}x_1 & + & 5x_2 \\ ~\text{s.t.} \ & x_1 & + & x_2 & \geq & 1 \\ & -x_1 & + & 2x_2 & \geq & 0 \\ & & & x_2 & \geq & 1. \end{array}\] An extreme-point optimal solution is \(\begin{bmatrix} 0 \\ 1\end{bmatrix}\). The optimal value is \(5\) which is less than \(\zeta_1\). Hence, we can have \(\lambda_{(1,1)}\) as the entering variable.

Solving for \(\lambda_{(1,2)}\), \(\gamma_{(1,1)}\), and \(\lambda_{(2,1)}\) in terms of \(\lambda_{(1,1)}\) gives \begin{align*} \lambda_{(1,2)} & = 1 - \lambda_{(1,1)} \\ \gamma_{(1,1)} & = \frac{1}{5} - \frac{2}{5}\lambda_{(1,1)} \\ \lambda_{(2,1)} & = 1. \end{align*} Hence, the maximum value that \(\lambda_{(1,1)}\) can be is \(\frac{1}{2}\), implying that \(\gamma_{(1,1)}\) is the leaving variable.

The new basic solution is therefore \(\begin{bmatrix} \lambda_{(1,1)} \\ \lambda_{(1,2)} \\ \lambda_{(2,1)} \end{bmatrix} = \begin{bmatrix} \frac{1}{2} \\ \frac{1}{2} \\ 1 \end{bmatrix}\).

The simplex multiplier can be obtained by solving \[\begin{bmatrix} u & \zeta_1 & \zeta_2\end{bmatrix} \begin{bmatrix} 5 & 3 & 1 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 11 & 7 \end{bmatrix}\] which gives \(\begin{bmatrix} u \\ \zeta_1 \\ \zeta_2\end{bmatrix} = \begin{bmatrix} -5 \\ 26 \\ 12\end{bmatrix}\).

This time, we solve \begin{align*} \min \ & \left({\mathbf{c}^{(i)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(i)}\right)\mathbf{x} \\ \text{s.t.} \ & \mathbf{x} \in P_i. \end{align*} with \(i = 2\): \begin{align*} \min \ & \left(\begin{bmatrix} 3 & 4 \end{bmatrix} - (-5) \begin{bmatrix} 7 & -6 \end{bmatrix}\right) \begin{bmatrix} x_1 \\ x_2\end{bmatrix} \\ ~\text{s.t.} \ & \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \in P_1. \end{align*} That is, \[\begin{array}{rrcrcl} \min \ & 38x_1 & - & 26x_2 \\ ~\text{s.t.} \ & 3x_1 & - & x_2 & \geq & 2 \\ & x_1 & + & 2x_2 & \geq & 3. \end{array}\] The problem is unbounded and \(\mathbf{d} = \begin{bmatrix} 1 \\ 3\end{bmatrix}\) is an extreme ray of \(P_2\) satisfying \(0 \gt \left({\mathbf{c}^{(2)}}^\mathsf{T}- \mathbf{u}^\mathsf{T}\mathbf{A}^{(2)}\right)\mathbf{d}\). Hence, we can have \(\gamma_{(2,1)}\) is the entering variable.

Solving for \(\lambda_{(1,1)}\), \(\lambda_{(1,2)}\) and \(\lambda_{(2,1)}\) in terms of \(\gamma_{(2,1)}\) gives \begin{align*} \lambda_{(1,1)} & = \frac{1}{2} + \frac{11}{2} \gamma_{(2,1)} \\ \lambda_{(1,2)} & = \frac{1}{2} - \frac{11}{2} \gamma_{(2,1)} \\ \lambda_{(2,1)} & = 1. \end{align*} Hence, the maximum value that \(\gamma_{(2,1)}\) can be is \(\frac{1}{11}\), implying that \(\lambda{(1,2)}\) is the leaving variable.

The new basic solution is therefore \(\begin{bmatrix} \lambda_{(1,1)} \\ \lambda_{(2,1)} \\ \gamma_{(2,1)} \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ \frac{1}{11} \end{bmatrix}\). Note that this is precisely the optimal solution stated above.

It is now possible to check that there can be no entering variable. The details are left as an exercise.

Worked examples

  1. Continue with the column generation example above and show that there is no entering variable.