4using System.Threading.Tasks;
5using LotSizingDataModel.Instance;
29 LotSizingInstance instance,
32 ArgumentNullException.ThrowIfNull(
35 ArgumentNullException.ThrowIfNull(
39 options.IncludeAdditionalCapacity &&
45 entry.WorkCenter.AdditionalCapacity is not
null);
52 LotSizingInstance instance,
55 CancellationToken cancellationToken)
60 .EnumerateWorkCenters(
61 instance.SupplyChain))
63 if (entry.WorkCenter.AdditionalCapacity is
null)
70 period <= instance.PlanningHorizon;
73 cancellationToken.ThrowIfCancellationRequested();
76 entry.WorkCenter.AdditionalCapacity[period];
88 .WorkCenterAdditionalCapacity)
102 $
"OW_p{entry.PlantId}_w" +
103 $
"{entry.WorkCenter.Id}_t{period}",
106 $
"Additional capacity of work center " +
107 $
"{entry.WorkCenter.Id} in plant " +
108 $
"{entry.PlantId}, period {period}.");
112 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 WorkCenterAdditionalCapacity
Identifies additional work-center-capacity 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.