4using System.Threading.Tasks;
5using LotSizingDataModel.Instance;
29 LotSizingInstance instance,
32 ArgumentNullException.ThrowIfNull(
35 ArgumentNullException.ThrowIfNull(
39 options.IncludeResourceActivation &&
45 entry.WorkCenter.FixedUsageCost is not
null);
52 LotSizingInstance instance,
55 CancellationToken cancellationToken)
60 .EnumerateWorkCenters(
61 instance.SupplyChain))
63 if (entry.WorkCenter.FixedUsageCost is
null)
70 period <= instance.PlanningHorizon;
73 cancellationToken.ThrowIfCancellationRequested();
78 .WorkCenterActivation)
92 $
"YW_p{entry.PlantId}_w" +
93 $
"{entry.WorkCenter.Id}_t{period}",
95 $
"Activation of work center " +
96 $
"{entry.WorkCenter.Id} in plant " +
97 $
"{entry.PlantId}, period {period}.");
101 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 WorkCenterActivation
Identifies work-center activation decision variables.
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string Plant
Plant identifier segment.
const string WorkCenter
Work-center identifier segment.
const string Period
Period index segment.