pub enum TrustRegionDecision {
GrowAtBoundary,
HoldInside,
HoldModerate,
ShrinkOnMarginalAccept,
ShrinkOnRejection,
RejectFloor,
}Expand description
Rich classification of the branch a TrustRegionPolicy::update
took on a single trust-region step. Surfaced so callers can log at a
glance whether the solver is being throttled by the region
(ShrinkOnRejection / RejectFloor), sitting well inside it
(HoldInside), or expanding into freshly available room
(GrowAtBoundary).
The four Accepted-family variants (GrowAtBoundary, HoldInside,
HoldModerate, ShrinkOnMarginalAccept) all correspond to accepted
steps; the remaining two to rejected ones. Two orthogonal signals —
whether the realized reduction was within the objective’s round-off
noise floor, and whether the model’s predicted reduction was
non-positive — are reported as booleans on TrustRegionStep rather
than stealing a decision label, so the classification above stays a
faithful superset of every consumer’s existing telemetry.
Variants§
GrowAtBoundary
rho > eta_expand AND the step reached the region boundary — the
model is excellent and the radius was the binding constraint, so
the radius was expanded.
HoldInside
rho > eta_expand but the step sits inside the region; radius
held (no evidence the region constrained the step).
HoldModerate
eta_shrink <= rho <= eta_expand (moderate fidelity) — radius held.
ShrinkOnMarginalAccept
Step accepted (rho > eta_accept) but rho < eta_shrink; radius
shrunk to be more conservative next iteration.
ShrinkOnRejection
Step rejected — radius shrunk (and, when a rejection step cap is configured, additionally capped to a fraction of the proposed step norm so a re-proposal stays inside the rejected region).
RejectFloor
A shrink landed the radius at (or below) min_radius. Persistent
RejectFloor is the unambiguous signal that no descent direction
exists at the smallest admissible radius.
Implementations§
Trait Implementations§
Source§impl Clone for TrustRegionDecision
impl Clone for TrustRegionDecision
Source§fn clone(&self) -> TrustRegionDecision
fn clone(&self) -> TrustRegionDecision
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 TrustRegionDecision
Source§impl Debug for TrustRegionDecision
impl Debug for TrustRegionDecision
impl Eq for TrustRegionDecision
Source§impl PartialEq for TrustRegionDecision
impl PartialEq for TrustRegionDecision
impl StructuralPartialEq for TrustRegionDecision
Auto Trait Implementations§
impl Freeze for TrustRegionDecision
impl RefUnwindSafe for TrustRegionDecision
impl Send for TrustRegionDecision
impl Sync for TrustRegionDecision
impl Unpin for TrustRegionDecision
impl UnsafeUnpin for TrustRegionDecision
impl UnwindSafe for TrustRegionDecision
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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