Framework Example 3: One-Dimensional Cutting Stock — Overview
1. Overview
This example uses the one-dimensional cutting-stock (CSP1D) framework to separate product/material data, the cutting-plan master, and pricing. The overview explains column generation; the material and produce pages define the data contract and master model separately.
2. Contexts and Dependencies
| Context | Responsibility | Dependency |
|---|---|---|
| Material | Products, demand, materials, and cutting-plan data | Input configuration |
| Produce | Plan-usage variables, yield/resource expressions, and master pipelines | Material, generated plans |
| Cutting-plan generation | Initial plans and improving-column search | Material, master duals |
| Length assignment and wasting minimization | Optional length rules and loss-related objectives | Material, produce, configuration |
The application assembles contexts and controls column generation. Algorithm roles must not be treated as a second independent production-variable family.
3. Concepts, Sets, and Predicates
4. Variables and Intermediate Values
5. Assertions, Constraints, and Objectives
Demand is imposed per product as
6. Algorithms and Lifecycle
Generate initial plans, solve the restricted master, extract dual prices, search for negative-reduced-cost plans, deduplicate and insert columns, and solve again. Termination must distinguish complete pricing with no improving columns from an early return caused by time or iteration limits.
7. Register → Construct → Solve → Analyze
Registration creates the produce aggregate and its pipelines. Construction compiles available plans into master columns. Solving alternates the master and pricing. Analysis converts plan usage into product yields and material usage.
8. Source Entry Points
9. Kotlin/Rust Comparison and Design Decisions
Both language entry points call their CSP1D frameworks rather than reimplement every context inside the Demo directory. Mathematical notation consistently indexes variables by plan
10. Context Model Pages
11. Change Log
| Version | Change | Reason |
|---|---|---|
| 1.1 | Aligned bilingual overviews, notation, and source entry points | Keep the overview consistent with its context models |