Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/LM_alg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ function SolverCore.solve!(

local ξ1::T
local ρk::T = zero(T)
local prox_evals::Int = 0

residual!(nls, xk, Fk)
jtprod_residual!(nls, xk, Fk, ∇fk)
Expand All @@ -273,6 +274,7 @@ function SolverCore.solve!(
set_objective!(stats, fk + hk)
set_solver_specific!(stats, :smooth_obj, fk)
set_solver_specific!(stats, :nonsmooth_obj, hk)
set_solver_specific!(stats, :prox_evals, prox_evals + 1)

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

prox_evals += solver.substats.iter
s .= solver.substats.solution

xkn .= xk .+ s
Expand Down Expand Up @@ -402,6 +405,7 @@ function SolverCore.solve!(
set_solver_specific!(stats, :nonsmooth_obj, hk)
set_iter!(stats, stats.iter + 1)
set_time!(stats, time() - start_time)
set_solver_specific!(stats, :prox_evals, prox_evals + 1)

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

Expand Down
4 changes: 4 additions & 0 deletions src/R2N.jl
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,7 @@ function SolverCore.solve!(

local ξ1::T
local ρk::T = zero(T)
local prox_evals::Int = 0

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

φ1 = let ∇fk = ∇fk
Expand Down Expand Up @@ -386,6 +388,7 @@ function SolverCore.solve!(
)
end

prox_evals += solver.substats.iter
s .= solver.substats.solution

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

@. mν∇fk = - ν₁ * ∇fk
prox!(s1, ψ, mν∇fk, ν₁)
Expand Down
6 changes: 5 additions & 1 deletion src/TR_alg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ function SolverCore.solve!(

local ξ1::T
local ρk = zero(T)
local prox_evals::Int = 0

α = 1 / eps(T)
β = 1 / eps(T)
Expand All @@ -291,6 +292,7 @@ function SolverCore.solve!(
set_objective!(stats, fk + hk)
set_solver_specific!(stats, :smooth_obj, fk)
set_solver_specific!(stats, :nonsmooth_obj, hk)
set_solver_specific!(stats, :prox_evals, prox_evals + 1)

# models
φ1 = let ∇fk = ∇fk
Expand Down Expand Up @@ -369,7 +371,8 @@ function SolverCore.solve!(
)
end
end


prox_evals += solver.substats.iter
s .= solver.substats.solution

xkn .= xk .+ s
Expand Down Expand Up @@ -454,6 +457,7 @@ function SolverCore.solve!(
set_solver_specific!(stats, :nonsmooth_obj, hk)
set_iter!(stats, stats.iter + 1)
set_time!(stats, time() - start_time)
set_solver_specific!(stats, :prox_evals, prox_evals + 1)

ν₁ = α * Δk / (1 + λmax * (α * Δk + 1))
@. mν∇fk = -ν₁ * ∇fk
Expand Down
1 change: 1 addition & 0 deletions src/utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -114,5 +114,6 @@ function RegularizedExecutionStats(reg_nlp::AbstractRegularizedNLPModel{T, V}) w
set_solver_specific!(stats, :sigma, T(Inf))
set_solver_specific!(stats, :sigma_cauchy, T(Inf))
set_solver_specific!(stats, :radius, T(Inf))
set_solver_specific!(stats, :prox_evals, T(Inf))
return stats
end
Loading