pub struct SolverStatistics {Show 15 fields
pub solve_count: u64,
pub success_count: u64,
pub failure_count: u64,
pub total_iterations: u64,
pub retry_count: u64,
pub total_solve_time_seconds: f64,
pub basis_consistency_failures: u64,
pub first_try_successes: u64,
pub basis_offered: u64,
pub load_model_count: u64,
pub total_load_model_time_seconds: f64,
pub total_set_bounds_time_seconds: f64,
pub total_basis_set_time_seconds: f64,
pub basis_reconstructions: u64,
pub retry_level_histogram: Vec<u64>,
}Expand description
Accumulated solve metrics for a single solver instance.
Counters grow monotonically from construction. They are thread-local – each thread owns one solver instance and accumulates its own statistics. Statistics are aggregated across threads via reduction after training completes.
Statistics counters persist across model reloads for the lifetime of the solver instance.
Fields§
§solve_count: u64Total number of solve calls (cold-start and warm-start).
success_count: u64Number of solves that returned Ok (optimal solution found).
failure_count: u64Number of solves that returned Err (terminal failure after retries).
total_iterations: u64Total simplex iterations summed across all solves.
retry_count: u64Total retry attempts summed across all failed solves.
total_solve_time_seconds: f64Cumulative wall-clock time spent in solver calls, in seconds.
basis_consistency_failures: u64Number of warm-start solve(Some(&basis)) calls in which
cobre_highs_set_basis_non_alien rejected the offered basis because
isBasisConsistent returned false.
Incremented once per rejected offer. Replaces two counters removed in v0.5.0
(see CHANGELOG).
first_try_successes: u64Number of solves that returned optimal on the first attempt (before any retry).
Enables first-try rate computation: first_try_rate = first_try_successes / solve_count.
The complement success_count - first_try_successes gives the number of retried solves.
basis_offered: u64Total number of warm-start solve(Some(&basis)) calls (basis offers).
Combined with basis_consistency_failures, enables acceptance-rate computation:
basis_acceptance_rate = 1 - basis_consistency_failures / basis_offered.
load_model_count: u64Total number of load_model calls.
total_load_model_time_seconds: f64Cumulative wall-clock time spent in load_model calls, in seconds.
total_set_bounds_time_seconds: f64Cumulative wall-clock time spent in set_row_bounds and set_col_bounds calls, in seconds.
total_basis_set_time_seconds: f64Cumulative wall-clock time spent in set_basis FFI calls, in seconds.
Accumulated by solve(Some(&basis)) around the basis installation step.
Cold-start solve(None) does not increment this counter.
basis_reconstructions: u64Number of reconstruct_basis invocations with a non-empty stored basis.
Incremented via record_reconstruction_stats. A non-zero value indicates
basis reconstruction is active on this solver instance.
retry_level_histogram: Vec<u64>Per-level retry success histogram. Length depends on the solver backend
(e.g. 12 for HiGHS). retry_level_histogram[k] counts how many solves
were recovered at retry level k. The sum equals
success_count - first_try_successes.
Implementations§
Source§impl SolverStatistics
impl SolverStatistics
Sourcepub fn copy_from(&mut self, src: &SolverStatistics)
pub fn copy_from(&mut self, src: &SolverStatistics)
Overwrite self from src in place, reusing self.retry_level_histogram’s
allocation (resize + copy_from_slice; no allocation when capacity suffices).
All scalar fields are overwritten by value. The histogram Vec<u64> is
resized to src’s length, then overwritten with copy_from_slice. When
self already holds a histogram of the same length (the steady-state case),
no heap allocation occurs. After this call *self equals src.clone()
field-for-field.
Trait Implementations§
Source§impl Clone for SolverStatistics
impl Clone for SolverStatistics
Source§fn clone(&self) -> SolverStatistics
fn clone(&self) -> SolverStatistics
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more