From 5c638969b5772c804748df3cbdb07bc281945be4 Mon Sep 17 00:00:00 2001 From: Dominique Orban Date: Sat, 7 Oct 2023 18:33:38 -0400 Subject: [PATCH 1/7] =?UTF-8?q?TR:=20fix=20definition=20of=20=CE=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/TR_alg.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 9fc15f9d..921cec4a 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -132,8 +132,7 @@ function TR( Bk = hess_op(f, xk) λmax = opnorm(Bk) - νInv = (1 + θ) * λmax - ν = 1 / (νInv + 1 / (Δk * α)) + ν = 1 / (λmax + 1 / (Δk * α)) sqrt_ξ1_νInv = one(R) optimal = false @@ -216,7 +215,7 @@ function TR( if (verbose > 0) && (k % ptf == 0) #! format: off - @info @sprintf "%6d %8d %8.1e %8.1e %7.1e %7.1e %8.1e %7.1e %7.1e %7.1e %7.1e %1s" k iter fk hk sqrt_ξ1_νInv sqrt(ξ) ρk ∆_effective χ(xk) sNorm νInv TR_stat + @info @sprintf "%6d %8d %8.1e %8.1e %7.1e %7.1e %8.1e %7.1e %7.1e %7.1e %7.1e %1s" k iter fk hk sqrt_ξ1_νInv sqrt(ξ) ρk ∆_effective χ(xk) sNorm λmax TR_stat #! format: on end @@ -241,7 +240,6 @@ function TR( end Bk = hess_op(f, xk) λmax = opnorm(Bk) - νInv = (1 + θ) * λmax ∇fk⁻ .= ∇fk end @@ -250,7 +248,7 @@ function TR( (has_bounds(f) || subsolver == TRDH) ? set_bounds!(ψ, max.(-Δk, l_bound - xk), min.(Δk, u_bound - xk)) : set_radius!(ψ, Δk) end - ν = 1 / (νInv + 1 / (Δk * α)) + ν = 1 / (λmax + 1 / (Δk * α)) tired = k ≥ maxIter || elapsed_time > maxTime end @@ -259,7 +257,7 @@ function TR( @info @sprintf "%6d %8s %8.1e %8.1e" k "" fk hk elseif optimal #! format: off - @info @sprintf "%6d %8d %8.1e %8.1e %7.1e %7.1e %8s %7.1e %7.1e %7.1e %7.1e" k 1 fk hk sqrt_ξ1_νInv sqrt(ξ1) "" Δk χ(xk) χ(s) νInv + @info @sprintf "%6d %8d %8.1e %8.1e %7.1e %7.1e %8s %7.1e %7.1e %7.1e %7.1e" k 1 fk hk sqrt_ξ1_νInv sqrt(ξ1) "" Δk χ(xk) χ(s) λmax #! format: on @info "TR: terminating with √(ξ1/ν) = $(sqrt_ξ1_νInv)" end From f741e8cfee78f830d925fbd6b5ddfca182fe6885 Mon Sep 17 00:00:00 2001 From: Dominique Orban Date: Wed, 1 Nov 2023 09:42:32 -0400 Subject: [PATCH 2/7] steplength to safeguard against unbounded Hessian --- src/TR_alg.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 921cec4a..a2f970b0 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -132,7 +132,8 @@ function TR( Bk = hess_op(f, xk) λmax = opnorm(Bk) - ν = 1 / (λmax + 1 / (Δk * α)) + αΔ = α * Δk + ν = αΔ / (1 + λmax * (1 + αΔ)) sqrt_ξ1_νInv = one(R) optimal = false From 332e62b159f7076f385238404b5f187629faf107 Mon Sep 17 00:00:00 2001 From: Dominique Date: Mon, 6 Nov 2023 17:32:18 -0500 Subject: [PATCH 3/7] Update src/TR_alg.jl Co-authored-by: geoffroyleconte <47035783+geoffroyleconte@users.noreply.github.com> --- src/TR_alg.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index a2f970b0..feb9505a 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -249,7 +249,8 @@ function TR( (has_bounds(f) || subsolver == TRDH) ? set_bounds!(ψ, max.(-Δk, l_bound - xk), min.(Δk, u_bound - xk)) : set_radius!(ψ, Δk) end - ν = 1 / (λmax + 1 / (Δk * α)) + αΔ = α * Δk + ν = αΔ / (1 + λmax * (1 + αΔ)) tired = k ≥ maxIter || elapsed_time > maxTime end From b7675a876eb3540e8c37f126f451344079be9061 Mon Sep 17 00:00:00 2001 From: Dominique Date: Mon, 13 Nov 2023 17:19:06 -0500 Subject: [PATCH 4/7] Update src/TR_alg.jl Co-authored-by: geoffroyleconte <47035783+geoffroyleconte@users.noreply.github.com> --- src/TR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index feb9505a..f3e4946e 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -132,7 +132,7 @@ function TR( Bk = hess_op(f, xk) λmax = opnorm(Bk) - αΔ = α * Δk + α⁻¹Δ⁻¹ = 1 / (α * Δk) ν = αΔ / (1 + λmax * (1 + αΔ)) sqrt_ξ1_νInv = one(R) From 11551e9e519369e4e68b66b21a8565cdb0a30937 Mon Sep 17 00:00:00 2001 From: Dominique Date: Mon, 13 Nov 2023 17:19:13 -0500 Subject: [PATCH 5/7] Update src/TR_alg.jl Co-authored-by: geoffroyleconte <47035783+geoffroyleconte@users.noreply.github.com> --- src/TR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index f3e4946e..4172933b 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -133,7 +133,7 @@ function TR( λmax = opnorm(Bk) α⁻¹Δ⁻¹ = 1 / (α * Δk) - ν = αΔ / (1 + λmax * (1 + αΔ)) + ν = 1 / (α⁻¹Δ⁻¹ + λmax * (α⁻¹Δ⁻¹ + 1)) sqrt_ξ1_νInv = one(R) optimal = false From fe0c1f4a9e0c6a5dfa2382c026cf3a22a7c8b13f Mon Sep 17 00:00:00 2001 From: Dominique Date: Mon, 13 Nov 2023 17:19:21 -0500 Subject: [PATCH 6/7] Update src/TR_alg.jl Co-authored-by: geoffroyleconte <47035783+geoffroyleconte@users.noreply.github.com> --- src/TR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 4172933b..7cdddebb 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -249,7 +249,7 @@ function TR( (has_bounds(f) || subsolver == TRDH) ? set_bounds!(ψ, max.(-Δk, l_bound - xk), min.(Δk, u_bound - xk)) : set_radius!(ψ, Δk) end - αΔ = α * Δk + α⁻¹Δ⁻¹ = 1 / (α * Δk) ν = αΔ / (1 + λmax * (1 + αΔ)) tired = k ≥ maxIter || elapsed_time > maxTime end From 3e191d18c010126e9809565c56dab47f097250f6 Mon Sep 17 00:00:00 2001 From: Dominique Date: Mon, 13 Nov 2023 17:19:33 -0500 Subject: [PATCH 7/7] Update src/TR_alg.jl Co-authored-by: geoffroyleconte <47035783+geoffroyleconte@users.noreply.github.com> --- src/TR_alg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TR_alg.jl b/src/TR_alg.jl index 7cdddebb..e889cb4b 100644 --- a/src/TR_alg.jl +++ b/src/TR_alg.jl @@ -250,7 +250,7 @@ function TR( set_bounds!(ψ, max.(-Δk, l_bound - xk), min.(Δk, u_bound - xk)) : set_radius!(ψ, Δk) end α⁻¹Δ⁻¹ = 1 / (α * Δk) - ν = αΔ / (1 + λmax * (1 + αΔ)) + ν = 1 / (α⁻¹Δ⁻¹ + λmax * (α⁻¹Δ⁻¹ + 1)) tired = k ≥ maxIter || elapsed_time > maxTime end