pub struct EqpReport {
pub outcome: Result<QpStatus, QpError>,
pub working_set_changes: u32,
pub refactors: u32,
pub schur_updates: u32,
pub rank_guard_calls: u32,
pub time: Duration,
pub linsol_times: LinsolTimes,
}Expand description
What the §7 step-3 QP did (gh#1061).
CrossoverDecline::QpFailed covers every way that QP can fail to reach
Optimal — an iteration cap, an infeasible verdict, a hard linear-solver
error — and on a large model those call for different responses. This is
the detail behind it, kept on accepted reports too, so a slow crossover can
be attributed: working-set changes, refactorizations and rank tests against the
wall time they cost.
Fields§
§outcome: Result<QpStatus, QpError>The QP’s status, or the hard error it returned instead of one.
working_set_changes: u32Working-set changes (adds + drops). 0 when the QP returned an error.
refactors: u32Base-KKT refactorizations. 0 when the QP returned an error.
schur_updates: u32Schur-complement updates between refactorizations. 0 when the QP
returned an error.
rank_guard_calls: u32Linear-independence rank tests, counted on errors too.
time: DurationWall time of the QP call.
linsol_times: LinsolTimesHow that wall time split between factorization, back-solves and rank
tests; the rest of time went outside the linear solver (gh#1061).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EqpReport
impl RefUnwindSafe for EqpReport
impl Send for EqpReport
impl Sync for EqpReport
impl Unpin for EqpReport
impl UnsafeUnpin for EqpReport
impl UnwindSafe for EqpReport
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,
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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