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: f64Final objective value.
iterations: usizeTotal 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: boolWhether the optimizer converged to a stationary point.
plan_used: OuterPlanWhich 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
impl OuterResult
pub fn new( rho: Array1<f64>, final_value: f64, iterations: usize, converged: bool, plan_used: OuterPlan, ) -> Self
Sourcepub fn final_grad_norm_report(&self) -> String
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
impl Clone for OuterResult
Source§fn clone(&self) -> OuterResult
fn clone(&self) -> OuterResult
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 OuterResult
impl RefUnwindSafe for OuterResult
impl Send for OuterResult
impl Sync for OuterResult
impl Unpin for OuterResult
impl UnsafeUnpin for OuterResult
impl UnwindSafe for OuterResult
Blanket Implementations§
impl<T> Allocation 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.