@@ -157,10 +157,38 @@ function SciMLBase.solve!(cache::LineSearchesJLCache, u, du; kwargs...)
157157end
158158
159159"""
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)
161163
162164Robust NonMonotone Line Search is a derivative free line search method from DF Sane
163165[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`.
164192"""
165193@kwdef @concrete struct RobustNonMonotoneLineSearch < :
166194 AbstractNonlinearSolveLineSearchAlgorithm
0 commit comments