Lumber Cut List Optimization
Bounded deterministic descending first-fit actual heterogeneous lumber/grain-class stock allocation, kerf charged after EVERY piece including last; heuristic global optimum explicitly NOT established. Caller independently establishes units, regime, calibration and applicability; this does not establish design-code compliance, authenticity, operational safety, treatment efficacy or a validated forecast.
Description
A lumber cutting layout must respect available stock and material or grain compatibility.
A lumber cutting layout must respect available stock and material or grain compatibility.1
A first-fit heuristic produces a usable allocation without proving the best possible layout. Use Lumber Cut List Optimization to evaluate the supplied inputs under the model explained below.
When to use Lumber Cut List Optimization
Use Lumber Cut List Optimization to evaluate the supplied inputs under the model explained below. Establish the units, measurement scope and model assumptions before entering values.
How to use Lumber Cut List Optimization and understand its results
- Establish the units, measurement scope and model assumptions before entering values.
- Enter Required lumber piece lengths mm, Caller verified piece material grain classes, Available stock board lengths mm, Caller verified stock material grain classes, Saw kerf after each piece mm using the field table and validation rules below, then run the tool.
- Read Piece stock indices, Used stock indices, Remaining used stock mm, Unassigned piece indices, Global optimality established; interpret the units, signs, ordering and unknown-value placeholders described below.
- Correct reported input errors and rerun. Apply successful results according to their specific meanings and check the assumptions before using them in a decision.
| Input field | Meaning | Value type | Requirement |
|---|---|---|---|
| requiredLumberPieceLengthsMm | Required lumber piece lengths mm | array of number | Required; constraints below |
| callerVerifiedPieceMaterialGrainClasses | Caller verified piece material grain classes | array of string | Required; constraints below |
| availableStockBoardLengthsMm | Available stock board lengths mm | array of number | Required; constraints below |
| callerVerifiedStockMaterialGrainClasses | Caller verified stock material grain classes | array of string | Required; constraints below |
| sawKerfAfterEachPieceMm | Saw kerf after each piece mm | number | Required; constraints below |
Enter nonempty aligned cut lengths and material/grain classes, and nonempty aligned actual stock-board lengths and classes, with at most 128 pieces and 128 boards. Lengths are positive integer mm no greater than 1000000000; kerf is nonnegative integer mm and classes are nonblank exact strings. Sort cuts longest first, retaining original-index ties, and choose the first available matching stock with room for cut+kerf. Deduct kerf after every assigned piece, including the last. Assignments retain piece order, −1 means unassigned, and used stock indices and remainders align in ascending stock order. GlobalOptimalityEstablished is always false.
requiredConsumptionMm = pieceLengthMm+kerfMm; assign first matching stock with enough remaining length Use the field order, units and branch conditions described above.
| Output field | Meaning | Value type |
|---|---|---|
| pieceStockIndices | Piece stock indices | array of number |
| usedStockIndices | Used stock indices | array of number |
| remainingUsedStockMm | Remaining used stock mm | array of number |
| unassignedPieceIndices | Unassigned piece indices | array |
| globalOptimalityEstablished | Global optimality established | boolean |
{
"input": {
"requiredLumberPieceLengthsMm": [
6,
4
],
"callerVerifiedPieceMaterialGrainClasses": [
"a",
"a"
],
"availableStockBoardLengthsMm": [
11,
6
],
"callerVerifiedStockMaterialGrainClasses": [
"a",
"a"
],
"sawKerfAfterEachPieceMm": 1
},
"output": {
"pieceStockIndices": [
0,
1
],
"usedStockIndices": [
0,
1
],
"remainingUsedStockMm": [
4,
1
],
"unassignedPieceIndices": [],
"globalOptimalityEstablished": false
}
} Limitations and assumptions
A first-fit heuristic produces a usable allocation without proving the best possible layout. Apply the exact scope and assumptions explained above.
All listed fields require explicit values. Unexpected fields, incorrect types, nonfinite numbers and sparse arrays fail validation. Domain-specific bounds, alignments and supported tokens are explained above; extremely large inputs or outputs can also be rejected. Input errors differ from successful false results, empty match lists and unknown-evidence placeholders.
Alternative or Complementary methods
Use Rebar Cut Optimization Waste Calculator for a related task: Rebar cutting combines requested pieces into equal-length stock bars.
Use Cabinet Carcass Cut List Generator for a related task: A cabinet carcass cut list depends on a specific panel-joint and back arrangement.
References
-
Lumber Cut List Optimization — tool.io
Similar or alternative tools
- Rebar Cut Optimization Waste Calculator
Rebar cutting combines requested pieces into equal-length stock bars.
- Cabinet Carcass Cut List Generator
A cabinet carcass cut list depends on a specific panel-joint and back arrangement.