ULSAlgorithms 1.1.0-g3e5595996d
High-performance exact and heuristic algorithms for uncapacitated lot sizing
Loading...
Searching...
No Matches
LinearModelSolveResult.cs
Go to the documentation of this file.
2
3/// <summary>
4/// Result of executing a solver-independent linear or mixed-integer model.
5/// </summary>
6public sealed class LinearModelSolveResult
7{
8 private readonly IReadOnlyDictionary<int, double> _variableValues;
9 private readonly string[] _diagnostics;
10
11 /// <summary>Initializes an execution result.</summary>
13 string modelName,
15 SolverExecutionInfo? solver,
16 IReadOnlyDictionary<int, double>? variableValues,
18 TimeSpan solveDuration,
19 string nativeStatus,
20 IEnumerable<string>? diagnostics = null,
21 string artifactDirectory = "")
22 {
23 ModelName = modelName ?? string.Empty;
24 Status = status;
25 SolverReportedStatus = status;
26 Solver = solver;
27 _variableValues =
28 variableValues is null
29 ? new Dictionary<int, double>()
30 : new Dictionary<int, double>(variableValues);
31 Validation = validation;
32 SolveDuration = solveDuration;
33 NativeStatus = nativeStatus ?? string.Empty;
34 _diagnostics =
35 diagnostics?.ToArray() ??
36 [];
37 ArtifactDirectory = artifactDirectory ?? string.Empty;
38 }
39
40 /// <summary>Gets the submitted model name.</summary>
41 public string ModelName { get; }
42
43 /// <summary>Gets the normalized solve status after independent validation.</summary>
45
46 /// <summary>
47 /// Gets the status reported by the optimization engine before independent
48 /// portable-model validation can downgrade a rejected candidate.
49 /// </summary>
50 public LinearModelSolveStatus SolverReportedStatus { get; internal init; }
51
52 /// <summary>Gets selected-solver provenance, when a solver was selected.</summary>
53 public SolverExecutionInfo? Solver { get; }
54
55 /// <summary>Gets variable values keyed by portable variable id.</summary>
56 public IReadOnlyDictionary<int, double> VariableValues =>
57 _variableValues;
58
59 /// <summary>Gets the independent validation result, when a solution exists.</summary>
61
62 /// <summary>Gets the independently recomputed objective value.</summary>
63 public double? ObjectiveValue =>
64 Validation?.ObjectiveValue;
65
66 /// <summary>Gets elapsed solver execution time.</summary>
67 public TimeSpan SolveDuration { get; }
68
69 /// <summary>Gets the provider-native status/log summary.</summary>
70 public string NativeStatus { get; }
71
72 /// <summary>Gets execution and validation diagnostics.</summary>
73 public IReadOnlyList<string> Diagnostics => _diagnostics;
74
75 /// <summary>
76 /// Gets the retained temporary artifact directory when
77 /// KeepTemporaryFiles was enabled.
78 /// </summary>
79 public string ArtifactDirectory { get; }
80
81 /// <summary>Gets whether the result contains an independently valid solution.</summary>
82 public bool HasFeasibleSolution =>
83 Validation?.IsFeasible == true &&
84 Status is
87}
88
Independent solver-agnostic validation of a returned variable assignment.
SolverExecutionInfo? Solver
Gets selected-solver provenance, when a solver was selected.
LinearModelSolveResult(string modelName, LinearModelSolveStatus status, SolverExecutionInfo? solver, IReadOnlyDictionary< int, double >? variableValues, LinearModelSolutionValidation? validation, TimeSpan solveDuration, string nativeStatus, IEnumerable< string >? diagnostics=null, string artifactDirectory="")
Initializes an execution result.
LinearModelSolutionValidation? Validation
Gets the independent validation result, when a solution exists.
bool HasFeasibleSolution
Gets whether the result contains an independently valid solution.
TimeSpan SolveDuration
Gets elapsed solver execution time.
string NativeStatus
Gets the provider-native status/log summary.
string ArtifactDirectory
Gets the retained temporary artifact directory when KeepTemporaryFiles was enabled.
IReadOnlyList< string > Diagnostics
Gets execution and validation diagnostics.
IReadOnlyDictionary< int, double > VariableValues
Gets variable values keyed by portable variable id.
LinearModelSolveStatus SolverReportedStatus
Gets the status reported by the optimization engine before independent portable-model validation can ...
LinearModelSolveStatus Status
Gets the normalized solve status after independent validation.
double? ObjectiveValue
Gets the independently recomputed objective value.
Serializable-style immutable snapshot of the solver selected for one solver-backed ULS execution.
LinearModelSolveStatus
Describes the termination state of a solver-backed portable linear model.