35 "Ho-Chang-Solis net Least Period Cost";
46 CancellationToken cancellationToken =
default)
48 ArgumentNullException.ThrowIfNull(problem);
49 cancellationToken.ThrowIfCancellationRequested();
57 ArrayPool<int>.Shared.Rent(horizon);
62 buffer.AsSpan(0, horizon);
67 useImprovedTieBreak:
false,
78 ArrayPool<int>.Shared.Return(
Implements the Ho-Chang-Solis net Least Period Cost (nLPC) heuristic.
UlsSolverKind Kind
Gets the broad family of the solver.
string Name
Gets the stable human-readable name of the solver.
static bool IsApplicable(UlsProblem problem)
UlsSolveResult Solve(UlsProblem problem, CancellationToken cancellationToken=default)
Solves an uncapacitated lot-sizing problem.
Shared applicability checks for classical stationary-cost lot-sizing heuristics.
static void ThrowIfNotStationary(UlsProblem problem, string solverName)
static bool HasStationaryRelevantCosts(UlsProblem problem)
Builds and validates a zero-backlogging heuristic solution from a set of replenishment cycles.
static UlsSolveResult Build(UlsProblem problem, ReadOnlySpan< int > cycleEnds, string solverName, CancellationToken cancellationToken)
Shared incremental implementation of the Ho-Chang-Solis net average period cost recursion.
static void BuildCycleEnds(UlsProblem problem, Span< int > cycleEnds, bool useImprovedTieBreak, CancellationToken cancellationToken)
Represents a validated classical uncapacitated lot-sizing problem.
int Horizon
Gets the number of planning periods.
Represents the outcome returned by a ULS solution strategy.
Defines the common strategy contract implemented by every ULS solver.
UlsSolverKind
Identifies the broad family of a ULS solution strategy.