ULSAlgorithms is designed around one simple workflow:
All four arrays have one value per planning period:
| Parameter | Meaning |
|---|---|
| demands | demand to satisfy in each period |
| setupCosts | fixed cost paid when production starts in a period |
| unitProductionCosts | variable production cost per unit |
| holdingCosts | cost of carrying one unit of end-of-period inventory |
Periods are zero-based. Backlogging is not allowed and initial inventory is zero.
You can instantiate a concrete strategy directly:
Or use the stable runtime catalog/factory introduced in v0.26.0:
The factory is useful for configuration files, command-line tools, experiment campaigns and user interfaces because client code does not need a compile-time switch over concrete strategy classes.
Every public algorithm still implements the same IUlsSolver contract.
For constructor-level configuration, use the overload introduced in v0.27.0:
See Solver Catalog and Factory for adaptive fallback, external optimization engine and cutting-plane examples.
To persist the selected strategy and its constructor options as a reproducible JSON artifact, see Serializable Solver Configuration.
For long-running or solver-backed methods, an optional cancellation token can be passed.
Exact methods may return Optimal. Heuristics return Feasible because they do not claim an optimality proof.