Internal functions
JSOSolvers.projected_newton!
— Functionprojected_newton!(solver, x, H, g, Δ, cgtol, ℓ, u, s, Hs; max_time = Inf, max_cgiter = 50, subsolver_verbose = 0)
Compute an approximate solution d
for
min q(d) = ¹/₂dᵀHs + dᵀg s.t. ℓ ≦ x + d ≦ u, ‖d‖ ≦ Δ
starting from s
. The steps are computed using the conjugate gradient method projected on the active bounds.
JSOSolvers.projected_line_search!
— Functions = projected_line_search!(x, H, g, d, ℓ, u, Hs; μ₀ = 1e-2)
Performs a projected line search, searching for a step size t
such that
0.5sᵀHs + sᵀg ≦ μ₀sᵀg,
where s = P(x + t * d) - x
, while remaining on the same face as x + d
. Backtracking is performed from t = 1.0. x
is updated in place.
JSOSolvers.cauchy!
— Functionα, s = cauchy!(x, H, g, Δ, ℓ, u, s, Hs; μ₀ = 1e-2, μ₁ = 1.0, σ=10.0)
Computes a Cauchy step s = P(x - α g) - x
for
min q(s) = ¹/₂sᵀHs + gᵀs s.t. ‖s‖ ≦ μ₁Δ, ℓ ≦ x + s ≦ u,
with the sufficient decrease condition
q(s) ≦ μ₀sᵀg.
JSOSolvers.projected_gauss_newton!
— Functionprojected_gauss_newton!(solver, x, A, Fx, Δ, gctol, s, max_cgiter, ℓ, u; max_cgiter = 50, max_time = Inf, subsolver_verbose = 0)
Compute an approximate solution d
for
min q(d) = ½‖Ad + Fx‖² - ½‖Fx‖² s.t. ℓ ≦ x + d ≦ u, ‖d‖ ≦ Δ
starting from s
. The steps are computed using the conjugate gradient method projected on the active bounds.
JSOSolvers.projected_line_search_ls!
— Functions = projected_line_search_ls!(x, A, g, d, ℓ, u, As, s; μ₀ = 1e-2)
Performs a projected line search, searching for a step size t
such that
½‖As + Fx‖² ≤ ½‖Fx‖² + μ₀FxᵀAs
where s = P(x + t * d) - x
, while remaining on the same face as x + d
. Backtracking is performed from t = 1.0. x
is updated in place.
JSOSolvers.cauchy_ls!
— Functionα, s = cauchy_ls!(x, A, Fx, g, Δ, ℓ, u, s, As; μ₀ = 1e-2, μ₁ = 1.0, σ=10.0)
Computes a Cauchy step s = P(x - α g) - x
for
min q(s) = ½‖As + Fx‖² - ½‖Fx‖² s.t. ‖s‖ ≦ μ₁Δ, ℓ ≦ x + s ≦ u,
with the sufficient decrease condition
q(s) ≦ μ₀gᵀs,
where g = AᵀFx.