pub struct Solution {
pub status: SolveStatus,
pub x: Vec<f64>,
pub dual: DualVariables,
pub objective: f64,
pub residuals: KktResiduals,
pub iterations: usize,
pub solve_time: Duration,
pub final_rho: f64,
pub rho_updates: usize,
pub polished: bool,
pub diagnostics: Option<ConvergenceDiagnostics>,
pub certificate: Option<Certificate>,
}Expand description
Solver result and diagnostics.
Fields§
§status: SolveStatusTermination status.
x: Vec<f64>Primal decision vector.
dual: DualVariablesConstraint multipliers.
objective: f64Objective value at the returned iterate.
residuals: KktResidualsKKT residuals at the returned iterate.
iterations: usizeNumber of completed ADMM iterations.
solve_time: DurationWall-clock time this solve was charged with: setup plus iteration for
Solver::solve, iteration only for
Workspace::solve (setup was paid at
workspace construction).
final_rho: f64Penalty used for the final iteration.
rho_updates: usizeNumber of adaptive penalty changes. Each change needs the matching reduced factorization: one-shot solves rebuild it, workspace solves reuse a cached one when the penalty was already visited.
polished: boolWhether the returned iterate is the polished one: true only when
the status is SolveStatus::Solved, SolverSettings::polish is
enabled, and the direct active-set solve improved the worst KKT
residual (otherwise the ADMM iterate is kept and this stays false).
diagnostics: Option<ConvergenceDiagnostics>Heuristic hints; present only when the status is not Solved.
certificate: Option<Certificate>Infeasibility proof; present only when the status is
SolveStatus::PrimalInfeasible or SolveStatus::DualInfeasible.
Certificates are normalized to unit infinity norm, reported in the
original data space, and independently auditable with
crate::check_primal_certificate /
crate::check_dual_certificate.