39 "Federgruen-Tzur nondecreasing-setup O(n)";
49 ArgumentNullException.ThrowIfNull(problem);
53 for (var period = 0; period < problem.Horizon - 1; period++)
55 if (setupCosts[period] > setupCosts[period + 1])
70 CancellationToken cancellationToken =
default)
72 ArgumentNullException.ThrowIfNull(problem);
73 cancellationToken.ThrowIfCancellationRequested();
77 throw new NotSupportedException(
78 "FedergruenTzurNondecreasingSetupSolver requires " +
79 "nondecreasing setup costs.");
Implements Federgruen-Tzur's linear-time forward algorithm for nondecreasing setup costs.
static bool IsApplicable(UlsProblem problem)
Determines whether setup costs are nondecreasing.
UlsSolveResult Solve(UlsProblem problem, CancellationToken cancellationToken=default)
UlsSolverKind Kind
Gets the broad family of the solver.
string Name
Gets the stable human-readable name of the solver.
Shared allocation-conscious forward recurrence for the two Federgruen-Tzur linear-time specialization...
static UlsSolveResult SolveNondecreasingSetupCosts(UlsProblem problem, string solverName, CancellationToken cancellationToken)
Represents a validated classical uncapacitated lot-sizing problem.
ReadOnlySpan< double > SetupCosts
Gets fixed setup 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.