Skip to content

Commit 3c8e92e

Browse files
apply julia formatter
1 parent 53c40b8 commit 3c8e92e

File tree

2 files changed

+15
-44
lines changed

2 files changed

+15
-44
lines changed

src/LMModel.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ where `J` is the Jacobian of `F` at `xk`, represented via matrix-free operations
1616
1717
`σ > 0` is a regularization parameter and `v` is a vector of the same size as `F(xk)` used for intermediary computations.
1818
"""
19-
mutable struct LMModel{T <: Real, V <: AbstractVector{T}, J <: Function , Jt <: Function} <:
19+
mutable struct LMModel{T <: Real, V <: AbstractVector{T}, J <: Function, Jt <: Function} <:
2020
AbstractNLPModel{T, V}
2121
j_prod!::J
2222
jt_prod!::Jt
@@ -37,15 +37,15 @@ function LMModel(j_prod!::J, jt_prod!::Jt, F::V, σ::T, xk::V) where {T, V, J, J
3737
return LMModel(j_prod!, jt_prod!, F, v, xk, σ, meta, Counters())
3838
end
3939

40-
function NLPModels.obj(nlp::LMModel, x::AbstractVector{T}) where{T}
40+
function NLPModels.obj(nlp::LMModel, x::AbstractVector{T}) where {T}
4141
@lencheck nlp.meta.nvar x
4242
increment!(nlp, :neval_obj)
4343
nlp.j_prod!(nlp.xk, x, nlp.v) # v = J(xk)x
4444
nlp.v .+= nlp.F
45-
return ( dot(nlp.v, nlp.v) + nlp.σ * dot(x, x) ) / 2
45+
return (dot(nlp.v, nlp.v) + nlp.σ * dot(x, x)) / 2
4646
end
4747

48-
function NLPModels.grad!(nlp::LMModel, x::AbstractVector{T}, g::AbstractVector{T}) where{T}
48+
function NLPModels.grad!(nlp::LMModel, x::AbstractVector{T}, g::AbstractVector{T}) where {T}
4949
@lencheck nlp.meta.nvar x
5050
@lencheck nlp.meta.nvar g
5151
increment!(nlp, :neval_grad)

src/LM_alg.jl

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,7 @@ mutable struct LMSolver{
3232
substats::GenericExecutionStats{T, V, V, T}
3333
end
3434

35-
function LMSolver(
36-
reg_nls::AbstractRegularizedNLPModel{T, V};
37-
subsolver = R2Solver,
38-
) where{T, V}
35+
function LMSolver(reg_nls::AbstractRegularizedNLPModel{T, V}; subsolver = R2Solver) where {T, V}
3936
x0 = reg_nls.model.meta.x0
4037
l_bound = reg_nls.model.meta.lvar
4138
u_bound = reg_nls.model.meta.uvar
@@ -63,7 +60,7 @@ function LMSolver(
6360
ψ =
6461
has_bnds ? shifted(reg_nls.h, xk, l_bound_m_x, u_bound_m_x, reg_nls.selected) :
6562
shifted(reg_nls.h, xk)
66-
63+
6764
jprod! = let nls = reg_nls.model
6865
(x, v, Jv) -> jprod_residual!(nls, x, v, Jv)
6966
end
@@ -82,7 +79,7 @@ function LMSolver(
8279
mν∇fk,
8380
Fk,
8481
Fkn,
85-
Jv,
82+
Jv,
8683
Jtv,
8784
ψ,
8885
xkn,
@@ -94,7 +91,7 @@ function LMSolver(
9491
u_bound_m_x,
9592
subsolver,
9693
subpb,
97-
substats
94+
substats,
9895
)
9996
end
10097

@@ -166,12 +163,7 @@ Notably, you can access, and modify, the following:
166163
- `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;
167164
- `stats.elapsed_time`: elapsed time in seconds.
168165
"""
169-
function LM(
170-
nls::AbstractNLSModel,
171-
h::H,
172-
options::ROSolverOptions;
173-
kwargs...,
174-
) where {H}
166+
function LM(nls::AbstractNLSModel, h::H, options::ROSolverOptions; kwargs...) where {H}
175167
kwargs_dict = Dict(kwargs...)
176168
selected = pop!(kwargs_dict, :selected, 1:(nls.meta.nvar))
177169
x0 = pop!(kwargs_dict, :x0, nls.meta.x0)
@@ -207,7 +199,7 @@ function SolverCore.solve!(
207199
solver::LMSolver{T, G, V},
208200
reg_nls::AbstractRegularizedNLPModel{T, V},
209201
stats::GenericExecutionStats{T, V};
210-
callback = (args...) -> nothing,
202+
callback = (args...) -> nothing,
211203
x::V = reg_nls.model.meta.x0,
212204
nonlinear::Bool = true,
213205
atol::T = eps(T),
@@ -344,19 +336,11 @@ function SolverCore.solve!(
344336
done = stats.status != :unknown
345337

346338
while !done
347-
348339
sub_atol = stats.iter == 0 ? 1.0e-3 : min(sqrt_ξ1_νInv ^ (1.5), sqrt_ξ1_νInv * 1e-3)
349340
solver.subpb.model.σ = σk
350341
isa(solver.subsolver, R2DHSolver) && (solver.subsolver.D.d[1] = 1/ν)
351342
if isa(solver.subsolver, R2Solver) #FIXME
352-
solve!(
353-
solver.subsolver,
354-
solver.subpb,
355-
solver.substats,
356-
x = s,
357-
atol = sub_atol,
358-
ν = ν,
359-
)
343+
solve!(solver.subsolver, solver.subpb, solver.substats, x = s, atol = sub_atol, ν = ν)
360344
else
361345
solve!(
362346
solver.subsolver,
@@ -402,7 +386,7 @@ function SolverCore.solve!(
402386
],
403387
colsep = 1,
404388
)
405-
389+
406390
if η1 ρk < Inf
407391
xk .= xkn
408392

@@ -473,24 +457,11 @@ function SolverCore.solve!(
473457
callback(nls, solver, stats)
474458

475459
done = stats.status != :unknown
476-
477460
end
478-
461+
479462
if verbose > 0 && stats.status == :first_order
480463
@info log_row(
481-
Any[
482-
stats.iter,
483-
0,
484-
fk,
485-
hk,
486-
sqrt_ξ1_νInv,
487-
ρk,
488-
σk,
489-
norm(xk),
490-
norm(s),
491-
1 / ν,
492-
"",
493-
],
464+
Any[stats.iter, 0, fk, hk, sqrt_ξ1_νInv, ρk, σk, norm(xk), norm(s), 1 / ν, ""],
494465
colsep = 1,
495466
)
496467
@info "LM: terminating with √(ξ1/ν) = $(sqrt_ξ1_νInv)"
@@ -499,4 +470,4 @@ function SolverCore.solve!(
499470
set_solution!(stats, xk)
500471
set_residuals!(stats, zero(T), sqrt_ξ1_νInv)
501472
return stats
502-
end
473+
end

0 commit comments

Comments
 (0)