From afdd274ee34b350873ff19f5910aab6c5ba0a8da Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Tue, 30 Sep 2025 08:42:17 -0400 Subject: [PATCH 1/5] Correct xi in SolverCore.solve! in LM and R2N solvers --- .gitignore | 1 + src/LM_alg.jl | 2 +- src/R2N.jl | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ba39cc53 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +Manifest.toml diff --git a/src/LM_alg.jl b/src/LM_alg.jl index aefbce48..792585df 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -300,7 +300,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) + ψ(d) + d -> obj(solver.subpb.model, d) - 1/2 * σk * dot(d, d) + ψ(d) end prox!(s, ψ, mν∇fk, ν) diff --git a/src/R2N.jl b/src/R2N.jl index 26a8eea0..57d16ca1 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -327,7 +327,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) + ψ(d)::T + d -> obj(solver.subpb.model, d) - 1/2 * σk * dot(d, d) + ψ(d)::T end prox!(s1, ψ, mν∇fk, ν₁) From cc03f69eb89d353b8c5ddb418a6a62f4fce97688 Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Tue, 30 Sep 2025 10:48:39 -0400 Subject: [PATCH 2/5] Fix regularization parameter reference in SolverCore.solve! for LM and R2N solvers --- src/LM_alg.jl | 2 +- src/R2N.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/LM_alg.jl b/src/LM_alg.jl index 792585df..3dbf1dda 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -300,7 +300,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) - 1/2 * σk * dot(d, d) + ψ(d) + d -> obj(solver.subpb.model, d) - 1/2 * solver.subpb.model.σ * dot(d, d) + ψ(d) end prox!(s, ψ, mν∇fk, ν) diff --git a/src/R2N.jl b/src/R2N.jl index 57d16ca1..39e362e8 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -327,7 +327,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) - 1/2 * σk * dot(d, d) + ψ(d)::T + d -> obj(solver.subpb.model, d) - 1/2 * solver.subpb.model.σ * dot(d, d) + ψ(d)::T end prox!(s1, ψ, mν∇fk, ν₁) From 36299df405121d27b635a8bba12114c80bc01dc6 Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Tue, 30 Sep 2025 14:51:41 -0400 Subject: [PATCH 3/5] Fix regularization parameter initialization in LMSolver and R2NSolver --- src/LM_alg.jl | 4 ++-- src/R2N.jl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/LM_alg.jl b/src/LM_alg.jl index 3dbf1dda..c4f07cbe 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -66,7 +66,7 @@ function LMSolver( shifted(reg_nls.h, xk) Jk = jac_op_residual(reg_nls.model, xk) - sub_nlp = LMModel(Jk, Fk, T(1), xk) + sub_nlp = LMModel(Jk, Fk, T(0), xk) subpb = RegularizedNLPModel(sub_nlp, ψ) substats = RegularizedExecutionStats(subpb) subsolver = subsolver(subpb) @@ -300,7 +300,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) - 1/2 * solver.subpb.model.σ * dot(d, d) + ψ(d) + d -> obj(solver.subpb.model, d) - solver.subpb.model.σ * dot(d, d) / 2 + ψ(d) end prox!(s, ψ, mν∇fk, ν) diff --git a/src/R2N.jl b/src/R2N.jl index 39e362e8..058d012c 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -68,7 +68,7 @@ function R2NSolver( shifted(reg_nlp.h, xk) Bk = hess_op(reg_nlp.model, x0) - sub_nlp = R2NModel(Bk, ∇fk, T(1), x0) + sub_nlp = R2NModel(Bk, ∇fk, T(0), x0) subpb = RegularizedNLPModel(sub_nlp, ψ) substats = RegularizedExecutionStats(subpb) subsolver = subsolver(subpb) @@ -327,7 +327,7 @@ function SolverCore.solve!( end mk = let ψ = ψ, solver = solver - d -> obj(solver.subpb.model, d) - 1/2 * solver.subpb.model.σ * dot(d, d) + ψ(d)::T + d -> obj(solver.subpb.model, d) - solver.subpb.model.σ * dot(d, d) / 2 + ψ(d)::T end prox!(s1, ψ, mν∇fk, ν₁) From 449b93040b93dd992a2283288726fa1c3a78cbb2 Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Tue, 30 Sep 2025 16:02:56 -0400 Subject: [PATCH 4/5] Remove redundant assignment of regularization parameter in SolverCore.solve! for LM and R2N solvers --- src/LM_alg.jl | 2 +- src/R2N.jl | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/LM_alg.jl b/src/LM_alg.jl index c4f07cbe..40eb0176 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -331,7 +331,7 @@ function SolverCore.solve!( while !done sub_atol = stats.iter == 0 ? 1.0e-3 : min(sqrt_ξ1_νInv ^ (1.5), sqrt_ξ1_νInv * 1e-3) - solver.subpb.model.σ = σk + isa(solver.subsolver, R2DHSolver) && (solver.subsolver.D.d[1] = 1/ν) if isa(solver.subsolver, R2Solver) #FIXME solve!(solver.subsolver, solver.subpb, solver.substats, x = s, atol = sub_atol, ν = ν) diff --git a/src/R2N.jl b/src/R2N.jl index 058d012c..ae766fe8 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -361,7 +361,6 @@ function SolverCore.solve!( while !done sub_atol = stats.iter == 0 ? 1.0e-3 : min(sqrt_ξ1_νInv ^ (1.5), sqrt_ξ1_νInv * 1e-3) - solver.subpb.model.σ = σk isa(solver.subsolver, R2DHSolver) && (solver.subsolver.D.d[1] = 1/ν₁) if isa(solver.subsolver, R2Solver) #FIXME solve!( From 7b4748cb8843a0bc713179796f820ab6c6b70b7b Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Tue, 30 Sep 2025 16:24:35 -0400 Subject: [PATCH 5/5] =?UTF-8?q?Set=20regularization=20parameter=20=CF=83?= =?UTF-8?q?=20in=20SolverCore.solve!=20for=20LMSolver=20and=20R2NSolver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/LM_alg.jl | 2 +- src/R2N.jl | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/LM_alg.jl b/src/LM_alg.jl index 40eb0176..c4f07cbe 100644 --- a/src/LM_alg.jl +++ b/src/LM_alg.jl @@ -331,7 +331,7 @@ function SolverCore.solve!( while !done sub_atol = stats.iter == 0 ? 1.0e-3 : min(sqrt_ξ1_νInv ^ (1.5), sqrt_ξ1_νInv * 1e-3) - + solver.subpb.model.σ = σk isa(solver.subsolver, R2DHSolver) && (solver.subsolver.D.d[1] = 1/ν) if isa(solver.subsolver, R2Solver) #FIXME solve!(solver.subsolver, solver.subpb, solver.substats, x = s, atol = sub_atol, ν = ν) diff --git a/src/R2N.jl b/src/R2N.jl index ae766fe8..058d012c 100644 --- a/src/R2N.jl +++ b/src/R2N.jl @@ -361,6 +361,7 @@ function SolverCore.solve!( while !done sub_atol = stats.iter == 0 ? 1.0e-3 : min(sqrt_ξ1_νInv ^ (1.5), sqrt_ξ1_νInv * 1e-3) + solver.subpb.model.σ = σk isa(solver.subsolver, R2DHSolver) && (solver.subsolver.D.d[1] = 1/ν₁) if isa(solver.subsolver, R2Solver) #FIXME solve!(