use pounce_common::types::{Index, Number};
#[derive(Debug, Default, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IterRecord {
pub iter: Index,
pub objective: Number,
pub inf_pr: Number,
pub inf_du: Number,
pub mu: Number,
pub d_norm: Number,
pub regularization: Number,
pub alpha_dual: Number,
pub alpha_primal: Number,
pub alpha_primal_char: char,
pub ls_trials: Index,
}
#[derive(Debug, Default, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SolveStatistics {
pub iteration_count: Index,
pub total_cpu_time_secs: Number,
pub total_sys_time_secs: Number,
pub total_wallclock_time_secs: Number,
pub num_obj_evals: Index,
pub num_constr_evals: Index,
pub num_obj_grad_evals: Index,
pub num_constr_jac_evals: Index,
pub num_hess_evals: Index,
pub final_objective: Number,
pub final_scaled_objective: Number,
pub final_dual_inf: Number,
pub final_constr_viol: Number,
pub final_compl: Number,
pub final_kkt_error: Number,
pub final_mu: Number,
pub restoration_calls: Index,
pub restoration_inner_iters: Index,
pub restoration_outer_iters: Index,
pub restoration_wall_secs: Number,
pub iterations: Vec<IterRecord>,
}
impl SolveStatistics {
pub fn new() -> Self {
Self::default()
}
}