1using LotSizingDataModel.Core.DecisionModel.Scheduling;
2using LotSizingDataModel.Core.Relationships;
3using LotSizingDataModel.Instance;
17 "smallBucketProductionStartUpDefinition";
20 LotSizingInstance instance,
23 ArgumentNullException.ThrowIfNull(instance);
24 ArgumentNullException.ThrowIfNull(options);
26 return instance.SupplyChain.ProductionCharacteristics.Any(
28 characteristic.StartUpCost is not
null ||
29 characteristic.StartUpTime is not
null);
33 LotSizingInstance instance,
36 CancellationToken cancellationToken)
38 ProductionSchedulingProfile profile =
39 instance.SupplyChain.WorkCenters
40 .Single(workCenter => workCenter.SchedulingProfile is not
null)
43 foreach (ProductionRouting routing
44 in instance.SupplyChain.ProductionRoutings)
47 routing.WorkCenters.Single();
49 ProductionCharacteristic characteristic =
50 instance.SupplyChain.ProductionCharacteristics.Single(
52 candidate.ItemId == routing.ItemId &&
53 candidate.WorkCenter.PlantId == reference.PlantId &&
54 candidate.WorkCenter.WorkCenterId == reference.WorkCenterId);
56 if (characteristic.StartUpCost is
null &&
57 characteristic.StartUpTime is
null)
63 period <= instance.PlanningHorizon;
66 cancellationToken.ThrowIfCancellationRequested();
86 $
"smallBucketProductionStartUpDefinition_r{routing.Id}_t{period}",
96 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 CreateSmallBucketKey(ProductionSchedulingProfile profile, ProductionRouting routing, int period)
static string CreateSetupStartKey(ProductionSchedulingProfile profile, ProductionRouting routing, int period)
Represents one decision variable in a mathematical optimization model.
MathematicalConstraintSense
Identifies the relational sense of a mathematical constraint.