Skip to content

Commit 8202046

Browse files
apply julia formatter
1 parent b77a5a3 commit 8202046

File tree

2 files changed

+75
-102
lines changed

2 files changed

+75
-102
lines changed

src/TRDH_alg.jl

Lines changed: 39 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ mutable struct TRDHSolver{
77
G <: ShiftedProximableFunction,
88
V <: AbstractVector{T},
99
QN <: AbstractDiagonalQuasiNewtonOperator{T},
10-
N
10+
N,
1111
} <: AbstractOptimizationSolver
1212
xk::V
1313
∇fk::V
@@ -29,7 +29,7 @@ end
2929
function TRDHSolver(
3030
reg_nlp::AbstractRegularizedNLPModel{T, V};
3131
D::Union{Nothing, AbstractDiagonalQuasiNewtonOperator} = nothing,
32-
χ = NormLinf(one(T))
32+
χ = NormLinf(one(T)),
3333
) where {T, V}
3434
x0 = reg_nlp.model.meta.x0
3535
l_bound = reg_nlp.model.meta.lvar
@@ -191,7 +191,7 @@ function TRDH(
191191
γ = options.γ,
192192
α = options.α,
193193
β = options.β,
194-
kwargs_dict...
194+
kwargs_dict...,
195195
)
196196
return stats
197197
end
@@ -227,7 +227,7 @@ function TRDH(
227227
γ = options.γ,
228228
α = options.α,
229229
β = options.β,
230-
kwargs...
230+
kwargs...,
231231
)
232232
return stats.solution, stats.iter, stats
233233
end
@@ -261,10 +261,10 @@ function SolverCore.solve!(
261261
η2::T = T(0.9),
262262
γ::T = T(3),
263263
α::T = 1 / eps(T),
264-
β::T = 1 / eps(T)
264+
β::T = 1 / eps(T),
265265
) where {T, G, V}
266266
reset!(stats)
267-
267+
268268
# Retrieve workspace
269269
selected = reg_nlp.selected
270270
h = reg_nlp.h
@@ -363,18 +363,18 @@ function SolverCore.solve!(
363363

364364
φ = let ∇fk = ∇fk, dk = dk
365365
d -> begin
366-
result = zero(T)
367-
n = length(d)
368-
@inbounds for i = 1:n
369-
result += d[i]^2 * dk[i] / 2 + ∇fk[i] * d[i]
370-
end
371-
result
366+
result = zero(T)
367+
n = length(d)
368+
@inbounds for i = 1:n
369+
result += d[i]^2 * dk[i] / 2 + ∇fk[i] * d[i]
370+
end
371+
result
372372
end
373373
end
374374
mk = let ψ = ψ
375-
d -> φ(d) + ψ(d)::T
375+
d -> φ(d) + ψ(d)::T
376376
end
377-
377+
378378
if reduce_TR
379379
prox!(s, ψ, mν∇fk, ν)
380380
mks = mk1(s)
@@ -396,17 +396,17 @@ function SolverCore.solve!(
396396
else
397397
set_radius!(ψ, Δ_effective)
398398
end
399-
399+
400400
iprox!(s, ψ, ∇fk, dk)
401401
ξ = hk - mk(s) + max(1, abs(hk)) * 10 * eps()
402402
sNorm = χ(s)
403403

404404
if !reduce_TR
405-
sqrt_ξ_νInv = ξ 0 ? sqrt/ ν) : sqrt(-ξ / ν)
406-
solved =< 0 && sqrt_ξ_νInv neg_tol) || 0 && sqrt_ξ_νInv < atol)
407-
< 0 && sqrt_ξ_νInv > neg_tol) &&
405+
sqrt_ξ_νInv = ξ 0 ? sqrt/ ν) : sqrt(-ξ / ν)
406+
solved =< 0 && sqrt_ξ_νInv neg_tol) || 0 && sqrt_ξ_νInv < atol)
407+
< 0 && sqrt_ξ_νInv > neg_tol) &&
408408
error("TRDH: prox-gradient step should produce a decrease but ξ = $(ξ)")
409-
atol += rtol * sqrt_ξ_νInv # make stopping test absolute and relative #TODO : this is redundant code with the other case of the test.
409+
atol += rtol * sqrt_ξ_νInv # make stopping test absolute and relative #TODO : this is redundant code with the other case of the test.
410410
end
411411

412412
set_status!(
@@ -428,7 +428,6 @@ function SolverCore.solve!(
428428
done = stats.status != :unknown
429429

430430
while !done
431-
432431
xkn .= xk .+ s
433432
fkn = obj(nlp, xkn)
434433
hkn = @views h(xkn[selected])
@@ -453,7 +452,7 @@ function SolverCore.solve!(
453452
],
454453
colsep = 1,
455454
)
456-
455+
457456
if η1 ρk < Inf
458457
xk .= xkn
459458
if has_bnds
@@ -494,7 +493,7 @@ function SolverCore.solve!(
494493

495494
ν = reduce_TR ?* Δk)/(DNorm + one(T)) : α / (DNorm + one(T))
496495
mν∇fk .= -ν .* ∇fk
497-
496+
498497
if reduce_TR
499498
prox!(s, ψ, mν∇fk, ν)
500499
ξ1 = hk - mk1(s) + max(1, abs(hk)) * 10 * eps()
@@ -503,54 +502,43 @@ function SolverCore.solve!(
503502
(ξ1 < 0 && sqrt_ξ_νInv > neg_tol) &&
504503
error("TRDH: prox-gradient step should produce a decrease but ξ = $(ξ)")
505504
end
506-
505+
507506
iprox!(s, ψ, ∇fk, dk)
508507

509508
sNorm = χ(s)
510509

511510
if !reduce_TR
512-
ξ = hk - mk(s) + max(1, abs(hk)) * 10 * eps()
511+
ξ = hk - mk(s) + max(1, abs(hk)) * 10 * eps()
513512
sqrt_ξ_νInv = ξ 0 ? sqrt/ ν) : sqrt(-ξ / ν)
514513
solved =< 0 && sqrt_ξ_νInv neg_tol) || 0 && sqrt_ξ_νInv < atol)
515514
< 0 && sqrt_ξ_νInv > neg_tol) &&
516515
error("TRDH: prox-gradient step should produce a decrease but ξ = $(ξ)")
517516
end
518517

519518
set_status!(
520-
stats,
521-
get_status(
522-
reg_nlp,
523-
elapsed_time = stats.elapsed_time,
524-
iter = stats.iter,
525-
optimal = solved,
526-
improper = improper,
527-
max_eval = max_eval,
528-
max_time = max_time,
529-
max_iter = max_iter,
519+
stats,
520+
get_status(
521+
reg_nlp,
522+
elapsed_time = stats.elapsed_time,
523+
iter = stats.iter,
524+
optimal = solved,
525+
improper = improper,
526+
max_eval = max_eval,
527+
max_time = max_time,
528+
max_iter = max_iter,
530529
),
531530
)
532531

533-
callback(nlp, solver, stats)
532+
callback(nlp, solver, stats)
534533

535-
done = stats.status != :unknown
534+
done = stats.status != :unknown
536535
end
537536

538537
if verbose > 0 && stats.status == :first_order
539538
@info log_row(
540-
Any[
541-
stats.iter,
542-
fk,
543-
hk,
544-
sqrt_ξ_νInv,
545-
ρk,
546-
Δk,
547-
χ(xk),
548-
sNorm,
549-
norm(D.d),
550-
"",
551-
],
552-
colsep = 1,
553-
)
539+
Any[stats.iter, fk, hk, sqrt_ξ_νInv, ρk, Δk, χ(xk), sNorm, norm(D.d), ""],
540+
colsep = 1,
541+
)
554542
@info "TRDH: terminating with √(ξ/ν) = $(sqrt_ξ_νInv)"
555543
end
556544

@@ -568,4 +556,4 @@ function update_bounds!(l_bound_k, u_bound_k, is_subsolver, l_bound, u_bound, xk
568556
@. l_bound_k = max(-Δ, l_bound - xk)
569557
@. u_bound_k = min(Δ, u_bound - xk)
570558
end
571-
end
559+
end

src/TR_alg.jl

Lines changed: 36 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ mutable struct TRSolver{
88
V <: AbstractVector{T},
99
N,
1010
ST <: AbstractOptimizationSolver,
11-
PB <: AbstractRegularizedNLPModel
11+
PB <: AbstractRegularizedNLPModel,
1212
} <: AbstractOptimizationSolver
1313
xk::V
1414
∇fk::V
@@ -31,7 +31,7 @@ end
3131
function TRSolver(
3232
reg_nlp::AbstractRegularizedNLPModel{T, V};
3333
χ::X = NormLinf(one(T)),
34-
subsolver = R2Solver
34+
subsolver = R2Solver,
3535
) where {T, V, X}
3636
x0 = reg_nlp.model.meta.x0
3737
l_bound = reg_nlp.model.meta.lvar
@@ -55,7 +55,8 @@ function TRSolver(
5555
end
5656

5757
ψ =
58-
has_bnds || subsolver == TRDHSolver ? shifted(reg_nlp.h, xk, l_bound_m_x, u_bound_m_x, reg_nlp.selected) :
58+
has_bnds || subsolver == TRDHSolver ?
59+
shifted(reg_nlp.h, xk, l_bound_m_x, u_bound_m_x, reg_nlp.selected) :
5960
shifted(reg_nlp.h, xk, T(1), χ)
6061

6162
Bk = hess_op(reg_nlp.model, x0)
@@ -161,7 +162,7 @@ function TR(
161162
x0::AbstractVector{R} = f.meta.x0,
162163
subsolver_options = ROSolverOptions(ϵa = options.ϵa),
163164
selected::AbstractVector{<:Integer} = 1:(f.meta.nvar),
164-
kwargs...
165+
kwargs...,
165166
) where {H, X, R}
166167
reg_nlp = RegularizedNLPModel(f, h, selected)
167168
stats = TR(
@@ -180,15 +181,12 @@ function TR(
180181
γ = options.γ,
181182
α = options.α,
182183
β = options.β,
183-
kwargs...
184+
kwargs...,
184185
)
185186
return stats
186187
end
187188

188-
function TR(
189-
reg_nlp::AbstractRegularizedNLPModel{T, V};
190-
kwargs...
191-
) where{T, V}
189+
function TR(reg_nlp::AbstractRegularizedNLPModel{T, V}; kwargs...) where {T, V}
192190
kwargs_dict = Dict(kwargs...)
193191
subsolver = pop!(kwargs_dict, :subsolver, R2Solver)
194192
χ = pop!(kwargs_dict, , NormLinf(one(T)))
@@ -217,10 +215,10 @@ function SolverCore.solve!(
217215
η2::T = T(0.9),
218216
γ::T = T(3),
219217
α::T = 1 / eps(T),
220-
β::T = 1 / eps(T)
218+
β::T = 1 / eps(T),
221219
) where {T, G, V}
222220
reset!(stats)
223-
221+
224222
# Retrieve workspace
225223
selected = reg_nlp.selected
226224
h = reg_nlp.h
@@ -355,7 +353,6 @@ function SolverCore.solve!(
355353
done = stats.status != :unknown
356354

357355
while !done
358-
359356
sub_atol = stats.iter == 0 ? 1e-5 : max(sub_atol, min(1e-2, sqrt_ξ1_νInv))
360357
∆_effective = min* χ(s), Δk)
361358

@@ -374,21 +371,21 @@ function SolverCore.solve!(
374371
if isa(solver.subsolver, TRDHSolver) #FIXME
375372
solver.subsolver.D.d[1] = 1/ν₁
376373
solve!(
377-
solver.subsolver,
378-
solver.subpb,
379-
solver.substats;
380-
x = s,
374+
solver.subsolver,
375+
solver.subpb,
376+
solver.substats;
377+
x = s,
381378
atol = stats.iter == 0 ? 1e-5 : max(sub_atol, min(1e-2, sqrt_ξ1_νInv)),
382-
Δk = ∆_effective / 10
383-
)
384-
else
379+
Δk = ∆_effective / 10,
380+
)
381+
else
385382
solve!(
386-
solver.subsolver,
387-
solver.subpb,
388-
solver.substats;
389-
x = s,
383+
solver.subsolver,
384+
solver.subpb,
385+
solver.substats;
386+
x = s,
390387
atol = stats.iter == 0 ? 1e-5 : max(sub_atol, min(1e-2, sqrt_ξ1_νInv)),
391-
ν = ν₁,
388+
ν = ν₁,
392389
)
393390
end
394391

@@ -426,7 +423,7 @@ function SolverCore.solve!(
426423
],
427424
colsep = 1,
428425
)
429-
426+
430427
if η2 ρk < Inf
431428
Δk = max(Δk, γ * sNorm)
432429
if !(has_bnds || isa(solver.subsolver, TRDHSolver))
@@ -487,7 +484,7 @@ function SolverCore.solve!(
487484

488485
ν₁ = α * Δk / (1 + λmax ** Δk + 1))
489486
@. mν∇fk = -ν₁ * ∇fk
490-
487+
491488
prox!(s, ψ, mν∇fk, ν₁)
492489
ξ1 = hk - mk1(s) + max(1, abs(hk)) * 10 * eps()
493490
sqrt_ξ1_νInv = sqrt(ξ1 / ν₁)
@@ -497,16 +494,16 @@ function SolverCore.solve!(
497494
error("TR: prox-gradient step should produce a decrease but ξ1 = $(ξ1)")
498495

499496
set_status!(
500-
stats,
501-
get_status(
502-
reg_nlp,
503-
elapsed_time = stats.elapsed_time,
504-
iter = stats.iter,
505-
optimal = solved,
506-
improper = improper,
507-
max_eval = max_eval,
508-
max_time = max_time,
509-
max_iter = max_iter,
497+
stats,
498+
get_status(
499+
reg_nlp,
500+
elapsed_time = stats.elapsed_time,
501+
iter = stats.iter,
502+
optimal = solved,
503+
improper = improper,
504+
max_eval = max_eval,
505+
max_time = max_time,
506+
max_iter = max_iter,
510507
),
511508
)
512509

@@ -516,21 +513,9 @@ function SolverCore.solve!(
516513
end
517514
if verbose > 0 && stats.status == :first_order
518515
@info log_row(
519-
Any[
520-
stats.iter,
521-
solver.substats.iter,
522-
fk,
523-
hk,
524-
sqrt_ξ1_νInv,
525-
ρk,
526-
Δk,
527-
χ(xk),
528-
χ(s),
529-
λmax,
530-
"",
531-
],
532-
colsep = 1,
533-
)
516+
Any[stats.iter, solver.substats.iter, fk, hk, sqrt_ξ1_νInv, ρk, Δk, χ(xk), χ(s), λmax, ""],
517+
colsep = 1,
518+
)
534519
@info "TR: terminating with √(ξ1/ν) = $(sqrt_ξ1_νInv)"
535520
end
536521
end

0 commit comments

Comments
 (0)