LotSizingDataModel.Instance 2.0.1
Lot-sizing instance representation, descriptors and problem characterization.
Loading...
Searching...
No Matches
LotSizingProblemClassCatalog.cs
Go to the documentation of this file.
2
4
5/// <summary>
6/// Canonical lot-sizing problem-class catalog.
7/// </summary>
8/// <remarks>
9/// Codes are intentionally more explicit than historically ambiguous
10/// acronyms such as CLSP or ULSP.
11/// </remarks>
13{
16 Executable(
19 "SI-ULS",
20 "Single-item uncapacitated lot-sizing problem",
21 "1,SL,Net:UNK | Dem,Det,Prod,Uncap:P,SC | Obj:?",
22 aliases:
23 new[]
24 {
25 "SI-ULSP",
26 "ULS",
27 "ULSP"
28 },
29 note:
30 "Canonical LSDM code disambiguates the item cardinality.");
31
32 public static LotSizingProblemClassDefinition
34 Executable(
37 "SI-CLSP",
38 "Single-item capacitated lot-sizing problem",
39 "1,SL,Net:UNK | Dem,Det,Prod,Cap:P,SC | Obj:?",
40 aliases:
41 new[]
42 {
43 "CSILSP",
44 "CLSP-SI",
45 "CLSP"
46 });
47
48 public static LotSizingProblemClassDefinition
50 Executable(
53 "MI-ULS",
54 "Multi-item uncapacitated single-level lot-sizing problem",
55 "m,SL,Net:UNK | Dem,Det,Prod,Uncap:P,SC | Obj:?",
56 aliases:
57 new[]
58 {
59 "MI-ULSP",
60 "ULS",
61 "ULSP"
62 },
63 note:
64 "Without coupling constraints this class decomposes by item.");
65
66 public static LotSizingProblemClassDefinition
68 Executable(
71 "MI-CLSP",
72 "Multi-item capacitated single-level lot-sizing problem",
73 "m,SL,Net:UNK | Dem,Det,Prod,Cap:P,Cap:Shared,SC | Obj:?",
74 aliases:
75 new[]
76 {
77 "MCLSP",
78 "CLSP-MI",
79 "CLSP"
80 },
81 note:
82 "The canonical multi-item class requires shared production capacity.");
83
84 public static LotSizingProblemClassDefinition
86 Executable(
89 "UMLSP",
90 "Uncapacitated multi-level lot-sizing problem",
91 "m,ML:?,Net:UNK | Dem,Det,Prod,Uncap:P,SC | Obj:?",
92 aliases:
93 new[]
94 {
95 "MLLP",
96 "MLLS",
97 "UMLSP"
98 },
99 note:
100 "MLLP is retained as an alias used in the project/literature corpus.");
101
102 public static LotSizingProblemClassDefinition
104 Executable(
107 "MLCLSP",
108 "Multi-level capacitated lot-sizing problem",
109 "m,ML:?,Net:UNK | Dem,Det,Prod,Cap:P,SC | Obj:?",
110 aliases:
111 new[]
112 {
113 "CMLLS",
114 "MLLS",
115 "MLCLSP"
116 });
117
118 public static LotSizingProblemClassDefinition
119 Dlsp { get; } =
120 Executable(
123 "DLSP",
124 "Discrete lot-sizing and scheduling problem",
125 "m,SL,Net:UNK | Dem,Det,Prod,Cap:P,Cap:Shared,Sched," +
126 "Bucket:SB,SchedRes:1,SBProd:0F,BucketItems:1 | Obj:?",
127 note:
128 "Single-resource small-bucket class with at most one " +
129 "produced item per bucket and all-or-nothing production.");
130
132 Cslp { get; } =
133 Executable(
136 "CSLP",
137 "Continuous setup lot-sizing problem",
138 "m,SL,Net:UNK | Dem,Det,Prod,Cap:P,Cap:Shared,Sched," +
139 "Bucket:SB,SchedRes:1,SBProd:Cont,BucketItems:1 | Obj:?",
140 note:
141 "Single-resource small-bucket class with at most one " +
142 "produced item per bucket and continuous lot quantity.");
143
145 Plsp { get; } =
146 Executable(
149 "PLSP",
150 "Proportional lot-sizing and scheduling problem",
151 "m,SL,Net:UNK | Dem,Det,Prod,Cap:P,Cap:Shared,Sched," +
152 "Bucket:SB,MaxSetup,SchedRes:1,SBProd:Cont," +
153 "BucketItems:2,SetupTrans:1 | Obj:?",
154 note:
155 "Single-resource PLSP with one setup-state carry-over, " +
156 "continuous production of at most two items, and at most " +
157 "one setup transition per bucket.");
158
160 Glsp { get; } =
161 Executable(
164 "GLSP",
165 "General lot-sizing and scheduling problem",
166 "m,SL,Net:UNK | Dem,Det,Prod,Cap:P,Cap:Shared,Sched," +
167 "Bucket:MM,SchedRes:1,MicroGrid,MicroLen:Var," +
168 "MicroItem:1 | Obj:?",
169 note:
170 "Single-resource two-level macro/micro scheduling class " +
171 "with a predefined micro-period grid, variable micro-period " +
172 "lengths and one item/setup state per micro-period.");
173
174 public static IReadOnlyList<LotSizingProblemClassDefinition>
189
190 public static IReadOnlyList<LotSizingProblemClassDefinition>
192 All
193 .Where(
194 definition =>
195 definition.SupportLevel ==
197 .ToArray();
198
199 public static IReadOnlyList<LotSizingProblemClassDefinition>
201 All
202 .Where(
203 definition =>
204 definition.SupportLevel ==
206 .ToArray();
207
208 public static IReadOnlyList<LotSizingProblemClassDefinition>
210 All
211 .Where(
212 definition =>
213 definition.SupportLevel !=
215 .ToArray();
216
217 public static IReadOnlyList<LotSizingProblemClassDefinition>
219 new[]
220 {
221 Dlsp,
222 Cslp,
223 Plsp,
224 Glsp
225 };
226
229 All.FirstOrDefault(
230 definition =>
231 definition.Id == id);
232
234 string code)
235 {
236 if (string.IsNullOrWhiteSpace(code))
237 {
238 return null;
239 }
240
241 return All.FirstOrDefault(
242 definition =>
243 definition.Code.Equals(
244 code.Trim(),
245 StringComparison.OrdinalIgnoreCase));
246 }
247
248 private static LotSizingProblemClassDefinition Executable(
250 string code,
251 string name,
252 string specification,
253 IEnumerable<string>? aliases = null,
254 string? note = null) =>
255 new(
256 id,
257 code,
258 name,
260 aliases,
262 scientificNote: note);
263
264 private static LotSizingProblemClassDefinition Classifiable(
266 string code,
267 string name,
268 string? note = null) =>
269 new(
270 id,
271 code,
272 name,
274 aliases:
275 new[]
276 {
277 code
278 },
279 scientificNote:
280 note);
281
282 private static LotSizingProblemClassDefinition CatalogOnly(
284 string code,
285 string name,
286 IEnumerable<string> gaps,
287 string? note = null) =>
288 new(
289 id,
290 code,
291 name,
293 aliases: new[] { code },
294 capabilityGaps: gaps,
295 scientificNote: note);
296}
Represents a universal notation interpreted as a problem specification.
static UniversalProblemSpecification Parse(string text, string? schemeVersion=null)
static IReadOnlyList< LotSizingProblemClassDefinition > SchedulingDetectableClasses
static IReadOnlyList< LotSizingProblemClassDefinition > ClassifiableClasses
static ? LotSizingProblemClassDefinition FindById(CanonicalLotSizingProblemClassId id)
static IReadOnlyList< LotSizingProblemClassDefinition > DetectableClasses
static IReadOnlyList< LotSizingProblemClassDefinition > ExecutableClasses
LotSizingProblemClassSupportLevel
Implementation support of one scientifically catalogued problem class.
CanonicalLotSizingProblemClassId
Stable canonical LotSizingDataModel identifiers for problem classes.