From ec0c9e64d104623ef4cebf967afc4d8f1d9e2061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Fri, 10 Oct 2025 15:59:11 +0200 Subject: [PATCH] Implement ForwardConstraintDual for bridges --- src/bridges.jl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/bridges.jl b/src/bridges.jl index a56717b3c..6bf8be921 100644 --- a/src/bridges.jl +++ b/src/bridges.jl @@ -44,6 +44,13 @@ function MOI.set( return MOI.set(model, ForwardConstraintFunction(), bridge.constraint, value) end +# We use the `MOI.Utilities` API so what we do should work +# both on `MOI.AbstractFunction` and on `Vector{Float64}` +const _GettableConstraintAttribute = Union{ + ReverseConstraintFunction, + ForwardConstraintDual, +} + function MOI.set( model::MOI.ModelLike, attr::ForwardConstraintFunction, @@ -60,7 +67,7 @@ end function MOI.get( model::MOI.ModelLike, - attr::ReverseConstraintFunction, + attr::_GettableConstraintAttribute, bridge::MOI.Bridges.Constraint.VectorizeBridge, ) return MOI.Utilities.eachscalar( @@ -80,7 +87,7 @@ end function MOI.get( model::MOI.ModelLike, - attr::ReverseConstraintFunction, + attr::_GettableConstraintAttribute, bridge::MOI.Bridges.Constraint.ScalarizeBridge, ) return _vectorize(MOI.get.(model, attr, bridge.scalar_constraints)) @@ -88,7 +95,7 @@ end function MOI.get( model::MOI.ModelLike, - attr::DiffOpt.ReverseConstraintFunction, + attr::_GettableConstraintAttribute, bridge::MOI.Bridges.Constraint.AbstractFunctionConversionBridge, ) return MOI.get(model, attr, bridge.constraint) @@ -123,7 +130,7 @@ end function MOI.get( model::MOI.ModelLike, - attr::DiffOpt.ReverseConstraintFunction, + attr::_GettableConstraintAttribute, bridge::MOI.Bridges.Constraint.SetMapBridge, ) func = MOI.get(model, attr, bridge.constraint)