API — Trust-Region Solvers

Abstract type

EigenTRSolver

The default and most robust solver. It decomposes $H$ with eigen(Symmetric(H)), tries the unconstrained Newton step, and — when that step falls outside the trust region — solves the secular equation

\[\phi(\sigma) = \|p(\sigma)\| - \Delta = 0, \qquad p(\sigma) = -\sum_i \frac{g_i}{\lambda_i + \sigma}\, v_i\]

using a three-phase fallback chain:

PhaseMethodIterationsTolerance
1Newton on $\phi$20$10^{-10}$
2Brent root-finding on $\phi$50$10^{-12}$
3Cauchy (steepest-descent) step

Phase 2 is entered only when Newton's method does not converge (e.g. the Hessian is near-singular or the secular equation has sharp curvature). The bracket $[\sigma_{\text{lo}},\, \sigma_{\text{hi}}]$ is established automatically and Brent's method (with inverse quadratic interpolation) converges superlinearly to the boundary solution.

Retro.EigenTRSolverType
EigenTRSolver <: AbstractTRSolver

Eigen-based trust-region solver. Solves the trust-region subproblem using eigenvalue decomposition for accurate solutions. Falls back to Brent bracketing on the secular equation when Newton iterations do not converge, and to a Cauchy step as a last resort.

Fields

  • regularization::Real: Regularization parameter for ill-conditioned problems
source

CauchyTRSolver

Retro.CauchyTRSolverType
CauchyTRSolver <: AbstractTRSolver

Cauchy point trust-region solver. Computes the steepest descent step along the negative gradient direction. Fast but potentially less accurate than other methods.

source

Solve interface

Retro.solve_tr!Function
solve_tr!(solver, g, H, Δ, p) -> predicted_reduction

Solve the trust-region subproblem min g'p + 0.5 p'Hp s.t. ||p|| ≤ Δ. The step is written into p; returns the predicted reduction.

Uses eigenvalue decomposition + Newton iteration on the secular equation. When Newton does not converge to the trust-region boundary, Brent root-finding brackets the Lagrange multiplier σ as a robust fallback.

source