Skip to content

Commit 9a790ca

Browse files
authored
[Bridges] fix deleting variable in Bridges.Variable.VectorizeBridge (#2393)
1 parent 8ddc767 commit 9a790ca

File tree

3 files changed

+14
-21
lines changed

3 files changed

+14
-21
lines changed

src/Bridges/Variable/bridges/vectorize.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,14 @@ function MOI.get(
9898
return [bridge.vector_constraint]
9999
end
100100

101-
# References
102101
function MOI.delete(model::MOI.ModelLike, bridge::VectorizeBridge)
103-
MOI.delete(model, bridge.variable)
104-
return
102+
# It isn't safe to delete the variable because the constant may appear in
103+
# other parts of the model (like the objective, or right-hand side sets).
104+
err = MOI.DeleteNotAllowed(
105+
bridge.variable,
106+
"Cannot delete variable because it is bridged by the `VectorizeBridge`.",
107+
)
108+
return throw(err)
105109
end
106110

107111
# Attributes, Bridge acting as a constraint

test/Bridges/Variable/vectorize.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,14 @@ function test_exp3_with_add_constrained_variable_y()
233233
MOI.set(bridged_mock, MOI.VariablePrimalStart(), y, 1.0)
234234
@test MOI.get(mock, MOI.VariablePrimalStart(), z) == -4
235235
@test MOI.get(bridged_mock, MOI.VariablePrimalStart(), y) == 1
236+
return
237+
end
236238

237-
_test_delete_bridged_variable(
238-
bridged_mock,
239-
y,
240-
MOI.LessThan{Float64},
241-
2,
242-
((MOI.VectorOfVariables, MOI.Nonpositives, 0),),
243-
)
239+
function test_delete_variable()
240+
inner = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
241+
model = MOI.Bridges.Variable.Vectorize{Float64}(inner)
242+
x, _ = MOI.add_constrained_variable(model, MOI.GreaterThan(1.0))
243+
@test_throws MOI.DeleteNotAllowed{MOI.VariableIndex} MOI.delete(model, x)
244244
return
245245
end
246246

test/Bridges/lazy_bridge_optimizer.jl

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -519,17 +519,6 @@ function _test_SDPA_format(T)
519519
@test MOI.Bridges.bridge_type(bridged, MOI.RotatedSecondOrderCone) ==
520520
MOI.Bridges.Variable.RSOCtoPSDBridge{T}
521521
x, cx = MOI.add_constrained_variable(bridged, MOI.LessThan(one(T)))
522-
_test_delete_bridged_variable(
523-
bridged,
524-
x,
525-
MOI.LessThan{T},
526-
1,
527-
(
528-
(MOI.VectorOfVariables, MOI.Nonnegatives, 0),
529-
(MOI.VectorOfVariables, MOI.Nonpositives, 0),
530-
),
531-
used_bridges = 2,
532-
)
533522
@test !MOI.supports_constraint(
534523
bridged,
535524
MOI.VectorAffineFunction{T},

0 commit comments

Comments
 (0)