15 LotSizingInstance instance,
18 CancellationToken cancellationToken)
20 ProductionSchedulingProfile profile =
21 instance.SupplyChain.WorkCenters
22 .Single(workCenter => workCenter.SchedulingProfile is not
null)
25 foreach (var routing
in instance.SupplyChain.ProductionRoutings)
27 for (
int period = 1; period <= instance.PlanningHorizon; period++)
29 cancellationToken.ThrowIfCancellationRequested();
34 profile, routing, period));
38 if (profile.HasInitialSetupState &&
39 profile.InitialSetupItemId == routing.ItemId)
43 $
"smallBucketSetupStartInitialSame_r{routing.Id}",
52 $
"smallBucketSetupStartInitial_r{routing.Id}",
60 if (profile.SetupCarryOverPolicy == SetupCarryOverPolicy.Forbidden)
64 $
"smallBucketSetupStartReset_r{routing.Id}_t{period}",
72 AddConstraint(context,$
"smallBucketSetupStartLower_r{routing.Id}_t{period}",
75 AddConstraint(context,$
"smallBucketSetupStartUpperState_r{routing.Id}_t{period}",
78 AddConstraint(context,$
"smallBucketSetupStartUpperPrevious_r{routing.Id}_t{period}",
83 return ValueTask.CompletedTask;