3using System.Threading.Tasks;
4using LotSizingDataModel.Core.Relationships;
5using LotSizingDataModel.Instance;
18 LotSizingInstance instance,
21 ArgumentNullException.ThrowIfNull(instance);
22 ArgumentNullException.ThrowIfNull(options);
24 if (instance.SupplyChain.ProductionSetupFamilies.Count == 0)
31 throw new InvalidOperationException(
32 "Production-family setup semantics require item-level production setups.");
39 LotSizingInstance instance,
42 CancellationToken cancellationToken)
44 foreach (ProductionSetupFamily family
45 in instance.SupplyChain.ProductionSetupFamilies)
48 period <= instance.PlanningHorizon;
54 .AuxiliaryProductionFamilySetup)
65 $
"wf_f{family.Id}_t{period}",
67 "Shared production-family setup activation.");
71 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 AuxiliaryProductionFamilySetup
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string Period
Period index segment.