Skip to content

Commit eb9ffc8

Browse files
Add prox_evals
1 parent 33cce72 commit eb9ffc8

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

src/LM_alg.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ function SolverCore.solve!(
255255

256256
local ξ1::T
257257
local ρk::T = zero(T)
258+
local prox_evals::Int = 0
258259

259260
residual!(nls, xk, Fk)
260261
jtprod_residual!(nls, xk, Fk, ∇fk)
@@ -273,6 +274,7 @@ function SolverCore.solve!(
273274
set_objective!(stats, fk + hk)
274275
set_solver_specific!(stats, :smooth_obj, fk)
275276
set_solver_specific!(stats, :nonsmooth_obj, hk)
277+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
276278

277279
φ1 = let Fk = Fk, ∇fk = ∇fk
278280
d -> dot(Fk, Fk) / 2 + dot(∇fk, d) # ∇fk = Jk^T Fk
@@ -329,6 +331,7 @@ function SolverCore.solve!(
329331
)
330332
end
331333

334+
prox_evals += solver.substats.iter
332335
s .= solver.substats.solution
333336

334337
xkn .= xk .+ s
@@ -402,6 +405,7 @@ function SolverCore.solve!(
402405
set_solver_specific!(stats, :nonsmooth_obj, hk)
403406
set_iter!(stats, stats.iter + 1)
404407
set_time!(stats, time() - start_time)
408+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
405409

406410
ν = θ / (σmax^2 + σk) # ‖J'J + σₖ I‖ = ‖J‖² + σₖ
407411

src/R2N.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ function SolverCore.solve!(
291291

292292
local ξ1::T
293293
local ρk::T = zero(T)
294+
local prox_evals::Int = 0
294295

295296
fk = obj(nlp, xk)
296297
grad!(nlp, xk, ∇fk)
@@ -317,6 +318,7 @@ function SolverCore.solve!(
317318
set_solver_specific!(stats, :nonsmooth_obj, hk)
318319
set_solver_specific!(stats, :sigma, σk)
319320
set_solver_specific!(stats, :sigma_cauchy, 1/ν₁)
321+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
320322
m_monotone > 1 && (m_fh_hist[stats.iter % (m_monotone - 1) + 1] = fk + hk)
321323

322324
φ1 = let ∇fk = ∇fk
@@ -386,6 +388,7 @@ function SolverCore.solve!(
386388
)
387389
end
388390

391+
prox_evals += solver.substats.iter
389392
s .= solver.substats.solution
390393

391394
if norm(s) > β * norm(s1)
@@ -470,6 +473,7 @@ function SolverCore.solve!(
470473
set_solver_specific!(stats, :sigma_cauchy, 1/ν₁)
471474
set_iter!(stats, stats.iter + 1)
472475
set_time!(stats, time() - start_time)
476+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
473477

474478
@. mν∇fk = - ν₁ * ∇fk
475479
prox!(s1, ψ, mν∇fk, ν₁)

src/TR_alg.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ function SolverCore.solve!(
266266

267267
local ξ1::T
268268
local ρk = zero(T)
269+
local prox_evals::Int = 0
269270

270271
α = 1 / eps(T)
271272
β = 1 / eps(T)
@@ -291,6 +292,7 @@ function SolverCore.solve!(
291292
set_objective!(stats, fk + hk)
292293
set_solver_specific!(stats, :smooth_obj, fk)
293294
set_solver_specific!(stats, :nonsmooth_obj, hk)
295+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
294296

295297
# models
296298
φ1 = let ∇fk = ∇fk
@@ -369,7 +371,8 @@ function SolverCore.solve!(
369371
)
370372
end
371373
end
372-
374+
375+
prox_evals += solver.substats.iter
373376
s .= solver.substats.solution
374377

375378
xkn .= xk .+ s
@@ -454,6 +457,7 @@ function SolverCore.solve!(
454457
set_solver_specific!(stats, :nonsmooth_obj, hk)
455458
set_iter!(stats, stats.iter + 1)
456459
set_time!(stats, time() - start_time)
460+
set_solver_specific!(stats, :prox_evals, prox_evals + 1)
457461

458462
ν₁ = α * Δk / (1 + λmax ** Δk + 1))
459463
@. mν∇fk = -ν₁ * ∇fk

0 commit comments

Comments
 (0)