You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- `η2::T = T(0.9)`: very successful iteration threshold;
128
+
- `γ::T = T(3)`: trust-region radius parameter multiplier, Δ := Δ*γ when the iteration is very successful and Δ := Δ/γ when the iteration is unsuccessful;
129
+
- `α::T = 1/eps(T)`: TODO
130
+
- `β::T = 1/eps(T)`: TODO
131
+
- `χ::F = NormLinf(1)`: norm used to define the trust-region;`
132
+
- `subsolver::S = R2Solver`: subsolver used to solve the subproblem that appears at each iteration.
133
+
134
+
The algorithm stops either when `√(ξₖ/νₖ) < atol + rtol*√(ξ₀/ν₀) ` or `ξₖ < 0` and `√(-ξₖ/νₖ) < neg_tol` where ξₖ := f(xₖ) + h(xₖ) - φ(sₖ; xₖ) - ψ(sₖ; xₖ), and √(ξₖ/νₖ) is a stationarity measure.
135
+
136
+
# Output
137
+
The value returned is a `GenericExecutionStats`, see `SolverCore.jl`.
138
+
139
+
# Callback
140
+
The callback is called at each iteration.
141
+
The expected signature of the callback is `callback(nlp, solver, stats)`, and its output is ignored.
142
+
Changing any of the input arguments will affect the subsequent iterations.
143
+
In particular, setting `stats.status = :user` will stop the algorithm.
144
+
All relevant information should be available in `nlp` and `solver`.
145
+
Notably, you can access, and modify, the following:
146
+
- `solver.xk`: current iterate;
147
+
- `solver.∇fk`: current gradient;
148
+
- `stats`: structure holding the output of the algorithm (`GenericExecutionStats`), which contains, among other things:
149
+
- `stats.iter`: current iteration counter;
150
+
- `stats.objective`: current objective function value;
151
+
- `stats.solver_specific[:smooth_obj]`: current value of the smooth part of the objective function;
152
+
- `stats.solver_specific[:nonsmooth_obj]`: current value of the nonsmooth part of the objective function;
153
+
- `stats.status`: current status of the algorithm. Should be `:unknown` unless the algorithm has attained a stopping criterion. Changing this to anything other than `:unknown` will stop the algorithm, but you should use `:user` to properly indicate the intention;
0 commit comments