Skip to main content

OuterResult

Struct OuterResult 

Source
pub struct OuterResult {
Show 18 fields pub rho: Array1<f64>, pub final_value: f64, pub iterations: usize, pub final_grad_norm: Option<f64>, pub final_gradient: Option<Array1<f64>>, pub final_hessian: Option<Array2<f64>>, pub converged: bool, pub plan_used: OuterPlan, pub operator_trust_radius: Option<f64>, pub operator_stop_reason: Option<OperatorTrustRegionStopReason>, pub criterion_certificate: Option<OuterCriterionCertificate>, pub converged_via: Option<OuterConvergedVia>, pub flat_noise_grad_bound: Option<f64>, pub rho_uncertainty_diagnostic: Option<RhoUncertaintyDiagnostic>, pub tail_snap_reseed: Option<Array1<f64>>, pub saddle_escape_reseed: Option<Array1<f64>>, pub wrong_rail_reseed: Option<Array1<f64>>, pub active_set_reseed: Option<ActiveSetReseed>,
}
Expand description

Result of a completed outer optimization.

Fields§

§rho: Array1<f64>

Optimized log-smoothing parameters.

§final_value: f64

Final objective value.

§iterations: usize

Total outer iterations across all solver restarts.

§final_grad_norm: Option<f64>

Final gradient norm, when the solver computed an actual gradient.

§final_gradient: Option<Array1<f64>>

Final gradient when the solver is gradient-based.

§final_hessian: Option<Array2<f64>>

Final Hessian when the solver tracks one.

§converged: bool

Whether the optimizer converged to a stationary point.

§plan_used: OuterPlan

Which plan was actually used (may differ from initial if fallback fired).

§operator_trust_radius: Option<f64>

Final trust radius for the internal operator trust-region solver.

A non-converged operator-ARC attempt may be restarted by the budget ladder. Restarting only from the last θ but resetting the trust radius is not a warm start: it replays the same rejected large trial steps. Carry this globalization state so retries resume from the scale the previous attempt already learned.

§operator_stop_reason: Option<OperatorTrustRegionStopReason>

Why the internal operator trust-region solver stopped.

§criterion_certificate: Option<OuterCriterionCertificate>

First-order optimality self-audit at the returned point (#934).

None when no analytic gradient was measured at termination (gradient-free solvers, cache-hit short-circuits, per-atom EFS) or when an audit probe failed to evaluate. Populated once by [run_outer] after the solver ladder returns, outside all hot loops.

§converged_via: Option<OuterConvergedVia>

Which certificate concluded a converged run (#2235/#2241). Stamped by [certify_outer_optimality] on every certified result (the Fellner–Schall lane pre-stamps RecurrentIncumbent, which certification preserves); None exactly on non-converged resume checkpoints.

§flat_noise_grad_bound: Option<f64>

Probe-noise-floor gradient bound measured by the cost-stall guard at a halted stall (#2241): σ̂/Δ, the criterion’s evaluation-noise floor over the stall window divided by the radius the accepted steps actually probed. Present only on results rebuilt from a cost-stall exit; [certify_outer_optimality] folds it into the stationarity bound so the final re-measured gradient is judged against the same flat certificate the guard granted.

§rho_uncertainty_diagnostic: Option<RhoUncertaintyDiagnostic>

Post-fit PSIS diagnostic for whether sampled smoothing-parameter weights show evidence that plug-in REML/LAML intervals are unreliable. Populated once by [run_outer] when the exact rho Hessian is cheap enough to use.

§tail_snap_reseed: Option<Array1<f64>>

Reseed point minted by a refused certification whose tail snap CONFIRMED an exponential tail (#2348 Inc 2b). A snap is a waypoint, never a candidate optimum: even an interior coordinate stationary before the snap can move when it is coupled to the tail coordinate (#2358). The plan runner retries ONCE from this point, allowing every coordinate to re-descend or remain on the rail before the natural certificate judges the result.

§saddle_escape_reseed: Option<Array1<f64>>

Saddle-escape reseed point minted by a refused certification whose interior reduced Hessian is a certified strict saddle — small projected gradient, hessian_psd = Some(false), no railed coordinate (#2357). A gradient-only convergence gate (ARC’s, or the cost-stall guard’s) can ARRIVE at such a saddle with its gradient already below tolerance and stop, even though the certified negative-curvature eigendirection is a strict descent direction the optimizer never took. This point is ρ + α·v for the most-negative-curvature eigenvector v, stepped off the saddle ridge to a strictly-lower objective; the plan runner reseeds the outer search ONCE from it (reseed gate closed so it cannot recurse), which lets the optimizer descend to the true PSD minimum exactly as an identical warm-started resume does by hand.

§wrong_rail_reseed: Option<Array1<f64>>

Wrong-rail pull-back reseed point minted by a refused certification whose coordinate sits AT the ρ box bound but whose clean-band probes prove the objective DECREASES as the coordinate moves INWARD (#2392). The outer search drove the coordinate to the wrong bound — its terminal gradient is deep-λ instrument noise, so the trust region never proposed the large inward move — while a drift-band-clean, above-noise-floor run of probes a few e-folds inside carries a pencil constant of the sign OPPOSITE the rail (descent points away from the bound, ∂V/∂ρ > 0 at an upper rail). This point moves that coordinate to its clean-band interior scale, where the gradient is informative again; the plan runner reseeds ONCE (gate closed) and the optimizer descends to the true interior optimum. Gated strictly on the opposite-sign clean-tail proof, so a GENUINE rail (descent toward the bound) never mints it and no real λ→∞ optimum is pulled off its rail.

§active_set_reseed: Option<ActiveSetReseed>

Active-set reduction reseed minted by a refused certification whose INTERIOR is not stationary while a coordinate is railed at the ρ box with a deep-λ noise-floor gradient (#2392). The railed coordinate’s ill-conditioned Hessian row poisons the joint Newton/ARC steps, so the interior cannot polish; freezing that coordinate at its bound and re-running lets the optimizer converge the interior in the well-conditioned REDUCED space. The reseed carries the frozen box (bounds, with lower[k]==upper[k]==rail for each frozen coordinate); the plan runner’s re-certification under the ORIGINAL bounds then judges every pinned coordinate’s KKT sign at the reduced optimum (an inward-feasible-descent gradient unfreezes it — no silent clamping of a coordinate that stops wanting the rail).

Implementations§

Source§

impl OuterResult

Source

pub fn new( rho: Array1<f64>, final_value: f64, iterations: usize, converged: bool, plan_used: OuterPlan, ) -> Self

Source

pub fn final_grad_norm_report(&self) -> String

Human-readable rendering of final_grad_norm for diagnostics. Returns "n/a" when no gradient was measured (gradient-free / cache-hit paths).

Trait Implementations§

Source§

impl Clone for OuterResult

Source§

fn clone(&self) -> OuterResult

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OuterResult

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DistributionExt for T
where T: ?Sized,

Source§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V