A classic application of Dantzig-Wolfe Decomposition where the pricing sub-problem is a knapsack problem and column generation produces optimal cutting patterns.
Problem Description
A paper mill receives orders for rolls of paper of varying widths. The mill produces large master rolls of a fixed width W. Each master roll must be cut into smaller rolls to fill a set of orders. The goal is to minimise the number of master rolls used (equivalently, to minimise waste) while satisfying all orders.
Notation (all symbols defined here, before first use):
W
Width of a master roll.
n
Number of distinct order widths.
wi
Width of order i, for i=1,…,n.
di
Demand (number of rolls required) for order i.
aij
Number of rolls of width wi produced by cutting pattern
j.
xj
Number of times cutting pattern j is used.
m
Number of feasible cutting patterns (exponentially large).
A cutting pattern is a feasible assignment of widths to a master roll:
The LP relaxation sets xj≥0 (replacing integrality). Because there are exponentially many patterns m, this LP cannot be solved by enumerating all columns — Dantzig-Wolfe Decomposition via column generation is the key technique.
Dantzig-Wolfe Master Problem
Introduce dual variables πi≥0 for each demand constraint. The restricted master problem (RMP) maintains only a subset of columns J⊆{1,…,m}:
mins.t.j∈J∑xjj∈J∑aijxj≥di∀ixj≥0∀j∈J
At each iteration, solve the RMP and obtain dual variables πi∗.
Role of dual variables: πi∗ is the shadow price of demand i — the marginal reduction in total rolls used if demand i were increased by one unit. These prices drive the column generation sub-problem.
Pricing Sub-Problem (Knapsack)
Check whether any currently unlisted pattern can improve the objective. The reduced cost of a new pattern a=(a1,…,an)T is:
cˉ(a)=1−i=1∑nπi∗ai
We seek a pattern with negative reduced cost — i.e., one that reduces total rolls. This is equivalent to solving a 0-1 knapsack problem:
maxs.t.i=1∑nπi∗aii=1∑nwiai≤Wai∈Z≥0∀i
If max∑iπi∗ai>1, a new improving column exists and is added to the RMP. Otherwise, the RMP is optimal.
Numerical Iteration (Example)
Consider n=2 order widths, W=10, w1=4, w2=3, d1=3, d2=5.
Initial patterns: Let p1=(2,0)T (two rolls of width 4) and p2=(0,3)T (three rolls of width 3).
Iteration 1:
Solve RMP with {p1,p2}.
Obtain duals π1∗=0.5, π2∗=0.333.
Knapsack: maximise 0.5a1+0.333a2 subject to 4a1+3a2≤10.
Optimal solution: a1=1,a2=2 giving value 0.5+0.667=1.167>1.
Add new pattern p3=(1,2)T.
Iteration 2:
Re-solve RMP with {p1,p2,p3}.
Updated duals and check knapsack again.
If no pattern achieves reduced cost <0, LP is optimal.