1using LotSizingDataModel.Instance.Scientific;
14 _methodCompatibilityService;
24 methodCompatibilityService)
26 _methodCompatibilityService =
27 methodCompatibilityService ??
28 throw new ArgumentNullException(
29 nameof(methodCompatibilityService));
33 ScientificClassificationResult classification,
37 ArgumentNullException.ThrowIfNull(classification);
38 ArgumentNullException.ThrowIfNull(formulationSelection);
44 _methodCompatibilityService.Assess(
52 .Where(candidate => candidate.IsExecutableCandidate)
55 candidate.Method.MethodId,
56 StringComparer.Ordinal)
62 if (classification.IsBlocked)
65 "Scientific classification is blocked.");
76 selectedBackend:
null,
80 if (selectedMethod is
null)
83 "No executable scientific solution method is available.");
94 selectedBackend:
null,
99 selectedMethod.Method.RequiresMilpBackend
103 backend.Supports(selectedMethod.
Method))
115 requestedSolverKind);
118 selectedBackend is
null ||
119 !selectedBackend.Supports(
123 $
"Requested solver backend '{requestedSolverKind}' is " +
124 $
"not scientifically compatible with selected method " +
125 $
"'{selectedMethod.Method.MethodId}'.");
130 formulationSelection,
135 selectedBackend:
null,
142 ?
"Resolution method is fixed scientifically; concrete MILP " +
143 "backend remains delegated to technical availability."
144 : $
"Resolution method and requested backend " +
145 $
"'{requestedSolverKind}' are scientifically compatible.");
150 formulationSelection,
Explicit scientific resolution plan: problem -> formulation -> solution method -> compatible backend ...
ScientificResolutionPlanner()
ScientificResolutionPlanner(ScientificSolutionMethodCompatibilityService methodCompatibilityService)
ScientificResolutionPlan Create(ScientificClassificationResult classification, ScientificFormulationSelectionResult formulationSelection, SolverKind requestedSolverKind)
One scientific solution-method candidate for a classified instance.
ScientificSolutionMethodDefinition Method
static IReadOnlyList< ScientificSolutionMethodDefinition > All
Assesses scientific method-family relevance independently from solver backend availability.
Known native optimization backends in the current Solver abstraction.
static ? ScientificSolverBackendDefinition Find(SolverKind solverKind)
static IReadOnlyList< ScientificSolverBackendDefinition > All
One technical optimization backend. A backend is not a scientific solution method.
SolverKind
Identifies a supported mathematical optimization solver.
ScientificResolutionPlanStatus