@@ -157,10 +157,38 @@ function SciMLBase.solve!(cache::LineSearchesJLCache, u, du; kwargs...)
157
157
end
158
158
159
159
"""
160
- RobustNonMonotoneLineSearch(; gamma = 1 // 10000, sigma_0 = 1)
160
+ RobustNonMonotoneLineSearch(; gamma = 1 // 10000, sigma_0 = 1, M::Int = 10,
161
+ tau_min = 1 // 10, tau_max = 1 // 2, n_exp::Int = 2, maxiters::Int = 100,
162
+ η_strategy = (fn₁, n, uₙ, fₙ) -> fn₁ / n^2)
161
163
162
164
Robust NonMonotone Line Search is a derivative free line search method from DF Sane
163
165
[la2006spectral](@cite).
166
+
167
+ ### Keyword Arguments
168
+
169
+ - `M`: The monotonicity of the algorithm is determined by a this positive integer.
170
+ A value of 1 for `M` would result in strict monotonicity in the decrease of the L2-norm
171
+ of the function `f`. However, higher values allow for more flexibility in this reduction.
172
+ Despite this, the algorithm still ensures global convergence through the use of a
173
+ non-monotone line-search algorithm that adheres to the Grippo-Lampariello-Lucidi
174
+ condition. Values in the range of 5 to 20 are usually sufficient, but some cases may
175
+ call for a higher value of `M`. The default setting is 10.
176
+ - `gamma`: a parameter that influences if a proposed step will be accepted. Higher value
177
+ of `gamma` will make the algorithm more restrictive in accepting steps. Defaults to
178
+ `1e-4`.
179
+ - `tau_min`: if a step is rejected the new step size will get multiplied by factor, and
180
+ this parameter is the minimum value of that factor. Defaults to `0.1`.
181
+ - `tau_max`: if a step is rejected the new step size will get multiplied by factor, and
182
+ this parameter is the maximum value of that factor. Defaults to `0.5`.
183
+ - `n_exp`: the exponent of the loss, i.e. ``f_n=||F(x_n)||^{n\\ _exp}``. The paper uses
184
+ `n_exp ∈ {1, 2}`. Defaults to `2`.
185
+ - `η_strategy`: function to determine the parameter `η`, which enables growth
186
+ of ``||f_n||^2``. Called as `η = η_strategy(fn_1, n, x_n, f_n)` with `fn_1` initialized
187
+ as ``fn_1=||f(x_1)||^{n\\ _exp}``, `n` is the iteration number, `x_n` is the current
188
+ `x`-value and `f_n` the current residual. Should satisfy ``η > 0`` and ``∑ₖ ηₖ < ∞``.
189
+ Defaults to ``fn_1 / n^2``.
190
+ - `maxiters`: the maximum number of iterations allowed for the inner loop of the
191
+ algorithm. Defaults to `100`.
164
192
"""
165
193
@kwdef @concrete struct RobustNonMonotoneLineSearch < :
166
194
AbstractNonlinearSolveLineSearchAlgorithm
0 commit comments