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

  1. Establish the units, measurement scope and model assumptions before entering values.
  2. 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.
  3. 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.
  4. 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 fieldMeaningValue typeRequirement
requiredLumberPieceLengthsMmRequired lumber piece lengths mmarray of numberRequired; constraints below
callerVerifiedPieceMaterialGrainClassesCaller verified piece material grain classesarray of stringRequired; constraints below
availableStockBoardLengthsMmAvailable stock board lengths mmarray of numberRequired; constraints below
callerVerifiedStockMaterialGrainClassesCaller verified stock material grain classesarray of stringRequired; constraints below
sawKerfAfterEachPieceMmSaw kerf after each piece mmnumberRequired; 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 fieldMeaningValue type
pieceStockIndicesPiece stock indicesarray of number
usedStockIndicesUsed stock indicesarray of number
remainingUsedStockMmRemaining used stock mmarray of number
unassignedPieceIndicesUnassigned piece indicesarray
globalOptimalityEstablishedGlobal optimality establishedboolean
json
{
  "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

  1. Lumber Cut List Optimization — tool.io

Similar or alternative tools

Don't forget to set a bookmark for tool.io!
Privacy | Imprint | Cookies