22 var wc=instance.SupplyChain.WorkCenters.Single(w=>w.SchedulingProfile is not
null);
23 var profile=wc.SchedulingProfile!;
24 foreach(ProductionRouting routing
in instance.SupplyChain.ProductionRoutings)
26 var reference=routing.WorkCenters.Single();
27 ProductionCharacteristic characteristic=instance.SupplyChain.ProductionCharacteristics.Single(candidate=>candidate.ItemId==routing.ItemId && candidate.WorkCenter.PlantId==reference.PlantId && candidate.WorkCenter.WorkCenterId==reference.WorkCenterId);
28 for(
int period=1;period<=instance.PlanningHorizon;period++)
30 double regular=wc.CapacityConstraint![period];
31 double maxAdditional=wc.AdditionalCapacity?[period]??0.0;
32 double consumption=characteristic.UnitCapacityConsumption![period];
46 if(period>1) state.Subtract(
GetVariable(context,SetupKey(routing.Id,period-1)));
47 else if(profile.HasInitialSetupState && profile.InitialSetupItemId==routing.ItemId) rhs=1.0;
52 return ValueTask.CompletedTask;