Skip to content

Commit baff8c7

Browse files
R2N: compute opnorm for hessian in sparseCOO format
1 parent 8bfec10 commit baff8c7

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

src/R2N.jl

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -304,17 +304,13 @@ function SolverCore.solve!(
304304
λmax::T = T(1)
305305
if !solver.store_h
306306
solver.subpb.model.B = hess_op(nlp, xk)
307-
else
308-
hess_coord!(nlp, xk, solver.subpb.model.B.vals)
309-
end
310-
311-
if opnorm_maxiter 0
312307
λmax, found_λ = opnorm(solver.subpb.model.B)
308+
found_λ || error("operator norm computation failed")
313309
else
314-
λmax = power_method!(solver.subpb.model.B, solver.v0, solver.subpb.model.v, opnorm_maxiter)
310+
hess_coord!(nlp, xk, solver.subpb.model.B.vals)
311+
λmax = opnorm(solver.subpb.model.B)
315312
end
316-
found_λ || error("operator norm computation failed")
317-
313+
318314
ν₁ = θ / (λmax + σk)
319315

320316
sqrt_ξ1_νInv = one(T)
@@ -461,16 +457,14 @@ function SolverCore.solve!(
461457
end
462458
if !solver.store_h
463459
solver.subpb.model.B = hess_op(nlp, xk)
464-
else
465-
hess_coord!(nlp, xk, solver.subpb.model.B.vals)
466-
end
467-
468-
if opnorm_maxiter 0
469460
λmax, found_λ = opnorm(solver.subpb.model.B)
461+
found_λ || error("operator norm computation failed")
470462
else
471-
λmax = power_method!(solver.subpb.model.B, solver.v0, solver.subpb.model.v, opnorm_maxiter)
463+
hess_coord!(nlp, xk, solver.subpb.model.B.vals)
464+
λmax = opnorm(solver.subpb.model.B)
472465
end
473-
found_λ || error("operator norm computation failed")
466+
467+
∇fk⁻ .= ∇fk
474468
end
475469

476470
if η2 ρk < Inf

0 commit comments

Comments
 (0)