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
The expected signature of the callback is `callback(nlp, solver, stats)`, and its output is ignored.
17
+
Changing any of the input arguments will affect the subsequent iterations.
18
+
In particular, setting `stats.status = :user` will stop the algorithm.
19
+
All relevant information should be available in `nlp` and `solver`.
20
+
Notably, you can access, and modify, the following:
21
+
- `solver.xk`: current iterate;
22
+
- `solver.∇fk`: current gradient;
23
+
- `stats`: structure holding the output of the algorithm (`GenericExecutionStats`), which contains, among other things:
24
+
- `stats.iter`: current iteration counter;
25
+
- `stats.objective`: current objective function value;
26
+
- `stats.solver_specific[:smooth_obj]`: current value of the smooth part of the objective function;
27
+
- `stats.solver_specific[:nonsmooth_obj]`: current value of the nonsmooth part of the objective function;
28
+
- `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;
- `η2::T = T(0.9)`: very successful iteration threshold;
136
-
- `γ::T = T(3)`: trust-region radius parameter multiplier, Δ := Δ*γ when the iteration is very successful and Δ := Δ/γ when the iteration is unsuccessful;
136
+
- `γ::T = T(3)`: trust-region radius parameter multiplier. Must satisfy `γ > 1`. The trust-region radius is updated as Δ := Δ*γ when the iteration is very successful and Δ := Δ/γ when the iteration is unsuccessful;
137
137
- `α::T = 1/eps(T)`: TODO
138
138
- `β::T = 1/eps(T)`: TODO
139
139
- `reduce_TR::Bool = True`: TODO
@@ -146,21 +146,7 @@ The algorithm stops either when `√(ξₖ/νₖ) < atol + rtol*√(ξ₀/ν₀)
146
146
The value returned is a `GenericExecutionStats`, see `SolverCore.jl`.
147
147
148
148
# Callback
149
-
The callback is called at each iteration.
150
-
The expected signature of the callback is `callback(nlp, solver, stats)`, and its output is ignored.
151
-
Changing any of the input arguments will affect the subsequent iterations.
152
-
In particular, setting `stats.status = :user` will stop the algorithm.
153
-
All relevant information should be available in `nlp` and `solver`.
154
-
Notably, you can access, and modify, the following:
155
-
- `solver.xk`: current iterate;
156
-
- `solver.∇fk`: current gradient;
157
-
- `stats`: structure holding the output of the algorithm (`GenericExecutionStats`), which contains, among other things:
158
-
- `stats.iter`: current iteration counter;
159
-
- `stats.objective`: current objective function value;
160
-
- `stats.solver_specific[:smooth_obj]`: current value of the smooth part of the objective function;
161
-
- `stats.solver_specific[:nonsmooth_obj]`: current value of the nonsmooth part of the objective function;
162
-
- `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;
- `η2::T = T(0.9)`: very successful iteration threshold;
129
-
- `γ::T = T(3)`: trust-region radius parameter multiplier, Δ := Δ*γ when the iteration is very successful and Δ := Δ/γ when the iteration is unsuccessful;
129
+
- `γ::T = T(3)`: trust-region radius parameter multiplier. Must satisfy `γ > 1`. The trust-region radius is updated as Δ := Δ*γ when the iteration is very successful and Δ := Δ/γ when the iteration is unsuccessful;
130
130
- `α::T = 1/eps(T)`: TODO
131
131
- `β::T = 1/eps(T)`: TODO
132
132
- `χ::F = NormLinf(1)`: norm used to define the trust-region;`
@@ -138,21 +138,7 @@ The algorithm stops either when `√(ξₖ/νₖ) < atol + rtol*√(ξ₀/ν₀)
138
138
The value returned is a `GenericExecutionStats`, see `SolverCore.jl`.
139
139
140
140
# Callback
141
-
The callback is called at each iteration.
142
-
The expected signature of the callback is `callback(nlp, solver, stats)`, and its output is ignored.
143
-
Changing any of the input arguments will affect the subsequent iterations.
144
-
In particular, setting `stats.status = :user` will stop the algorithm.
145
-
All relevant information should be available in `nlp` and `solver`.
146
-
Notably, you can access, and modify, the following:
147
-
- `solver.xk`: current iterate;
148
-
- `solver.∇fk`: current gradient;
149
-
- `stats`: structure holding the output of the algorithm (`GenericExecutionStats`), which contains, among other things:
150
-
- `stats.iter`: current iteration counter;
151
-
- `stats.objective`: current objective function value;
152
-
- `stats.solver_specific[:smooth_obj]`: current value of the smooth part of the objective function;
153
-
- `stats.solver_specific[:nonsmooth_obj]`: current value of the nonsmooth part of the objective function;
154
-
- `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