15 LotSizingInstance instance,
18 ArgumentNullException.ThrowIfNull(instance);
19 ArgumentNullException.ThrowIfNull(options);
21 return instance.SupplyChain.ProductionCharacteristics.Any(
23 characteristic.StartUpCost is not
null ||
24 characteristic.StartUpTime is not
null);
28 LotSizingInstance instance,
31 CancellationToken cancellationToken)
33 ProductionSchedulingProfile profile =
34 instance.SupplyChain.WorkCenters
35 .Single(workCenter => workCenter.SchedulingProfile is not
null)
38 foreach (ProductionRouting routing
39 in instance.SupplyChain.ProductionRoutings)
42 routing.WorkCenters.Single();
44 ProductionCharacteristic characteristic =
45 instance.SupplyChain.ProductionCharacteristics.Single(
47 candidate.ItemId == routing.ItemId &&
48 candidate.WorkCenter.PlantId == reference.PlantId &&
49 candidate.WorkCenter.WorkCenterId == reference.WorkCenterId);
51 if (characteristic.StartUpCost is
null &&
52 characteristic.StartUpTime is
null)
58 period <= instance.PlanningHorizon;
61 cancellationToken.ThrowIfCancellationRequested();
65 $
"smallBucketStartUp_r{routing.Id}_t{period}",
70 "Small-bucket production start-up occurrence.");
74 return ValueTask.CompletedTask;