pub struct CrossoverReport {
pub phase: Option<CrossoverPhase>,
pub declined: Option<CrossoverDecline>,
pub n_iter: u32,
pub n_qp_solves: u32,
pub active_bounds: usize,
pub active_constraints: usize,
pub estimated_active: usize,
pub kkt_before: Number,
pub kkt_after: Number,
pub compl_after: Number,
}Expand description
What crossover did. Retrieved from
crate::application::IpoptApplication::crossover_report.
Fields§
§phase: Option<CrossoverPhase>The phase that produced the accepted point; None when crossover
declined.
declined: Option<CrossoverDecline>Why it declined; None when it did not.
n_iter: u32Outer iterations spent in the step-4 fallback. 0 on the step-3 path.
n_qp_solves: u32QP subproblems solved across both phases, step 3’s included.
active_bounds: usizeVariable bounds in the identified active set (AtLower, AtUpper or
Fixed), read off the returned point where the primal test is exact.
See [identify_at].
active_constraints: usizeConstraint rows in the identified active set (equalities included — they are unconditionally active).
estimated_active: usizeRows and bounds the §7 step-2 tolerance test called active at the interior iterate, before any pivoting.
Compare against active_bounds + active_constraints, which is the
same question answered at the crossed-over point. They differ exactly
where the interior iterate could not support the inference — the
measurement this phase exists to make.
kkt_before: Numbermax(stationarity, constraint violation) at the interior iterate.
kkt_after: NumberThe same at the returned point. Never worse than kkt_before beyond
the tolerances accepts allows.
compl_after: NumberMax-norm complementarity at the returned point, measured against the
declared bounds — see [complementarity_at]. NaN when crossover
declined.
This exists because the interior method’s own complementarity is
measured against the relaxed bounds, and after crossover the two
frames disagree by the entire relaxation: an iterate sitting exactly
on a declared bound is bound_relax_factor inside the relaxed one, so
the relaxed reading is |multiplier| · δ — around 1e-8 — where the
truth is zero. Reporting that as the solve’s complementarity printed a
converged run as Overall NLP error above tol (#646). The caller
substitutes this figure when the point was accepted.
Implementations§
Trait Implementations§
Source§impl Clone for CrossoverReport
impl Clone for CrossoverReport
Source§fn clone(&self) -> CrossoverReport
fn clone(&self) -> CrossoverReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for CrossoverReport
impl RefUnwindSafe for CrossoverReport
impl Send for CrossoverReport
impl Sync for CrossoverReport
impl Unpin for CrossoverReport
impl UnsafeUnpin for CrossoverReport
impl UnwindSafe for CrossoverReport
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