The cutting stock problem is the task of cutting a set of required piece lengths from a supply of fixed-length stock material while using as little stock as possible. It's a well-studied problem in operations research (first formalized by Kantorovich in the 1930s and made practical by Gilmore and Gomory's column-generation method in the 1960s), and it's exactly the problem underneath any cutting list for bars, profiles, pipe, or timber.
The problem, stated plainly
You have:
- A list of required lengths, each with a quantity — your cutting list.
- A set of available stock lengths, each with a limited or unlimited quantity — what's actually on the rack.
You need to decide:
- Which stock lengths to use.
- How to cut each one (a cutting pattern — the specific combination of pieces taken from one bar).
- How many bars of each pattern to cut.
...so that every required piece is produced, using the smallest amount of total stock.
Why it's harder than it looks
For a single bar, deciding what fits is simple arithmetic. The difficulty is that there are usually many different valid ways to combine pieces onto a bar, and many different combinations of patterns that together satisfy the whole list — and the number of possible combinations grows extremely fast as the list gets longer. This is why the cutting stock problem is classified as NP-hard: there's no known method that's guaranteed to find the provably best answer instantly on every input, so real-world solvers make a deliberate trade-off between solve speed and how close the result gets to the mathematical optimum.
Two people cutting the same list by hand, or in a spreadsheet, will often produce two different plans — and neither may be as good as what a solver that actually searches many combinations can find.
A worked example
Take a genuinely mixed cutting list:
- 2400mm × 4
- 1840mm × 3
- 1210mm × 5
Available stock: 6200mm, 5600mm, and 4500mm lengths, unlimited quantity. Kerf 5mm, end trim 15mm per side, minimum useful offcut 300mm.
Run through Barcut Pro's actual production engine, this returns:
| Stock length | Cuts | Leftover |
|---|---|---|
| 6200mm | 2400 + 1210 + 1210 + 1210 | scrap |
| 6200mm | 1840 + 1840 + 1210 + 1210 | scrap |
| 5600mm | 2400 + 2400 | reusable offcut |
| 4500mm | 2400 + 1840 | scrap |
Four bars, every one of the 12 required pieces placed. Notice the solver didn't just use one stock length repeatedly — it mixed 6200mm, 5600mm and 4500mm bars, picking whichever length let each pattern fit tightest. That's the core of what "solving" the cutting stock problem actually means: not cutting the list in the order it was written, but searching for the combination of patterns that collectively uses the least stock.
Why this matters even if you've never heard the term
Most people never think of their job as "a cutting stock problem" — they think of it as "I need 12 pieces cut from whatever bars we have." That's the same problem. If your cutting list has more than a handful of lengths and more than one available stock length, you're already solving (or under-solving) a cutting stock problem, whether or not you use that name for it.
How Barcut Pro solves it
Barcut Pro's production engine combines exact and heuristic techniques — column generation, arc-flow modelling, and local-search improvement — to search a much larger space of possible cutting patterns than manual planning realistically can, while still returning a plan in well under a second for typical jobs. It accounts for kerf, end trim, multiple stock lengths, and a minimum useful offcut threshold as part of the search itself, not as an afterthought applied to a plan that was built without them.
Try the 1D cutting optimizer with your own cutting list and stock lengths — no account required.