Skip to content

Commit 539b228

Browse files
🤖 Format .jl files
1 parent a4f927b commit 539b228

File tree

7 files changed

+40
-63
lines changed

7 files changed

+40
-63
lines changed

src/LMTR_alg.jl

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ end
3232
function 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
)
8894
end
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
)
175175
end
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

src/LM_alg.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ mutable struct LMSolver{
3030
substats::GenericExecutionStats{T, V, V, T}
3131
end
3232

33-
function LMSolver(reg_nls::AbstractRegularizedNLPModel{T, V}; subsolver = R2Solver, m_monotone::Int = 1) where {T, V}
33+
function LMSolver(
34+
reg_nls::AbstractRegularizedNLPModel{T, V};
35+
subsolver = R2Solver,
36+
m_monotone::Int = 1,
37+
) where {T, V}
3438
x0 = reg_nls.model.meta.x0
3539
l_bound = reg_nls.model.meta.lvar
3640
u_bound = reg_nls.model.meta.uvar

src/R2N.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function R2NSolver(
4848
s = similar(x0)
4949
s1 = similar(x0)
5050

51-
v0 = [(-1.0)^i for i in 0:(reg_nlp.model.meta.nvar-1)]
51+
v0 = [(-1.0)^i for i = 0:(reg_nlp.model.meta.nvar - 1)]
5252
v0 ./= sqrt(reg_nlp.model.meta.nvar)
5353

5454
has_bnds = any(l_bound .!= T(-Inf)) || any(u_bound .!= T(Inf))

src/TR_alg.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ function TRSolver(
5959

6060
m_fh_hist = fill(T(-Inf), m_monotone - 1)
6161

62-
v0 = [(-1.0)^i for i in 0:(reg_nlp.model.meta.nvar-1)]
62+
v0 = [(-1.0)^i for i = 0:(reg_nlp.model.meta.nvar - 1)]
6363
v0 ./= sqrt(reg_nlp.model.meta.nvar)
6464

6565
ψ =

src/utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export RegularizedExecutionStats
22

33
import SolverCore.GenericExecutionStats
44

5-
function power_method!(B::M, v₀::S, v₁::S, max_iter::Int = 1) where{M, S}
5+
function power_method!(B::M, v₀::S, v₁::S, max_iter::Int = 1) where {M, S}
66
@assert max_iter >= 1 "max_iter must be at least 1."
77
mul!(v₁, B, v₀)
88
normalize!(v₁) # v1 = B*v0 / ‖B*v0‖
@@ -154,4 +154,4 @@ function get_status(
154154
else
155155
:unknown
156156
end
157-
end
157+
end

test/test_allocs.jl

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,8 @@ end
4242
# Test non allocating solve!
4343
@testset "NLP allocs" begin
4444
for (h, h_name) ((NormL0(λ), "l0"),)
45-
for (solver, solver_name) (
46-
(:R2Solver, "R2"),
47-
(:R2DHSolver, "R2DH"),
48-
(:R2NSolver, "R2N"),
49-
(:TRDHSolver, "TRDH"),
50-
)
45+
for (solver, solver_name)
46+
((:R2Solver, "R2"), (:R2DHSolver, "R2DH"), (:R2NSolver, "R2N"), (:TRDHSolver, "TRDH"))
5147
@testset "$(solver_name)" begin
5248
reg_nlp = RegularizedNLPModel(LBFGSModel(bpdn), h)
5349
solver = eval(solver)(reg_nlp)
@@ -92,15 +88,16 @@ end
9288

9389
@testset "NLS allocs" begin
9490
for (h, h_name) ((NormL0(λ), "l0"),)
95-
for (solver, solver_name) ((:LMTRSolver, "LMTR"), )
91+
for (solver, solver_name) ((:LMTRSolver, "LMTR"),)
9692
@testset "$(solver_name)" begin
9793
solver_name == "LMTR" && continue #FIXME
9894
reg_nlp = RegularizedNLPModel(bpdn_nls, h)
9995
solver = eval(solver)(reg_nlp)
10096
stats = RegularizedExecutionStats(reg_nlp)
101-
@test @wrappedallocs(solve!(solver, reg_nlp, stats, Δk = 1.0, atol = 1e-6, rtol = 1e-6)) == 0
97+
@test @wrappedallocs(solve!(solver, reg_nlp, stats, Δk = 1.0, atol = 1e-6, rtol = 1e-6)) ==
98+
0
10299
@test stats.status == :first_order
103100
end
104101
end
105102
end
106-
end
103+
end

test/test_bounds.jl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,7 @@ for (h, h_name) ∈ ((NormL0(λ), "l0"), (NormL1(λ), "l1"))
6060
@testset "bpdn-with-bounds-ls-LMTR-$(h_name)-TRDH" begin
6161
x0 = zeros(bpdn_nls2.meta.nvar)
6262
@test has_bounds(bpdn_nls2)
63-
LMTR_out = LMTR(
64-
bpdn_nls2,
65-
h,
66-
NormLinf(1.0),
67-
options,
68-
x0 = x0,
69-
subsolver = TRDHSolver,
70-
)
63+
LMTR_out = LMTR(bpdn_nls2, h, NormLinf(1.0), options, x0 = x0, subsolver = TRDHSolver)
7164
@test typeof(LMTR_out.solution) == typeof(bpdn.meta.x0)
7265
@test length(LMTR_out.solution) == bpdn.meta.nvar
7366
@test typeof(LMTR_out.dual_feas) == eltype(LMTR_out.solution)

0 commit comments

Comments
 (0)