Skip to main content

SolverStatistics

Struct SolverStatistics 

Source
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.

See Solver Interface Trait SS4.3.

Fields§

§solve_count: u64

Total number of solve calls (cold-start and warm-start).

§success_count: u64

Number of solves that returned Ok (optimal solution found).

§failure_count: u64

Number of solves that returned Err (terminal failure after retries).

§total_iterations: u64

Total simplex iterations summed across all solves.

§retry_count: u64

Total retry attempts summed across all failed solves.

§total_solve_time_seconds: f64

Cumulative wall-clock time spent in solver calls, in seconds.

§basis_consistency_failures: u64

Number 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: u64

Number 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: u64

Total 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: u64

Total number of load_model calls.

§total_load_model_time_seconds: f64

Cumulative wall-clock time spent in load_model calls, in seconds.

§total_set_bounds_time_seconds: f64

Cumulative wall-clock time spent in set_row_bounds and set_col_bounds calls, in seconds.

§total_basis_set_time_seconds: f64

Cumulative 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: u64

Number 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

Source

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

Source§

fn clone(&self) -> SolverStatistics

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SolverStatistics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SolverStatistics

Source§

fn default() -> SolverStatistics

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.