pub struct MipStats {Show 14 fields
pub nodes_processed: usize,
pub max_depth_seen: usize,
pub pruned: usize,
pub incumbent_updates: usize,
pub relaxation_time_total_ms: f64,
pub relaxation_time_root_ms: f64,
pub relaxation_time_desc_ms: f64,
pub relaxation_time_optimal_ms: f64,
pub relaxation_time_infeasible_ms: f64,
pub lp_presolve_us_total: u64,
pub lp_solve_us_total: u64,
pub lp_postsolve_us_total: u64,
pub approx_bounds_bytes_per_node: usize,
pub fp_incumbent_found: bool,
}Expand description
Search statistics returned by solve_milp_with_stats / solve_miqp_with_stats.
Counters and timings instrument the branch-and-bound driver without changing its behaviour. The timing fields help separate exploration explosion (many nodes) from per-node cost (slow relaxation solves).
Fields§
§nodes_processed: usizeRelaxation solves performed (root included).
max_depth_seen: usizeMaximum branching depth reached.
pruned: usizeNodes discarded by bound/infeasibility before branching.
incumbent_updates: usizeNumber of incumbent improvements (including the first one found).
relaxation_time_total_ms: f64Total wall time spent inside relaxation solves across all nodes (ms).
relaxation_time_root_ms: f64Wall time for the root node relaxation solve (ms).
relaxation_time_desc_ms: f64Cumulative wall time for all descendant (non-root) relaxation solves (ms).
relaxation_time_optimal_ms: f64Cumulative time in solves that returned Optimal (ms).
relaxation_time_infeasible_ms: f64Cumulative time in solves that returned Infeasible (ms).
lp_presolve_us_total: u64Cumulative LP presolve microseconds across all nodes (zero when presolve does not reduce).
lp_solve_us_total: u64Cumulative LP solve (simplex) microseconds across all nodes.
lp_postsolve_us_total: u64Cumulative LP postsolve microseconds across all nodes.
approx_bounds_bytes_per_node: usizeApproximate bytes per node for the bounds clone: n_vars × 2 × size_of::<f64>().
Gives a rough idea of per-node memory traffic regardless of node count.
fp_incumbent_found: boolWhether the feasibility pump found an initial incumbent before branch-and-bound.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MipStats
impl RefUnwindSafe for MipStats
impl Send for MipStats
impl Sync for MipStats
impl Unpin for MipStats
impl UnsafeUnpin for MipStats
impl UnwindSafe for MipStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more