LotSizingDataModel.Instance 2.0.1
Lot-sizing instance representation, descriptors and problem characterization.
Loading...
Searching...
No Matches
LotSizingProblemClassExtensionAnalyzer.cs
Go to the documentation of this file.
1using LotSizingDataModel.Core.DecisionModel.Scheduling;
3
5
6/// <summary>
7/// Identifies modeled extensions outside the six currently executable
8/// canonical lot-sizing core signatures.
9/// </summary>
11{
12 public IReadOnlyList<LotSizingProblemClassExtensionKind> Analyze(
14 {
15 ArgumentNullException.ThrowIfNull(descriptor);
16
17 var extensions =
18 new List<LotSizingProblemClassExtensionKind>();
19
20 Add(
23 extensions);
24
25 Add(
28 extensions);
29
30 Add(
33 extensions);
34
35 Add(
38 extensions);
39
40 Add(
41 descriptor.Setup.HasSetupTimes,
43 extensions);
44
45 Add(
46 descriptor.Setup.HasStartUpCosts,
48 extensions);
49
50 Add(
51 descriptor.Setup.HasStartUpTimes,
53 extensions);
54
55 Add(
56 descriptor.Production.HasLeadTimes,
57 LotSizingProblemClassExtensionKind.ProductionLeadTimes,
58 extensions);
59
60 Add(
63 extensions);
64
65 Add(
68 extensions);
69
70 Add(
73 extensions);
74
75 Add(
77 LotSizingProblemClassExtensionKind.GroupingConstraint,
78 extensions);
79
80 Add(
82 LotSizingProblemClassExtensionKind.AdditionalProductionCapacity,
83 extensions);
84
85 Add(
87 LotSizingProblemClassExtensionKind.AdditionalWarehouseCapacity,
88 extensions);
89
90 Add(
92 LotSizingProblemClassExtensionKind.AdditionalTransportCapacity,
93 extensions);
94
95 Add(
96 descriptor.Procurement.HasPurchasing,
98 extensions);
99
100 Add(
101 descriptor.Capacity.HasSupplierCapacity,
102 LotSizingProblemClassExtensionKind.SupplierCapacity,
103 extensions);
104
105 Add(
107 LotSizingProblemClassExtensionKind.SupplierLeadTime,
108 extensions);
109
110 Add(
113 extensions);
114
115 Add(
117 LotSizingProblemClassExtensionKind.TransportCapacity,
118 extensions);
119
120 Add(
122 LotSizingProblemClassExtensionKind.TransportLeadTime,
123 extensions);
124
125 Add(
128 extensions);
129
130 Add(
132 LotSizingProblemClassExtensionKind.WarehouseCapacity,
133 extensions);
134
135 Add(
136 descriptor.Structure.IsMultiSite,
138 extensions);
139
140 Add(
142 LotSizingProblemClassExtensionKind.FinancialConstraints,
143 extensions);
144
145 Add(
147 LotSizingProblemClassExtensionKind.MultipleObjectives,
148 extensions);
149
150 Add(
152 LotSizingProblemClassExtensionKind.IntegratedScheduling,
153 extensions);
154
155 Add(
157 LotSizingProblemClassExtensionKind.BigBucketScheduling,
158 extensions);
159
160 Add(
162 LotSizingProblemClassExtensionKind.SmallBucketScheduling,
163 extensions);
164
165 Add(
167 LotSizingProblemClassExtensionKind.MacroMicroScheduling,
168 extensions);
169
170 Add(
172 LotSizingProblemClassExtensionKind.InitialSetupState,
173 extensions);
174
175 Add(
176 descriptor.Scheduling.HasSetupCarryOver,
178 extensions);
179
180 Add(
181 descriptor.Scheduling.SetupCarryOverPolicy == SetupCarryOverPolicy.Forbidden,
182 LotSizingProblemClassExtensionKind.SetupCarryOverForbidden,
183 extensions);
184
185 Add(
187 LotSizingProblemClassExtensionKind.MaximumProducedItemCount,
188 extensions);
189
190 Add(
192 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverTimes,
193 extensions);
194
195 Add(
197 LotSizingProblemClassExtensionKind.SequenceDependentChangeoverCosts,
198 extensions);
199
200 Add(
202 LotSizingProblemClassExtensionKind.MaximumSetupCount,
203 extensions);
204
205 return extensions
206 .Distinct()
207 .OrderBy(extension => (int)extension)
208 .ToArray();
209 }
210
211 private static void Add(
212 bool condition,
214 ICollection<LotSizingProblemClassExtensionKind> target)
215 {
216 if (condition)
217 {
218 target.Add(extension);
219 }
220 }
221}
Typed structured description of the factual lot-sizing problem characteristics currently represented ...
Identifies modeled extensions outside the six currently executable canonical lot-sizing core signatur...
IReadOnlyList< LotSizingProblemClassExtensionKind > Analyze(LotSizingProblemDescriptor descriptor)
LotSizingProblemClassExtensionKind
Modeled characteristics outside the canonical core signatures.