11 private static readonly LotSizingProblemClassExtensionKind[]
12 SmallBucketKnownUnsupportedExtensions =
15 LotSizingProblemClassExtensionKind.ProductionLeadTimes,
16 LotSizingProblemClassExtensionKind.MinimumLotSize,
17 LotSizingProblemClassExtensionKind.MaximumLotSize,
18 LotSizingProblemClassExtensionKind.LotSizeMultiple,
19 LotSizingProblemClassExtensionKind.MultiSite,
20 LotSizingProblemClassExtensionKind.MultipleObjectives,
21 LotSizingProblemClassExtensionKind.BigBucketScheduling,
22 LotSizingProblemClassExtensionKind.MacroMicroScheduling,
23 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverTimes,
24 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverCosts
33 "Standard solver-independent MILP",
34 supportedProblemClasses:
37 CanonicalLotSizingProblemClassId
38 .SingleItemUncapacitatedLotSizing,
39 CanonicalLotSizingProblemClassId
40 .SingleItemCapacitatedLotSizing,
41 CanonicalLotSizingProblemClassId
42 .MultiItemUncapacitatedLotSizing,
43 CanonicalLotSizingProblemClassId
44 .MultiItemCapacitatedLotSizing,
45 CanonicalLotSizingProblemClassId
46 .UncapacitatedMultiLevelLotSizing,
47 CanonicalLotSizingProblemClassId
48 .MultiLevelCapacitatedLotSizing
53 LotSizingProblemClassExtensionKind.InitialInventory,
54 LotSizingProblemClassExtensionKind.StartUpCosts,
55 LotSizingProblemClassExtensionKind.SafetyStock,
56 LotSizingProblemClassExtensionKind.Backlogging,
57 LotSizingProblemClassExtensionKind.SetupTimes,
58 LotSizingProblemClassExtensionKind.ProductionLeadTimes,
59 LotSizingProblemClassExtensionKind.MinimumLotSize,
60 LotSizingProblemClassExtensionKind.MaximumLotSize,
61 LotSizingProblemClassExtensionKind.LotSizeMultiple,
62 LotSizingProblemClassExtensionKind
63 .AdditionalProductionCapacity,
64 LotSizingProblemClassExtensionKind
65 .AdditionalWarehouseCapacity,
66 LotSizingProblemClassExtensionKind
67 .AdditionalTransportCapacity,
68 LotSizingProblemClassExtensionKind.Purchasing,
69 LotSizingProblemClassExtensionKind.SupplierCapacity,
70 LotSizingProblemClassExtensionKind.SupplierLeadTime,
71 LotSizingProblemClassExtensionKind.Transportation,
72 LotSizingProblemClassExtensionKind.TransportCapacity,
73 LotSizingProblemClassExtensionKind.TransportLeadTime,
74 LotSizingProblemClassExtensionKind.Distribution,
75 LotSizingProblemClassExtensionKind.WarehouseCapacity,
76 LotSizingProblemClassExtensionKind.MultiSite,
77 LotSizingProblemClassExtensionKind.FinancialConstraints,
78 LotSizingProblemClassExtensionKind.GroupingConstraint
80 knownUnsupportedExtensions:
83 LotSizingProblemClassExtensionKind.StartUpTimes,
84 LotSizingProblemClassExtensionKind.MultipleObjectives,
85 LotSizingProblemClassExtensionKind.IntegratedScheduling,
86 LotSizingProblemClassExtensionKind.BigBucketScheduling,
87 LotSizingProblemClassExtensionKind.SmallBucketScheduling,
88 LotSizingProblemClassExtensionKind.MacroMicroScheduling,
89 LotSizingProblemClassExtensionKind.InitialSetupState,
90 LotSizingProblemClassExtensionKind.SetupCarryOver,
91 LotSizingProblemClassExtensionKind
92 .SequenceDependentChangeoverTimes,
93 LotSizingProblemClassExtensionKind
94 .SequenceDependentChangeoverCosts,
95 LotSizingProblemClassExtensionKind.MaximumSetupCount
97 supportedObjectiveKinds:
100 OptimizationObjectiveKind.Economic
105 "StandardLotSizingFormulationFactory variable/objective/" +
106 "constraint builder registry",
107 "InventoryBalanceConstraintFamilyBuilder lead-time and " +
108 "initial-inventory semantics",
109 "WorkCenterCapacityConstraintFamilyBuilder setup-time " +
111 "SafetyStockConstraintFamilyBuilder",
112 "BacklogVariableFamilyBuilder",
113 "MinimumLotSizeConstraintFamilyBuilder",
114 "MaximumLotSizeConstraintFamilyBuilder",
115 "LotSizeMultipleConstraintFamilyBuilder",
116 "ProcurementVariableFamilyBuilder",
117 "SupplierCapacityConstraintFamilyBuilder",
118 "TransportVariableFamilyBuilder",
119 "WarehouseCapacityConstraintFamilyBuilder",
120 "PeriodicOperatingExpenditureBudgetConstraintFamilyBuilder",
121 "ProductionStartUpVariableFamilyBuilder",
122 "ProductionStartUpDefinitionConstraintFamilyBuilder",
123 "ProductionStartUpCostObjectiveTermBuilder"
126 public static MathematicalFormulationScientificProfile
132 "Executable single-resource DLSP small-bucket MILP",
133 supportedProblemClasses:
136 CanonicalLotSizingProblemClassId
137 .DiscreteLotSizingAndScheduling
142 LotSizingProblemClassExtensionKind.InitialInventory,
143 LotSizingProblemClassExtensionKind.StartUpCosts,
144 LotSizingProblemClassExtensionKind.SafetyStock,
145 LotSizingProblemClassExtensionKind.Backlogging,
146 LotSizingProblemClassExtensionKind
147 .AdditionalWarehouseCapacity,
148 LotSizingProblemClassExtensionKind
149 .AdditionalTransportCapacity,
150 LotSizingProblemClassExtensionKind.Purchasing,
151 LotSizingProblemClassExtensionKind.SupplierCapacity,
152 LotSizingProblemClassExtensionKind.SupplierLeadTime,
153 LotSizingProblemClassExtensionKind.Transportation,
154 LotSizingProblemClassExtensionKind.TransportCapacity,
155 LotSizingProblemClassExtensionKind.TransportLeadTime,
156 LotSizingProblemClassExtensionKind.Distribution,
157 LotSizingProblemClassExtensionKind.WarehouseCapacity,
158 LotSizingProblemClassExtensionKind.FinancialConstraints,
159 LotSizingProblemClassExtensionKind.SetupCarryOver,
160 LotSizingProblemClassExtensionKind.InitialSetupState,
161 LotSizingProblemClassExtensionKind.MaximumSetupCount,
162 LotSizingProblemClassExtensionKind.GroupingConstraint,
163 LotSizingProblemClassExtensionKind.SetupCarryOverForbidden
165 knownUnsupportedExtensions:
166 SmallBucketKnownUnsupportedExtensions
169 LotSizingProblemClassExtensionKind.StartUpTimes,
170 LotSizingProblemClassExtensionKind.SetupTimes,
171 LotSizingProblemClassExtensionKind.AdditionalProductionCapacity
174 supportedObjectiveKinds:
177 OptimizationObjectiveKind.Economic
182 "SmallBucketSetupStateVariableFamilyBuilder",
183 "SmallBucketProductionActivationVariableFamilyBuilder",
184 "SmallBucketSetupStartVariableFamilyBuilder",
185 "SmallBucketSingleSetupStateConstraintFamilyBuilder",
186 "SmallBucketSetupStartDefinitionConstraintFamilyBuilder",
187 "SmallBucketSchedulingCapacityConstraintFamilyBuilder",
188 "SmallBucketSetupCountConstraintFamilyBuilder",
189 "SmallBucketGroupingConstraintFamilyBuilder",
190 "SmallBucketProductionStateConstraintFamilyBuilder",
191 "SmallBucketProducedItemCountConstraintFamilyBuilder",
192 "SmallBucketSetupStartCostObjectiveTermBuilder",
193 "SmallBucketStartUpVariableFamilyBuilder",
194 "SmallBucketStartUpDefinitionConstraintFamilyBuilder",
195 "SmallBucketStartUpCostObjectiveTermBuilder"
198 public static MathematicalFormulationScientificProfile
204 "Executable single-resource CSLP small-bucket MILP",
205 supportedProblemClasses:
208 CanonicalLotSizingProblemClassId
209 .ContinuousSetupLotSizing
214 LotSizingProblemClassExtensionKind.InitialInventory,
215 LotSizingProblemClassExtensionKind.StartUpCosts,
216 LotSizingProblemClassExtensionKind.StartUpTimes,
217 LotSizingProblemClassExtensionKind.SafetyStock,
218 LotSizingProblemClassExtensionKind.Backlogging,
219 LotSizingProblemClassExtensionKind
220 .AdditionalWarehouseCapacity,
221 LotSizingProblemClassExtensionKind
222 .AdditionalTransportCapacity,
223 LotSizingProblemClassExtensionKind.Purchasing,
224 LotSizingProblemClassExtensionKind.SupplierCapacity,
225 LotSizingProblemClassExtensionKind.SupplierLeadTime,
226 LotSizingProblemClassExtensionKind.Transportation,
227 LotSizingProblemClassExtensionKind.TransportCapacity,
228 LotSizingProblemClassExtensionKind.TransportLeadTime,
229 LotSizingProblemClassExtensionKind.Distribution,
230 LotSizingProblemClassExtensionKind.WarehouseCapacity,
231 LotSizingProblemClassExtensionKind.FinancialConstraints,
232 LotSizingProblemClassExtensionKind.SetupCarryOver,
233 LotSizingProblemClassExtensionKind.SetupTimes,
234 LotSizingProblemClassExtensionKind.AdditionalProductionCapacity,
235 LotSizingProblemClassExtensionKind.InitialSetupState,
236 LotSizingProblemClassExtensionKind.MaximumSetupCount,
237 LotSizingProblemClassExtensionKind.GroupingConstraint,
238 LotSizingProblemClassExtensionKind.SetupCarryOverForbidden
240 knownUnsupportedExtensions:
241 SmallBucketKnownUnsupportedExtensions,
242 supportedObjectiveKinds:
245 OptimizationObjectiveKind.Economic
250 "SmallBucketSetupStateVariableFamilyBuilder",
251 "SmallBucketSetupStartVariableFamilyBuilder",
252 "SmallBucketSingleSetupStateConstraintFamilyBuilder",
253 "SmallBucketSetupStartDefinitionConstraintFamilyBuilder",
254 "SmallBucketSchedulingCapacityConstraintFamilyBuilder",
255 "SmallBucketSetupCountConstraintFamilyBuilder",
256 "SmallBucketGroupingConstraintFamilyBuilder",
257 "SmallBucketProductionStateConstraintFamilyBuilder",
258 "SmallBucketProducedItemCountConstraintFamilyBuilder",
259 "SmallBucketSetupStartCostObjectiveTermBuilder",
260 "SmallBucketStartUpVariableFamilyBuilder",
261 "SmallBucketStartUpDefinitionConstraintFamilyBuilder",
262 "SmallBucketStartUpCostObjectiveTermBuilder"
265 public static MathematicalFormulationScientificProfile
271 "Executable single-resource PLSP small-bucket MILP",
272 supportedProblemClasses:
275 CanonicalLotSizingProblemClassId
276 .ProportionalLotSizingAndScheduling
281 LotSizingProblemClassExtensionKind.InitialInventory,
282 LotSizingProblemClassExtensionKind.StartUpCosts,
283 LotSizingProblemClassExtensionKind.StartUpTimes,
284 LotSizingProblemClassExtensionKind.SafetyStock,
285 LotSizingProblemClassExtensionKind.Backlogging,
286 LotSizingProblemClassExtensionKind
287 .AdditionalWarehouseCapacity,
288 LotSizingProblemClassExtensionKind
289 .AdditionalTransportCapacity,
290 LotSizingProblemClassExtensionKind.Purchasing,
291 LotSizingProblemClassExtensionKind.SupplierCapacity,
292 LotSizingProblemClassExtensionKind.SupplierLeadTime,
293 LotSizingProblemClassExtensionKind.Transportation,
294 LotSizingProblemClassExtensionKind.TransportCapacity,
295 LotSizingProblemClassExtensionKind.TransportLeadTime,
296 LotSizingProblemClassExtensionKind.Distribution,
297 LotSizingProblemClassExtensionKind.WarehouseCapacity,
298 LotSizingProblemClassExtensionKind.FinancialConstraints,
299 LotSizingProblemClassExtensionKind.SetupCarryOver,
300 LotSizingProblemClassExtensionKind.SetupTimes,
301 LotSizingProblemClassExtensionKind.AdditionalProductionCapacity,
302 LotSizingProblemClassExtensionKind.InitialSetupState,
303 LotSizingProblemClassExtensionKind.GroupingConstraint
305 knownUnsupportedExtensions:
306 SmallBucketKnownUnsupportedExtensions
309 LotSizingProblemClassExtensionKind.SetupCarryOverForbidden
312 supportedObjectiveKinds:
315 OptimizationObjectiveKind.Economic
320 "SmallBucketSetupStateVariableFamilyBuilder",
321 "SmallBucketProductionActivationVariableFamilyBuilder",
322 "SmallBucketSetupStartVariableFamilyBuilder",
323 "PlspSingleSetupStateConstraintFamilyBuilder",
324 "SmallBucketSetupStartDefinitionConstraintFamilyBuilder",
325 "SmallBucketSchedulingCapacityConstraintFamilyBuilder",
326 "SmallBucketSetupCountConstraintFamilyBuilder",
327 "SmallBucketGroupingConstraintFamilyBuilder",
328 "SmallBucketProductionStateConstraintFamilyBuilder",
329 "SmallBucketProducedItemCountConstraintFamilyBuilder",
330 "PlspSetupTransitionLimitConstraintFamilyBuilder",
331 "SmallBucketSetupStartCostObjectiveTermBuilder",
332 "SmallBucketStartUpVariableFamilyBuilder",
333 "SmallBucketStartUpDefinitionConstraintFamilyBuilder",
334 "SmallBucketStartUpCostObjectiveTermBuilder"
337 public static MathematicalFormulationScientificProfile
343 "Executable single-resource GLSP macro/micro MILP",
344 supportedProblemClasses:
347 CanonicalLotSizingProblemClassId
348 .GeneralLotSizingAndScheduling
353 LotSizingProblemClassExtensionKind.InitialInventory,
354 LotSizingProblemClassExtensionKind.SafetyStock,
355 LotSizingProblemClassExtensionKind.Backlogging,
356 LotSizingProblemClassExtensionKind.AdditionalWarehouseCapacity,
357 LotSizingProblemClassExtensionKind.AdditionalTransportCapacity,
358 LotSizingProblemClassExtensionKind.Purchasing,
359 LotSizingProblemClassExtensionKind.SupplierCapacity,
360 LotSizingProblemClassExtensionKind.SupplierLeadTime,
361 LotSizingProblemClassExtensionKind.Transportation,
362 LotSizingProblemClassExtensionKind.TransportCapacity,
363 LotSizingProblemClassExtensionKind.TransportLeadTime,
364 LotSizingProblemClassExtensionKind.Distribution,
365 LotSizingProblemClassExtensionKind.WarehouseCapacity,
366 LotSizingProblemClassExtensionKind.ProductionLeadTimes,
367 LotSizingProblemClassExtensionKind.SetupCarryOver,
368 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverTimes,
369 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverCosts,
370 LotSizingProblemClassExtensionKind.SetupTimes,
371 LotSizingProblemClassExtensionKind.AdditionalProductionCapacity,
372 LotSizingProblemClassExtensionKind.InitialSetupState,
373 LotSizingProblemClassExtensionKind.MaximumSetupCount,
374 LotSizingProblemClassExtensionKind.MaximumProducedItemCount,
375 LotSizingProblemClassExtensionKind.GroupingConstraint,
376 LotSizingProblemClassExtensionKind.SetupCarryOverForbidden
378 knownUnsupportedExtensions:
382 LotSizingProblemClassExtensionKind.StartUpCosts,
383 LotSizingProblemClassExtensionKind.StartUpTimes,
384 LotSizingProblemClassExtensionKind.MinimumLotSize,
385 LotSizingProblemClassExtensionKind.MaximumLotSize,
386 LotSizingProblemClassExtensionKind.LotSizeMultiple,
388 LotSizingProblemClassExtensionKind.MultiSite,
389 LotSizingProblemClassExtensionKind.MultipleObjectives,
390 LotSizingProblemClassExtensionKind.FinancialConstraints,
391 LotSizingProblemClassExtensionKind.BigBucketScheduling,
392 LotSizingProblemClassExtensionKind.SmallBucketScheduling,
395 supportedObjectiveKinds:
398 OptimizationObjectiveKind.Economic
403 "GlspMicroProductionVariableFamilyBuilder",
404 "GlspMicroSetupStateVariableFamilyBuilder",
405 "GlspChangeoverVariableFamilyBuilder",
406 "GlspAggregateProductionConstraintFamilyBuilder",
407 "GlspSingleSetupStateConstraintFamilyBuilder",
408 "GlspMicroProductionLinkConstraintFamilyBuilder",
409 "GlspChangeoverDefinitionConstraintFamilyBuilder",
410 "GlspSetupStartVariableFamilyBuilder",
411 "GlspSetupStartDefinitionConstraintFamilyBuilder",
412 "GlspSetupStartCostObjectiveTermBuilder",
413 "GlspStartUpVariableFamilyBuilder",
414 "GlspStartUpDefinitionConstraintFamilyBuilder",
415 "GlspStartUpCostObjectiveTermBuilder",
416 "GlspSetupCountConstraintFamilyBuilder",
417 "GlspGroupingConstraintFamilyBuilder",
418 "GlspProducedItemCountConstraintFamilyBuilder",
419 "GlspMacroCapacityConstraintFamilyBuilder",
420 "GlspChangeoverCostObjectiveTermBuilder",
421 "GlspMicroPeriodSetupStateDecisionMapper",
422 "MathematicalSolutionValueProjector"
425 public static IReadOnlyList<MathematicalFormulationScientificProfile>
437 string formulationId,
443 candidate.FormulationId.Equals(
444 formulationId?.Trim(),
445 StringComparison.OrdinalIgnoreCase));
447 return profile is not
null;
451 string formulationId)
453 TryGet(formulationId, out var profile);