From 900cb93cb36957f1f12c19f23d7c1723875d6d69 Mon Sep 17 00:00:00 2001 From: odow Date: Sun, 7 Jan 2024 13:55:44 +1300 Subject: [PATCH 1/2] Fix map_indices for AbstractAutomaticDifferentiation --- src/Nonlinear/types.jl | 7 +++++++ test/Nonlinear/Nonlinear.jl | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Nonlinear/types.jl b/src/Nonlinear/types.jl index ca91a9caeb..8f2b0d0412 100644 --- a/src/Nonlinear/types.jl +++ b/src/Nonlinear/types.jl @@ -184,6 +184,13 @@ An abstract type for extending [`Evaluator`](@ref). """ abstract type AbstractAutomaticDifferentiation end +function MOI.Utilities.map_indices( + ::F, + backend::MOI.Nonlinear.AbstractAutomaticDifferentiation, +) where {F<:Function} + return backend +end + """ Evaluator( model::Model, diff --git a/test/Nonlinear/Nonlinear.jl b/test/Nonlinear/Nonlinear.jl index 9fcd1793aa..16b320538c 100644 --- a/test/Nonlinear/Nonlinear.jl +++ b/test/Nonlinear/Nonlinear.jl @@ -1147,6 +1147,22 @@ function test_unsupported_features_expr_graph_only() return end +function test_automatic_differentiation_backend() + inner = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()) + model = MOI.Utilities.CachingOptimizer( + MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()), + MOI.Utilities.MockOptimizer(inner), + ) + MOI.set( + model, + MOI.AutomaticDifferentiationBackend(), + MOI.Nonlinear.ExprGraphOnly(), + ) + @test MOI.get(inner, MOI.AutomaticDifferentiationBackend()) == + MOI.Nonlinear.ExprGraphOnly() + return +end + end # TestNonlinear TestNonlinear.runtests() From f603da8f2a190b9821cf38bd6b1cb270c63d9400 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Sun, 7 Jan 2024 13:56:59 +1300 Subject: [PATCH 2/2] Update src/Nonlinear/types.jl --- src/Nonlinear/types.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nonlinear/types.jl b/src/Nonlinear/types.jl index 8f2b0d0412..2afc67a931 100644 --- a/src/Nonlinear/types.jl +++ b/src/Nonlinear/types.jl @@ -186,7 +186,7 @@ abstract type AbstractAutomaticDifferentiation end function MOI.Utilities.map_indices( ::F, - backend::MOI.Nonlinear.AbstractAutomaticDifferentiation, + backend::AbstractAutomaticDifferentiation, ) where {F<:Function} return backend end