From ad8f2ce35deb8f3cd805fbf1dc86c658f8e5af09 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Mon, 7 Sep 2026 13:41:43 +1200 Subject: [PATCH] [Bridges] fix modifying SplitIntervaBridge with Interval(-Inf, Inf) --- .../Constraint/bridges/SplitIntervalBridge.jl | 6 ++++++ test/Bridges/Constraint/test_SplitIntervalBridge.jl | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/Bridges/Constraint/bridges/SplitIntervalBridge.jl b/src/Bridges/Constraint/bridges/SplitIntervalBridge.jl index a0c789f932..af393a1863 100644 --- a/src/Bridges/Constraint/bridges/SplitIntervalBridge.jl +++ b/src/Bridges/Constraint/bridges/SplitIntervalBridge.jl @@ -354,6 +354,9 @@ function MOI.modify( if bridge.upper !== nothing MOI.modify(model, bridge.upper, change) end + if bridge.lower === bridge.upper === nothing + bridge.func = MOI.Utilities.modify_function(bridge.func, change) + end return end @@ -369,6 +372,9 @@ function MOI.set( if bridge.upper !== nothing MOI.set(model, MOI.ConstraintFunction(), bridge.upper, func) end + if bridge.lower === bridge.upper === nothing + bridge.func = func + end return end diff --git a/test/Bridges/Constraint/test_SplitIntervalBridge.jl b/test/Bridges/Constraint/test_SplitIntervalBridge.jl index 488a8a490a..1e6a56bde6 100644 --- a/test/Bridges/Constraint/test_SplitIntervalBridge.jl +++ b/test/Bridges/Constraint/test_SplitIntervalBridge.jl @@ -523,6 +523,18 @@ function test_modify_set() return end +function test_split_interval_free_modify() + inner = MOI.Utilities.Model{Float64}() + model = MOI.Bridges.Constraint.SplitInterval{Float64}(inner) + x, y = MOI.add_variable(model), MOI.add_variable(model) + ci = MOI.add_constraint(model, 1.0 * x, MOI.Interval(-Inf, Inf)) + MOI.modify(model, ci, MOI.ScalarCoefficientChange(y, 2.0)) + @test ≈(MOI.get(model, MOI.ConstraintFunction(), ci), 1.0 * x + 2.0 * y) + MOI.set(model, MOI.ConstraintFunction(), ci, 3.0 * x + 4.0 * y) + @test ≈(MOI.get(model, MOI.ConstraintFunction(), ci), 3.0 * x + 4.0 * y) + return +end + end # module TestConstraintSplitInterval.runtests()