3using System.Threading.Tasks;
4using LotSizingDataModel.Core.Relationships;
5using LotSizingDataModel.Instance;
51 LotSizingInstance instance,
54 ArgumentNullException.ThrowIfNull(
57 ArgumentNullException.ThrowIfNull(
61 options.IncludeProductionSetups &&
62 instance.SupplyChain.ProductionRoutings.Count > 0;
84 LotSizingInstance instance,
87 CancellationToken cancellationToken)
90 instance.PlanningHorizon;
92 if (planningHorizon <= 0)
94 throw new InvalidOperationException(
95 "Production-setup variables cannot be built for " +
96 "an instance with a non-positive planning " +
101 ProductionRouting routing
102 in instance.SupplyChain.ProductionRoutings)
104 cancellationToken.ThrowIfCancellationRequested();
108 throw new InvalidOperationException(
109 "Every production routing must have a " +
110 "strictly positive identifier before the " +
111 "mathematical formulation is built.");
116 period <= planningHorizon;
119 cancellationToken.ThrowIfCancellationRequested();
132 string variableName =
133 $
"y_r{routing.Id}_t{period}";
139 $
"Production setup activation for routing " +
140 $
"{routing.Id} in period {period}.");
144 return ValueTask.CompletedTask;
Builds stable business-domain keys for mathematical variables and constraints.
string Build()
Builds the immutable domain-key text.
MathematicalDomainKeyBuilder Add(string name, string value)
Adds a text segment.
Provides the shared state required while constructing a solver-independent mathematical model.
Provides the canonical mathematical domain-key categories used to identify lot-sizing decision famili...
const string Setup
Identifies production setup decision variables.
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string Routing
Routing identifier segment.
const string Period
Period index segment.