29 "Aggregate inventory-balance formulation";
39 ArgumentNullException.ThrowIfNull(problem);
47 ArgumentNullException.ThrowIfNull(problem);
52 double[] suffixDemand =
59 new Dictionary<int, int>();
61 new Dictionary<int, int>();
63 new Dictionary<int, int>();
74 suffixDemand[period]);
83 double inventoryUpperBound =
86 : suffixDemand[period + 1];
95 production.Add(period, x);
97 inventory.Add(period, i);
99 model.AddObjectiveTerm(
103 model.AddObjectiveTerm(
107 model.AddObjectiveTerm(
117 new List<LinearTerm>();
123 inventory[period - 1],
138 $
"balance[{period}]",
144 $
"setup-link[{period}]",
151 -suffixDemand[period])
159 "Classical aggregate ULS formulation; Wagner & Whitin (1958), " +
160 "DOI 10.1287/mnsc.5.1.89; formulation taxonomy in Brahimi et al. " +
161 "(2006), DOI 10.1016/j.ejor.2004.01.054.",
163 "ULS-Aggregate-Inventory"),
Represents a validated classical uncapacitated lot-sizing problem.
ReadOnlySpan< double > UnitProductionCosts
Gets unit production costs by period.
int Horizon
Gets the number of planning periods.
ReadOnlySpan< double > HoldingCosts
Gets end-of-period unit holding costs by period.
ReadOnlySpan< double > Demands
Gets demand by period.
ReadOnlySpan< double > SetupCosts
Gets fixed setup costs by period.
LinearVariableType
Identifies the domain of a variable in a portable linear mathematical model.
LinearConstraintSense
Identifies the sense of a portable linear constraint.
Stores one coefficient of a portable linear expression.