1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
24 LotSizingInstance instance,
27 ArgumentNullException.ThrowIfNull(instance);
28 ArgumentNullException.ThrowIfNull(options);
31 options.IncludeProductionSetups &&
32 instance.SupplyChain.ProductionCharacteristics.Any(
34 characteristic.StartUpCost is not
null);
38 LotSizingInstance instance,
41 CancellationToken cancellationToken)
43 foreach (ProductionRouting routing
44 in instance.SupplyChain.ProductionRoutings)
47 routing.WorkCenters.Any(
49 instance.SupplyChain.ProductionCharacteristics.Any(
51 characteristic.ItemId == routing.ItemId &&
52 characteristic.WorkCenter.PlantId == reference.PlantId &&
53 characteristic.WorkCenter.WorkCenterId == reference.WorkCenterId &&
54 characteristic.StartUpCost is not
null));
62 period <= instance.PlanningHorizon;
65 cancellationToken.ThrowIfCancellationRequested();
69 $
"productionStartUp_r{routing.Id}_t{period}",
73 "Production start-up occurrence, distinct from setup state.");
77 return ValueTask.CompletedTask;
Provides the shared state required while constructing a solver-independent mathematical model.
Builds canonical mathematical domain keys for production start-up events.
static string CreateStandardKey(int routingId, int period)
Provides the canonical mathematical domain-key categories used to identify lot-sizing decision famili...
const string AuxiliaryProductionStartUp