🧩 Constraint Solving POTD:Problem of the Day: The Cutting Stock Problem #60609
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Constraint Solving — Problem of the Day. A newer discussion is available at Discussion #60814. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem Statement
The Cutting Stock Problem is a classic optimization problem: given raw material in standard widths (or rolls, sheets, etc.) and a set of customer orders for specific smaller widths in specified quantities, find a way to cut the material to fulfill all orders while minimizing waste (or equivalently, minimizing the number of raw items used).
Concrete Example
Suppose a paper mill has raw rolls of width 100 cm. Customers place orders for:
A cutting pattern is a way to arrange the desired widths on one raw roll. For instance:
The problem is to decide how many rolls to cut using each pattern such that:
Input/Output
Input:
W(e.g., 100 cm)w_1, w_2, ..., w_m(e.g., 50, 40, 30)d_1, d_2, ..., d_m(e.g., 40, 30, 20)Output:
W)Why It Matters
The cutting stock problem appears everywhere material waste is expensive:
In practice, even a 1% reduction in waste across a large mill translates to significant cost savings and environmental impact. This makes the cutting stock problem one of the most commercially important constraint problems in industry.
Modeling Approaches
Approach 1: Column Generation / Dantzig-Wolfe Decomposition (MIP)
The classic pattern-based formulation works as follows:
Decision variables:
P_j(each a combination of widths that fit inW)x_j= number of raw rolls cut using patternjObjective: minimize
Σ_j x_j(total rolls used)Constraints: For each desired width
i:Trade-offs:
Approach 2: Direct Integer Programming with Cutting Decisions
Decision variables:
pon each raw rollr, a binary variabley_{r,p,i}indicating whether desired widthiis cut at positionpon rollrObjective: minimize total raw material used
Constraints:
Trade-offs:
Approach 3: Constraint Programming + Greedy / First-Fit Heuristics
Decision variables:
Objective: minimize number of rolls
Constraints:
Propagation:
Search strategy:
Trade-offs:
Example Model (MiniZinc-style)
Key Techniques
1. Column Generation
The brute-force approach of enumerating all patterns is infeasible for large widths. Column generation solves the LP relaxation of the pattern-based model iteratively:
This technique is fundamental for production-scale cutting stock solvers and has led to dramatic efficiency improvements over naive branch-and-bound.
2. Bin Packing Heuristics + Bin Covering
3. Symmetry Breaking and Reformulation
Challenge Corner
Open Question for You:
Suppose you have a two-dimensional variant: you must cut items of various sizes (e.g.,
50×30,40×40,30×50) from large sheets of size100×100. Orders are for quantities of each size.References
Wäscher, G., Haußner, H., & Schumann, H. (2007). "An improved typology of cutting and packing problems." European Journal of Operational Research, 183(3), 1109–1130.
Gilmore, P. C., & Gomory, R. E. (1961). "A linear programming approach to the cutting-stock problem." Operations Research, 9(6), 849–859.
Vance, P. H. (1998). "Branch-and-price algorithms for the one-dimensional cutting stock problem." Computational Optimization and Applications, 9(3), 211–228.
Scheithauer, G., & Terno, J. (1996). "The modified integer round-up property for the one-dimensional cutting stock problem." European Journal of Operational Research, 84(3), 562–571.
All reactions