Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Cutting stock problem
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Mathematical formulation and solution approaches == The standard formulation for the cutting-stock problem (but not the only one) starts with a list of ''m'' orders, each requiring <math>q_j</math> pieces, where <math>j = 1,\ldots,m</math>. We then construct a list of all possible combinations of cuts (often called "patterns" or "configurations"). Let <math>C</math> be the number of those patterns. We associate with each pattern a positive integer variable <math>x_i</math>, representing how many times pattern <math>i</math> is to be used, where <math>i = 1,\ldots,C</math>. The linear integer program is then: :<math>\min\sum_{i=1}^C c_i x_i</math> :<math>\text{s.t.}\sum_{i=1}^C a_{ij} x_i \ge q_j, \quad \quad \forall j=1,\dots,m</math> :<math>x_i \ge 0</math>, integer where <math>a_{ij}</math> is the number of times order <math>j</math> appears in pattern <math>i</math> and <math>c_i</math> is the cost (often the waste) of pattern <math>i</math>. The precise nature of the quantity constraints can lead to subtly different mathematical characteristics. The above formulation's quantity constraints are '''minimum''' constraints (at least the given amount of each order must be produced, but possibly more). When <math>c_i=1</math>, the objective minimises the number of utilised master items and, if the constraint for the quantity to be produced is replaced by equality, it is called the '''[[bin packing problem]]'''. The most general formulation has two-sided constraints (and in this case a minimum-waste solution may consume more than the minimum number of master items): :<math>q_j \le \sum_{i=1}^n a_{ij} x_i \le Q_j, \quad \quad \forall j=1,\dots,m</math> This formulation applies not just to one-dimensional problems. Many variations are possible, including one where the objective is not to minimise the waste, but to maximise the total value of the produced items, allowing each order to have a different value. In general, the number of possible patterns grows exponentially as a function of ''m'', the number of orders. As the number of orders increases, it may therefore become impractical to enumerate the possible cutting patterns. An alternative approach uses [[delayed column-generation]]. This method solves the cutting-stock problem by starting with just a few patterns. It generates additional patterns when they are needed. For the one-dimensional case, the new patterns are introduced by solving an auxiliary optimization problem called the [[knapsack problem]], using dual variable information from the [[linear program]]. The knapsack problem has well-known methods to solve it, such as [[branch and bound]] and [[dynamic programming]]. The Delayed Column Generation method can be much more efficient than the original approach, particularly as the size of the problem grows. The [[column generation]] approach as applied to the cutting stock problem was pioneered by Gilmore and Gomory in a series of papers published in the 1960s.<ref name=Gilmore61>Gilmore P. C., R. E. Gomory (1961). ''[https://web.archive.org/web/20190219020906/http://pdfs.semanticscholar.org/1417/64b5e86dc6c2647dfce48098794c79d5a38b.pdf A linear programming approach to the cutting-stock problem]''. Operations Research 9: 849-859</ref><ref name=Gilmore63>Gilmore P. C., R. E. Gomory (1963). ''[http://people.stern.nyu.edu/rgomory/academic_papers/24_LP.pdf A linear programming approach to the cutting-stock problem - Part II]''. Operations Research 11: 863-888</ref> Gilmore and Gomory showed that this approach is guaranteed to converge to the (fractional) optimal solution, without needing to enumerate all the possible patterns in advance. A limitation of the original Gilmore and Gomory method is that it does not handle integrality, so the solution may contain fractions, e.g. a particular pattern should be produced 3.67 times. Rounding to the nearest integer often does not work, in the sense that it may lead to a sub-optimal solution and/or under- or over-production of some of the orders (and possible infeasibility in the presence of two-sided demand constraints). This limitation is overcome in modern algorithms, which can solve to optimality (in the sense of finding solutions with minimum waste) very large instances of the problem (generally larger than encountered in practice<ref name=Goulimis1990>Goulimis C (1990). ''[https://www.sciencedirect.com/science/article/pii/037722179090355F Optimal solutions for the cutting stock problem]''. European Journal of Operational Research 44: 197-208</ref><ref name=Carvalho1998>de Carvalho V (1998). ''[https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1475-3995.1998.tb00100.x Exact solution of cutting stock problems using column generation and branch-and-bound]''. International Transactions in Operational Research 5: 35–44</ref>). The cutting-stock problem is often highly degenerate, in that multiple solutions with the same amount of waste are possible. This degeneracy arises because it is possible to move items around, creating new patterns, without affecting the amount of waste. This gives rise to a whole collection of related problems which are concerned with some other criterion, such as the following: * The minimum pattern count problem: to find a minimum-pattern-count solution amongst the minimum-waste solutions. This is a very hard problem, even when the waste is known.<ref name=Umetani2003>S. Umetani, M. Yagiura, and [[Toshihide Ibaraki|T. Ibaraki]] (2003). ''[https://www.sciencedirect.com/science/article/pii/S0377221702002394 One dimensional cutting stock problem to minimize the number of different patterns]''. European Journal of Operational Research 146, 388–402</ref><ref name=Diegel1996>A. Diegel, E. Montocchio, E. Walters, S. van Schalkwyk and S. Naidoo (1996). ''[https://www.sciencedirect.com/science/article/pii/0377221795003037 Setup minimizing conditions in the trim loss problem]''. European Journal of Operational Research 95:631-640</ref><ref name=McDiarmid1999>C. McDiarmid (1999). ''[https://www.sciencedirect.com/science/article/pii/S0166218X99001122 Pattern Minimisation in Cutting Stock Problems]''. Discrete Applied Mathematics, 121-130</ref> There is a [[conjecture]] that any equality-constrained one-dimensional instance with ''n'' sizes has at least one minimum waste solution with no more than ''n'' + 1 patterns. This conjecture was first refuted in April 2020 with an example with 9 sizes that requires 11 patterns.<ref name=Goulimis2020>Constantine Goulimis. ''[https://arxiv.org/abs/2004.01937 Counterexamples in the CSP]''. arXiv:2004.01937</ref> * The minimum stack problem: this is concerned with the sequencing of the patterns so as not to have too many partially completed orders at any time. This was an open problem until 2007, when an efficient algorithm based on dynamic programming was published.<ref name=Banda2007>[[María García de la Banda]], P. J. Stuckey. ''[http://www.csse.monash.edu/~mbanda/papers/informsjoc.pdf Dynamic Programming to Minimize the Maximum Number of Open Stacks]''. INFORMS Journal on Computing, Vol. 19, No. 4, Fall 2007, 607-617.</ref> * The minimum number of knife changes problem (for the one-dimensional problem): this is concerned with sequencing and permuting the patterns so as to minimise the number of times the slitting knives have to be moved. This is a special case of the generalised [[travelling salesman problem]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)