38 "Federgruen-Tzur no-speculative-motive O(n)";
48 ArgumentNullException.ThrowIfNull(problem);
53 for (var period = 0; period < problem.Horizon - 1; period++)
56 productionCosts[period] +
59 if (!
double.IsFinite(deliveredNext) ||
60 deliveredNext < productionCosts[period + 1])
75 CancellationToken cancellationToken =
default)
77 ArgumentNullException.ThrowIfNull(problem);
78 cancellationToken.ThrowIfCancellationRequested();
82 throw new NotSupportedException(
83 "FedergruenTzurNoSpeculativeMotiveSolver requires " +
84 "p[t] + h[t] >= p[t+1] for every adjacent period.");
Implements Federgruen-Tzur's linear-time forward algorithm for models without speculative inventory m...
string Name
Gets the stable human-readable name of the solver.
static bool IsApplicable(UlsProblem problem)
Determines whether the no-speculative-motive condition holds.
UlsSolveResult Solve(UlsProblem problem, CancellationToken cancellationToken=default)
UlsSolverKind Kind
Gets the broad family of the solver.
Shared allocation-conscious forward recurrence for the two Federgruen-Tzur linear-time specialization...
static UlsSolveResult SolveNoSpeculativeMotive(UlsProblem problem, string solverName, CancellationToken cancellationToken)
Represents a validated classical uncapacitated lot-sizing problem.
ReadOnlySpan< double > UnitProductionCosts
Gets unit production costs by period.
ReadOnlySpan< double > HoldingCosts
Gets end-of-period unit holding costs by period.
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.