pub enum Checkpoint {
IterStart,
AfterBarrierUpdate,
AfterSearchDirection,
AfterStep,
StepRejected,
PreRestoration,
PostRestoration,
Terminated,
}Expand description
Where in a solver’s loop a checkpoint fired.
The variants cover the NLP filter-IPM’s loop; other interior-point
solvers fire the subset that applies to them (e.g. the convex IPM uses
IterStart,
AfterSearchDirection,
AfterStep, and
Terminated; it has no restoration phase or
backtracking line search, so those variants simply never fire).
Variants§
IterStart
Top of an outer iteration — before this iteration’s step is computed. The iterate, multipliers, and μ reflect the accepted point from the previous iteration.
AfterBarrierUpdate
After the barrier parameter μ was updated for this iteration (before the search direction is computed).
AfterSearchDirection
After the primal-dual Newton step was computed — the search
direction δ, the applied regularization, and the KKT
factorization are available.
AfterStep
After a step length was chosen and the trial point accepted — the step lengths α and the new iterate are in place.
StepRejected
The line search rejected this iteration’s step and the solver is about to fall into restoration (NLP filter-IPM only).
PreRestoration
Just before the algorithm switches into the restoration phase (NLP filter-IPM only).
PostRestoration
Just after the restoration phase returns (NLP filter-IPM only).
Terminated
The solve has finished: fired once before the solver returns, at
the final iterate, carrying the outcome via DebugState::status.
The DebugAction returned here is ignored — the solve is
already over.
Implementations§
Source§impl Checkpoint
impl Checkpoint
Sourcepub fn as_str(self) -> &'static str
pub fn as_str(self) -> &'static str
The stable wire/CLI protocol name for this checkpoint. These strings
are intentionally not the variant identifiers (AfterBarrierUpdate
→ "after_mu", PreRestoration → "pre_restoration_entry") — they’re
the names the JSON protocol and stop-at use, so match on the variant,
not the string.
Sourcepub fn is_sub_iteration(self) -> bool
pub fn is_sub_iteration(self) -> bool
Sub-iteration checkpoints (everything between IterStart and the
next IterStart).
Trait Implementations§
Source§impl Clone for Checkpoint
impl Clone for Checkpoint
Source§fn clone(&self) -> Checkpoint
fn clone(&self) -> Checkpoint
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Checkpoint
Source§impl Debug for Checkpoint
impl Debug for Checkpoint
impl Eq for Checkpoint
Source§impl PartialEq for Checkpoint
impl PartialEq for Checkpoint
Source§fn eq(&self, other: &Checkpoint) -> bool
fn eq(&self, other: &Checkpoint) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for Checkpoint
Auto Trait Implementations§
impl Freeze for Checkpoint
impl RefUnwindSafe for Checkpoint
impl Send for Checkpoint
impl Sync for Checkpoint
impl Unpin for Checkpoint
impl UnsafeUnpin for Checkpoint
impl UnwindSafe for Checkpoint
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