15 IEnumerable<CanonicalLotSizingProblemClassId>
16 applicableProblemClasses,
17 bool requiresMathematicalFormulation,
18 bool requiresMilpBackend,
19 IEnumerable<string>? evidence =
null,
22 if (
string.IsNullOrWhiteSpace(methodId))
24 throw new ArgumentException(
25 "A solution-method identifier is required.",
29 if (
string.IsNullOrWhiteSpace(name))
31 throw new ArgumentException(
32 "A solution-method name is required.",
36 ArgumentNullException.ThrowIfNull(applicableProblemClasses);
43 requiresMathematicalFormulation;
48 applicableProblemClasses
50 .OrderBy(value => (
int)value)
54 (evidence ?? Array.Empty<
string>())
55 .Where(value => !
string.IsNullOrWhiteSpace(value))
56 .Select(value => value.Trim())
57 .Distinct(StringComparer.Ordinal)
60 Note = note ??
string.Empty;