1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
14 "productionStartUpCost";
17 LotSizingInstance instance,
20 ArgumentNullException.ThrowIfNull(instance);
21 ArgumentNullException.ThrowIfNull(options);
24 options.IncludeProductionSetups &&
25 instance.SupplyChain.ProductionCharacteristics.Any(
27 characteristic.StartUpCost is not
null);
31 LotSizingInstance instance,
35 CancellationToken cancellationToken)
37 foreach (ProductionRouting routing
38 in instance.SupplyChain.ProductionRoutings)
41 period <= instance.PlanningHorizon;
44 cancellationToken.ThrowIfCancellationRequested();
47 routing.WorkCenters.Sum(
49 instance.SupplyChain.ProductionCharacteristics
52 characteristic.ItemId == routing.ItemId &&
53 characteristic.WorkCenter.PlantId == reference.PlantId &&
54 characteristic.WorkCenter.WorkCenterId == reference.WorkCenterId)
57 characteristic.StartUpCost?[period] ?? 0.0)
75 return ValueTask.CompletedTask;
Provides a fluent builder for linear expressions.
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)