1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
11 "glspProductionStartUp";
14 LotSizingInstance instance,
17 ArgumentNullException.ThrowIfNull(instance);
18 ArgumentNullException.ThrowIfNull(options);
20 return instance.SupplyChain.ProductionCharacteristics.Any(
22 characteristic.StartUpCost is not
null ||
23 characteristic.StartUpTime is not
null);
27 LotSizingInstance instance,
30 CancellationToken cancellationToken)
32 var (plantId, workCenter, profile) =
35 IReadOnlyList<ProductionRouting> routings =
42 profile.EnumerateMicroPeriods().ToArray();
45 index < ordered.Length;
60 foreach (ProductionRouting routing
63 ProductionCharacteristic characteristic =
70 if (characteristic.StartUpCost is
null &&
71 characteristic.StartUpTime is
null)
78 $
"glspStartUp_r{routing.Id}_t{ordered[index].MacroPeriod}_s{ordered[index].MicroPeriodIndex}",
87 "GLSP production start-up occurrence.");
91 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 CreateGlspKey(int plantId, int workCenterId, int routingId, int itemId, ProductionMicroPeriodReference microPeriod, int fixedPredecessorItemId, bool resetBoundary)