pub enum CrossoverDecline {
NothingToIdentify,
QpFailed,
LineSearchFailed,
ActiveSetNotConverged,
Regressed,
UserTolerances,
TimeLimit,
}Expand description
Why crossover did not replace the interior iterate. Reported rather than swallowed: “crossover ran and declined” and “crossover never ran” are different facts about a solve, and the AMBIGUOUS-activity consumers this exists for need to tell them apart.
Variants§
NothingToIdentify
The problem has no bounds and no constraints, so there is no active set to identify.
QpFailed
The EQP-equivalent QP did not solve, and step 4 was disabled or also
failed. CrossoverReport::eqp says how it ended.
LineSearchFailed
The penalty line search could not accept a step from the interior iterate.
ActiveSetNotConverged
The full active-set run did not converge within crossover_max_iter.
Regressed
A point was produced but it is not at least as good a KKT point as the
interior iterate (see accepts).
UserTolerances
The point meets the SQP’s tolerances in the scaled space but not the
user’s constr_viol_tol / dual_inf_tol / compl_inf_tol on the
model as declared (gh#1054). Scaling can shrink a row’s violation by
orders of magnitude, so a point can be a scaled KKT point and an
infeasible one at once; the interior-point verdict reads user units,
and so does this gate.
TimeLimit
The solve’s max_wall_time / max_cpu_time ran out before
crossover finished (gh#1054). The interior solution stands, as on
every other decline: crossover refines a converged solve, so running
out of time is never a reason to fail it.
Trait Implementations§
Source§impl Clone for CrossoverDecline
impl Clone for CrossoverDecline
impl Copy for CrossoverDecline
Source§impl Debug for CrossoverDecline
impl Debug for CrossoverDecline
impl Eq for CrossoverDecline
Source§impl PartialEq for CrossoverDecline
impl PartialEq for CrossoverDecline
impl StructuralPartialEq for CrossoverDecline
Auto Trait Implementations§
impl Freeze for CrossoverDecline
impl RefUnwindSafe for CrossoverDecline
impl Send for CrossoverDecline
impl Sync for CrossoverDecline
impl Unpin for CrossoverDecline
impl UnsafeUnpin for CrossoverDecline
impl UnwindSafe for CrossoverDecline
Blanket Implementations§
impl<T> Boilerplate for T
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