4using System.Threading.Tasks;
5using LotSizingDataModel.Core.Relationships;
6using LotSizingDataModel.Instance;
17 "productionFamilySetupLink";
20 LotSizingInstance instance,
23 ArgumentNullException.ThrowIfNull(instance);
24 ArgumentNullException.ThrowIfNull(options);
26 return instance.SupplyChain.ProductionSetupFamilies.Count > 0;
30 LotSizingInstance instance,
33 CancellationToken cancellationToken)
35 foreach (ProductionSetupFamily family
36 in instance.SupplyChain.ProductionSetupFamilies)
38 foreach (
int itemId
in family.MemberItemIds.Distinct())
40 ProductionRouting[] routings =
41 instance.SupplyChain.ProductionRoutings
43 routing.ItemId == itemId &&
44 routing.WorkCenters.Any(reference =>
46 family.WorkCenter.PlantId &&
47 reference.WorkCenterId ==
48 family.WorkCenter.WorkCenterId))
51 foreach (ProductionRouting routing
in routings)
54 period <= instance.PlanningHorizon;
68 string familySetupKey =
71 .AuxiliaryProductionFamilySetup)
83 context.GetVariable(itemSetupKey),
87 context.GetVariable(familySetupKey),
92 $
"productionFamilySetupLink_f{family.Id}" +
93 $
"_r{routing.Id}_t{period}",
98 "Item setup implies shared family setup.");
104 return ValueTask.CompletedTask;
Provides a fluent builder for linear expressions.
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.
MathematicalConstraintSense
Identifies the relational sense of a mathematical constraint.