diff --git a/src/Bridges/Constraint/scalarize.jl b/src/Bridges/Constraint/scalarize.jl index 99cbf44b84..fe8d1ad601 100644 --- a/src/Bridges/Constraint/scalarize.jl +++ b/src/Bridges/Constraint/scalarize.jl @@ -128,12 +128,36 @@ end function MOI.get( model::MOI.ModelLike, - attr::Union{MOI.ConstraintPrimal,MOI.ConstraintPrimalStart}, + attr::MOI.ConstraintPrimal, bridge::ScalarizeBridge, ) return MOI.get.(model, attr, bridge.scalar_constraints) .+ bridge.constants end +function MOI.get( + model::MOI.ModelLike, + attr::MOI.ConstraintPrimalStart, + bridge::ScalarizeBridge, +) + values = MOI.get.(model, attr, bridge.scalar_constraints) + if any(value -> value === nothing, values) + return + end + return values .+ bridge.constants +end + +function MOI.set( + model::MOI.ModelLike, + attr::MOI.ConstraintPrimalStart, + bridge::ScalarizeBridge, + ::Nothing, +) + for ci in bridge.scalar_constraints + MOI.set(model, attr, ci, nothing) + end + return +end + function MOI.set( model::MOI.ModelLike, attr::MOI.ConstraintPrimalStart, @@ -147,12 +171,24 @@ end function MOI.get( model::MOI.ModelLike, - attr::Union{MOI.ConstraintDual,MOI.ConstraintDualStart}, + attr::MOI.ConstraintDual, bridge::ScalarizeBridge, ) return MOI.get.(model, attr, bridge.scalar_constraints) end +function MOI.get( + model::MOI.ModelLike, + attr::MOI.ConstraintDualStart, + bridge::ScalarizeBridge, +) + values = MOI.get.(model, attr, bridge.scalar_constraints) + if any(value -> value === nothing, values) + return + end + return values +end + function MOI.set( model::MOI.ModelLike, attr::MOI.ConstraintDualStart, diff --git a/test/Bridges/Constraint/scalarize.jl b/test/Bridges/Constraint/scalarize.jl index ab55f9c587..98affb722a 100644 --- a/test/Bridges/Constraint/scalarize.jl +++ b/test/Bridges/Constraint/scalarize.jl @@ -198,4 +198,15 @@ config = MOIT.Config() [7, 2, -4, 7], ) MOIT.lin2ftest(bridged_mock, config) + + @testset "constraint_ConstraintPrimalStart" begin + MOI.Test.test_constraint_ConstraintPrimalStart( + bridged_mock, + MOI.Test.Config(), + ) + MOI.Test.test_constraint_ConstraintDualStart( + bridged_mock, + MOI.Test.Config(), + ) + end end