3232function LMTRSolver(
3333 reg_nls:: AbstractRegularizedNLPModel{T, V} ;
3434 subsolver = R2Solver,
35- χ = NormLinf(one(T))
36- ) where {T, V}
35+ χ = NormLinf(one(T)),
36+ ) where {T, V}
3737 x0 = reg_nls. model. meta. x0
3838 l_bound = reg_nls. model. meta. lvar
3939 u_bound = reg_nls. model. meta. uvar
@@ -57,9 +57,15 @@ function LMTRSolver(
5757 end
5858
5959 ψ =
60- has_bnds ? shifted(reg_nls. h, xk, max.(- one(T), l_bound_m_x), min.(one(T), u_bound_m_x), reg_nls. selected) :
61- shifted(reg_nls. h, xk, one(T), χ)
62-
60+ has_bnds ?
61+ shifted(
62+ reg_nls. h,
63+ xk,
64+ max.(- one(T), l_bound_m_x),
65+ min.(one(T), u_bound_m_x),
66+ reg_nls. selected,
67+ ) : shifted(reg_nls. h, xk, one(T), χ)
68+
6369 Jk = jac_op_residual(reg_nls. model, xk)
6470 sub_nlp = LMModel(Jk, Fk, T(0 ), xk)
6571 subpb = RegularizedNLPModel(sub_nlp, ψ)
@@ -83,7 +89,7 @@ function LMTRSolver(
8389 u_bound_m_x,
8490 subsolver,
8591 subpb,
86- substats
92+ substats,
8793 )
8894end
8995
@@ -143,13 +149,7 @@ The value returned is a `GenericExecutionStats`, see `SolverCore.jl`.
143149# Callback
144150$(callback_docstring)
145151"""
146- function LMTR(
147- nls:: AbstractNLSModel ,
148- h:: H ,
149- χ:: X ,
150- options:: ROSolverOptions ;
151- kwargs...
152- ) where {H, X}
152+ function LMTR(nls:: AbstractNLSModel , h:: H , χ:: X , options:: ROSolverOptions ; kwargs... ) where {H, X}
153153 kwargs_dict = Dict(kwargs... )
154154 selected = pop!(kwargs_dict, :selected, 1 : (nls. meta. nvar))
155155 reg_nls = RegularizedNLPModel(nls, h, selected)
@@ -174,7 +174,7 @@ function LMTR(
174174 )
175175end
176176
177- function LMTR(reg_nls:: AbstractRegularizedNLPModel{T} ; kwargs... ) where {T}
177+ function LMTR(reg_nls:: AbstractRegularizedNLPModel{T} ; kwargs... ) where {T}
178178 kwargs_dict = Dict(kwargs... )
179179 subsolver = pop!(kwargs_dict, :subsolver, R2Solver)
180180 χ = pop!(kwargs_dict, :χ, NormLinf(one(T)))
@@ -202,7 +202,7 @@ function SolverCore.solve!(
202202 η2:: T = T(0.9 ),
203203 γ:: T = T(3 ),
204204 α:: T = 1 / eps(T),
205- β:: T = 1 / eps(T)
205+ β:: T = 1 / eps(T),
206206) where {T, G, V}
207207 reset!(stats)
208208
@@ -325,7 +325,6 @@ function SolverCore.solve!(
325325 done = stats. status != :unknown
326326
327327 while ! done
328-
329328 ∆_effective = min(β * χ(s), Δk)
330329
331330 if has_bnds
@@ -340,22 +339,22 @@ function SolverCore.solve!(
340339 set_radius!(ψ, ∆_effective)
341340 end
342341
343- if isa(solver. subsolver, TRDHSolver)
342+ if isa(solver. subsolver, TRDHSolver)
344343 solver. subsolver. D. d[1 ] = 1 / ν
345344 solve!(
346345 solver. subsolver,
347346 solver. subpb,
348347 solver. substats,
349- x = s,
348+ x = s,
350349 atol = stats. iter == 0 ? 1.0e-5 : max(sub_atol, min(1.0e-1 , ξ1 / 10 )),
351- Δk = ∆_effective / 10
350+ Δk = ∆_effective / 10 ,
352351 )
353352 else
354353 solve!(
355354 solver. subsolver,
356355 solver. subpb,
357356 solver. substats,
358- x = s,
357+ x = s,
359358 atol = stats. iter == 0 ? 1.0e-5 : max(sub_atol, min(1.0e-1 , ξ1 / 10 )),
360359 ν = ν,
361360 )
@@ -396,9 +395,8 @@ function SolverCore.solve!(
396395 ],
397396 colsep = 1 ,
398397 )
399-
400- if η1 ≤ ρk < Inf
401398
399+ if η1 ≤ ρk < Inf
402400 xk .= xkn
403401 if has_bnds
404402 @. l_bound_m_x = l_bound - xk
@@ -416,14 +414,14 @@ function SolverCore.solve!(
416414
417415 shift!(ψ, xk)
418416 jtprod_residual!(nls, xk, Fk, ∇fk)
419-
417+
420418 σmax, found_σ = opnorm(solver. subpb. model. J)
421419 found_σ || error(" operator norm computation failed" )
422420 end
423421
424422 if η2 ≤ ρk < Inf
425423 Δk = max(Δk, γ * sNorm)
426- if ! has_bnds
424+ if ! has_bnds
427425 set_radius!(ψ, Δk)
428426 set_radius!(solver. subsolver. ψ, Δk)
429427 end
@@ -482,26 +480,11 @@ function SolverCore.solve!(
482480 end
483481
484482 if verbose > 0 && stats. status == :first_order
485- @info log_row(
486- Any[
487- stats. iter,
488- 0 ,
489- fk,
490- hk,
491- sqrt_ξ1_νInv,
492- ρk,
493- Δk,
494- χ(xk),
495- χ(s),
496- ν,
497- " " ,
498- ],
499- colsep = 1 ,
500- )
483+ @info log_row(Any[stats. iter, 0 , fk, hk, sqrt_ξ1_νInv, ρk, Δk, χ(xk), χ(s), ν, " " ], colsep = 1 )
501484 @info " LMTR: terminating with √(ξ1/ν) = $(sqrt_ξ1_νInv) "
502485 end
503486
504487 set_solution!(stats, xk)
505488 set_residuals!(stats, zero(T), sqrt_ξ1_νInv)
506489 return stats
507- end
490+ end
0 commit comments