From 16831f110b93345a9e0f87865663bf9994a45808 Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Thu, 12 Sep 2024 12:39:11 -0400 Subject: [PATCH 1/2] Add DiagonalBFGS model --- src/quasi-newton.jl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/quasi-newton.jl b/src/quasi-newton.jl index 5d11857..5f6e09b 100644 --- a/src/quasi-newton.jl +++ b/src/quasi-newton.jl @@ -4,7 +4,8 @@ export AbstractDiagonalQNModel, LSR1Model, DiagonalPSBModel, DiagonalAndreiModel, - SpectralGradientModel + SpectralGradientModel, + DiagonalBFGSModel abstract type QuasiNewtonModel{T, S} <: AbstractNLPModel{T, S} end abstract type AbstractDiagonalQNModel{T, S} <: QuasiNewtonModel{T, S} end @@ -105,6 +106,14 @@ function SpectralGradientModel(nlp::AbstractNLPModel{T, S}; σ::T = one(T)) wher return DiagonalQNModel{T, S, typeof(nlp), typeof(nlp.meta), typeof(op)}(nlp.meta, nlp, op) end +function DiagonalBFGSModel( + nlp::AbstractNLPModel{T, S}; + d0::S = fill!(S(undef, nlp.meta.nvar), one(T)), +) where {T, S} + op = DiagonalBFGS(d0) + return NLPModelsModifiers.DiagonalQNModel{T, S, typeof(nlp), typeof(nlp.meta), typeof(op)}(nlp.meta, nlp, op) +end + NLPModels.show_header(io::IO, nlp::QuasiNewtonModel) = println(io, "$(typeof(nlp)) - A QuasiNewtonModel") From e6f6ef423f10d6bbb0ca857683bb7a1f9b239951 Mon Sep 17 00:00:00 2001 From: MohamedLaghdafHABIBOULLAH Date: Thu, 12 Sep 2024 12:39:11 -0400 Subject: [PATCH 2/2] Add DiagonalBFGS model --- src/quasi-newton.jl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/quasi-newton.jl b/src/quasi-newton.jl index 5d11857..5f6e09b 100644 --- a/src/quasi-newton.jl +++ b/src/quasi-newton.jl @@ -4,7 +4,8 @@ export AbstractDiagonalQNModel, LSR1Model, DiagonalPSBModel, DiagonalAndreiModel, - SpectralGradientModel + SpectralGradientModel, + DiagonalBFGSModel abstract type QuasiNewtonModel{T, S} <: AbstractNLPModel{T, S} end abstract type AbstractDiagonalQNModel{T, S} <: QuasiNewtonModel{T, S} end @@ -105,6 +106,14 @@ function SpectralGradientModel(nlp::AbstractNLPModel{T, S}; σ::T = one(T)) wher return DiagonalQNModel{T, S, typeof(nlp), typeof(nlp.meta), typeof(op)}(nlp.meta, nlp, op) end +function DiagonalBFGSModel( + nlp::AbstractNLPModel{T, S}; + d0::S = fill!(S(undef, nlp.meta.nvar), one(T)), +) where {T, S} + op = DiagonalBFGS(d0) + return NLPModelsModifiers.DiagonalQNModel{T, S, typeof(nlp), typeof(nlp.meta), typeof(op)}(nlp.meta, nlp, op) +end + NLPModels.show_header(io::IO, nlp::QuasiNewtonModel) = println(io, "$(typeof(nlp)) - A QuasiNewtonModel")