Skip to content

Commit bc6bb2d

Browse files
authored
Merge pull request #496 from JuliaOpt/bl/delete
Use MOI.delete instead of Base.delete!
2 parents 6c18146 + abbf618 commit bc6bb2d

27 files changed

+108
-108
lines changed

docs/src/apimanual.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ v2 = add_variables(model, 3)
119119
set(model, VariablePrimalStart(), v2, [1.3,6.8,-4.6])
120120
```
121121

122-
A variable can be deleted from a model with [`delete!(::ModelLike, ::VariableIndex)`](@ref MathOptInterface.delete!(::MathOptInterface.ModelLike, ::MathOptInterface.Index)).
122+
A variable can be deleted from a model with [`delete(::ModelLike, ::VariableIndex)`](@ref MathOptInterface.delete(::MathOptInterface.ModelLike, ::MathOptInterface.Index)).
123123
Not all models support deleting variables; an [`DeleteNotAllowed`](@ref MathOptInterface.DeleteNotAllowed)
124124
error is thrown if this is not supported.
125125

docs/src/apireference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ BasisStatusCode
127127
VariableIndex
128128
ConstraintIndex
129129
is_valid
130-
delete!(::ModelLike,::Index)
130+
delete(::ModelLike, ::Index)
131131
```
132132

133133
### Variables

src/Bridges/bridgeoptimizer.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ function MOI.is_valid(b::AbstractBridgeOptimizer, ci::CI)
100100
return MOI.is_valid(b.model, ci)
101101
end
102102
end
103-
MOI.delete!(b::AbstractBridgeOptimizer, vi::VI) = MOI.delete!(b.model, vi)
104-
function MOI.delete!(b::AbstractBridgeOptimizer, ci::CI)
103+
MOI.delete(b::AbstractBridgeOptimizer, vi::VI) = MOI.delete(b.model, vi)
104+
function MOI.delete(b::AbstractBridgeOptimizer, ci::CI)
105105
if isbridged(b, typeof(ci))
106106
if !MOI.is_valid(b, ci)
107107
throw(MOI.InvalidIndex(ci))
108108
end
109-
MOI.delete!(b, bridge(b, ci))
109+
MOI.delete(b, bridge(b, ci))
110110
delete!(b.bridges, ci)
111-
MOI.delete!(b.bridged, ci)
111+
MOI.delete(b.bridged, ci)
112112
else
113-
MOI.delete!(b.model, ci)
113+
MOI.delete(b.model, ci)
114114
end
115115
end
116116

src/Bridges/detbridge.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,12 @@ MOI.get(b::LogDetBridge{T}, ::MOI.ListOfConstraintIndices{MOI.VectorAffineFuncti
122122
MOI.get(b::LogDetBridge{T}, ::MOI.ListOfConstraintIndices{MOI.ScalarAffineFunction{T}, MOI.LessThan{T}}) where T = [b.tlindex]
123123

124124
# References
125-
function MOI.delete!(model::MOI.ModelLike, c::LogDetBridge)
126-
MOI.delete!(model, c.tlindex)
127-
MOI.delete!(model, c.lcindex)
128-
MOI.delete!(model, c.sdindex)
129-
MOI.delete!(model, c.l)
130-
MOI.delete!(model, c.Δ)
125+
function MOI.delete(model::MOI.ModelLike, c::LogDetBridge)
126+
MOI.delete(model, c.tlindex)
127+
MOI.delete(model, c.lcindex)
128+
MOI.delete(model, c.sdindex)
129+
MOI.delete(model, c.l)
130+
MOI.delete(model, c.Δ)
131131
end
132132

133133
# Attributes, Bridge acting as a constraint
@@ -189,10 +189,10 @@ MOI.get(b::RootDetBridge{T}, ::MOI.ListOfConstraintIndices{MOI.VectorAffineFunct
189189
MOI.get(b::RootDetBridge{T}, ::MOI.ListOfConstraintIndices{MOI.VectorAffineFunction{T}, MOI.GeometricMeanCone}) where T = [b.gmindex]
190190

191191
# References
192-
function MOI.delete!(model::MOI.ModelLike, c::RootDetBridge)
193-
MOI.delete!(model, c.gmindex)
194-
MOI.delete!(model, c.sdindex)
195-
MOI.delete!(model, c.Δ)
192+
function MOI.delete(model::MOI.ModelLike, c::RootDetBridge)
193+
MOI.delete(model, c.gmindex)
194+
MOI.delete(model, c.sdindex)
195+
MOI.delete(model, c.Δ)
196196
end
197197

198198
# Attributes, Bridge acting as a constraint

src/Bridges/geomeanbridge.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,10 @@ function MOI.get(b::GeoMeanBridge{T, F, G},
133133
end
134134

135135
# References
136-
function MOI.delete!(model::MOI.ModelLike, c::GeoMeanBridge)
137-
MOI.delete!(model, c.xij)
138-
MOI.delete!(model, c.tubc)
139-
MOI.delete!(model, c.socrc)
136+
function MOI.delete(model::MOI.ModelLike, c::GeoMeanBridge)
137+
MOI.delete(model, c.xij)
138+
MOI.delete(model, c.tubc)
139+
MOI.delete(model, c.socrc)
140140
end
141141

142142
# Attributes, Bridge acting as a constraint

src/Bridges/intervalbridge.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ MOI.get(b::SplitIntervalBridge{T, F}, ::MOI.ListOfConstraintIndices{F, MOI.Great
3030
MOI.get(b::SplitIntervalBridge{T, F}, ::MOI.ListOfConstraintIndices{F, MOI.LessThan{T}}) where {T, F} = [b.upper]
3131

3232
# Indices
33-
function MOI.delete!(model::MOI.ModelLike, c::SplitIntervalBridge)
34-
MOI.delete!(model, c.lower)
35-
MOI.delete!(model, c.upper)
33+
function MOI.delete(model::MOI.ModelLike, c::SplitIntervalBridge)
34+
MOI.delete(model, c.lower)
35+
MOI.delete(model, c.upper)
3636
end
3737

3838
# Attributes, Bridge acting as a constraint

src/Bridges/rsocbridge.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ function MOI.get(b::RSOCBridge{T, F},
6666
end
6767

6868
# References
69-
function MOI.delete!(model::MOI.ModelLike, c::RSOCBridge)
70-
MOI.delete!(model, c.soc)
69+
function MOI.delete(model::MOI.ModelLike, c::RSOCBridge)
70+
MOI.delete(model, c.soc)
7171
end
7272

7373
# Attributes, Bridge acting as a constraint

src/Bridges/soctopsdbridge.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ end
7979
MOI.get(::SOCtoPSDBridge{T}, ::MOI.NumberOfConstraints{MOI.VectorAffineFunction{T}, MOI.PositiveSemidefiniteConeTriangle}) where T = 1
8080
MOI.get(b::SOCtoPSDBridge{T}, ::MOI.ListOfConstraintIndices{MOI.VectorAffineFunction{T}, MOI.PositiveSemidefiniteConeTriangle}) where T = [b.cr]
8181

82-
function MOI.delete!(instance::MOI.AbstractOptimizer, c::SOCtoPSDBridge)
83-
MOI.delete!(instance, c.cr)
82+
function MOI.delete(instance::MOI.AbstractOptimizer, c::SOCtoPSDBridge)
83+
MOI.delete(instance, c.cr)
8484
end
8585

8686
MOI.supports(model::MOI.ModelLike, ::MOI.ConstraintSet, ::Type{<:SOCtoPSDBridge}) = false
@@ -145,8 +145,8 @@ end
145145
MOI.get(::RSOCtoPSDBridge{T}, ::MOI.NumberOfConstraints{MOI.VectorAffineFunction{T}, MOI.PositiveSemidefiniteConeTriangle}) where T = 1
146146
MOI.get(b::RSOCtoPSDBridge{T}, ::MOI.ListOfConstraintIndices{MOI.VectorAffineFunction{T}, MOI.PositiveSemidefiniteConeTriangle}) where T = [b.cr]
147147

148-
function MOI.delete!(instance::MOI.AbstractOptimizer, c::RSOCtoPSDBridge)
149-
MOI.delete!(instance, c.cr)
148+
function MOI.delete(instance::MOI.AbstractOptimizer, c::RSOCtoPSDBridge)
149+
MOI.delete(instance, c.cr)
150150
end
151151

152152
MOI.supports(model::MOI.ModelLike, ::MOI.ConstraintSet, ::Type{<:RSOCtoPSDBridge}) = false

src/Bridges/squarepsdbridge.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ function MOI.get(bridge::SquarePSDBridge{T, F, G},
142142
end
143143

144144
# Indices
145-
function MOI.delete!(model::MOI.ModelLike, bridge::SquarePSDBridge)
146-
MOI.delete!(model, bridge.psd)
145+
function MOI.delete(model::MOI.ModelLike, bridge::SquarePSDBridge)
146+
MOI.delete(model, bridge.psd)
147147
for pair in bridge.sym
148-
MOI.delete!(model, pair.second)
148+
MOI.delete(model, pair.second)
149149
end
150150
end
151151

src/Test/UnitTests/basic_constraint_tests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@ function basic_constraint_test_helper(model::MOI.ModelLike, config::TestConfig,
217217
end
218218

219219
if delete
220-
@testset "delete!" begin
220+
@testset "delete" begin
221221
c_indices = MOI.get(model, MOI.ListOfConstraintIndices{F,S}())
222-
MOI.delete!(model, c_indices[1])
222+
MOI.delete(model, c_indices[1])
223223
@test MOI.get(model, MOI.NumberOfConstraints{F,S}()) == length(c_indices)-1
224224
@test !MOI.is_valid(model, c_indices[1])
225225
end

src/Test/UnitTests/constraints.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,10 @@ function solve_affine_deletion_edge_cases(model::MOI.ModelLike, config::TestConf
216216
constraint_primal = [(c1, [0.0]), (c2, 0.0)]
217217
)
218218
# now delete the VectorAffineFunction
219-
MOI.delete!(model, c1)
220-
@test_throws MOI.InvalidIndex{typeof(c1)} MOI.delete!(model, c1)
219+
MOI.delete(model, c1)
220+
@test_throws MOI.InvalidIndex{typeof(c1)} MOI.delete(model, c1)
221221
try
222-
MOI.delete!(model, c1)
222+
MOI.delete(model, c1)
223223
catch err
224224
@test err.index == c1
225225
end
@@ -232,7 +232,7 @@ function solve_affine_deletion_edge_cases(model::MOI.ModelLike, config::TestConf
232232
constraint_primal = [(c2, 1.0), (c3, [-1.0])]
233233
)
234234
# delete the ScalarAffineFunction
235-
MOI.delete!(model, c2)
235+
MOI.delete(model, c2)
236236
test_model_solution(model, config; objective_value = 2.0,
237237
constraint_primal = [(c3, [0.0])]
238238
)

src/Test/UnitTests/variables.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function delete_variable(model::MOI.ModelLike, config::TestConfig)
5656
@test MOI.get(model, MOI.NumberOfVariables()) == 0
5757
v = MOI.add_variable(model)
5858
@test MOI.get(model, MOI.NumberOfVariables()) == 1
59-
MOI.delete!(model, v)
59+
MOI.delete(model, v)
6060
@test MOI.get(model, MOI.NumberOfVariables()) == 0
6161
end
6262
unittests["delete_variable"] = delete_variable
@@ -72,15 +72,15 @@ function delete_variables(model::MOI.ModelLike, config::TestConfig)
7272
@test MOI.get(model, MOI.NumberOfVariables()) == 0
7373
v = MOI.add_variables(model, 2)
7474
@test MOI.get(model, MOI.NumberOfVariables()) == 2
75-
MOI.delete!(model, v)
75+
MOI.delete(model, v)
7676
@test MOI.get(model, MOI.NumberOfVariables()) == 0
7777
v = MOI.add_variables(model, 2)
7878
@test MOI.get(model, MOI.NumberOfVariables()) == 2
79-
MOI.delete!(model, v[1])
79+
MOI.delete(model, v[1])
8080
@test MOI.get(model, MOI.NumberOfVariables()) == 1
81-
@test_throws MOI.InvalidIndex{MOI.VariableIndex} MOI.delete!(model, v[1])
81+
@test_throws MOI.InvalidIndex{MOI.VariableIndex} MOI.delete(model, v[1])
8282
try
83-
MOI.delete!(model, v[1])
83+
MOI.delete(model, v[1])
8484
catch err
8585
@test err.index == v[1]
8686
end

src/Test/contlinear.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ function linear1test(model::MOI.ModelLike, config::TestConfig)
138138
if config.modify_lhs
139139
MOI.modify(model, c, MOI.ScalarCoefficientChange{Float64}(z, 1.0))
140140
else
141-
MOI.delete!(model, c)
141+
MOI.delete(model, c)
142142
cf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1.0,1.0,1.0], v), 0.0)
143143
c = MOI.add_constraint(model, cf, MOI.LessThan(1.0))
144144
end
@@ -205,7 +205,7 @@ function linear1test(model::MOI.ModelLike, config::TestConfig)
205205
MOI.supports(model, MOI.ConstraintSet(), typeof(vc1))
206206
MOI.set(model, MOI.ConstraintSet(), vc1, MOI.GreaterThan(0.0))
207207

208-
MOI.delete!(model, vc3)
208+
MOI.delete(model, vc3)
209209

210210
vc3 = MOI.add_constraint(model, MOI.SingleVariable(v[3]), MOI.EqualTo(0.0))
211211
@test MOI.get(model, MOI.NumberOfConstraints{MOI.SingleVariable,MOI.GreaterThan{Float64}}()) == 2
@@ -228,7 +228,7 @@ function linear1test(model::MOI.ModelLike, config::TestConfig)
228228
# max x + 2z
229229
# s.t. x + y + z == 2 (c)
230230
# x,y >= 0, z = 0
231-
MOI.delete!(model, c)
231+
MOI.delete(model, c)
232232
# note: adding some redundant zero coefficients to catch solvers that don't handle duplicate coefficients correctly:
233233
cf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0], [v; v; v]), 0.0)
234234
c = MOI.add_constraint(model, cf, MOI.EqualTo(2.0))
@@ -337,7 +337,7 @@ function linear1test(model::MOI.ModelLike, config::TestConfig)
337337
# y >= 0, z = 0
338338

339339
@test MOI.get(model, MOI.NumberOfConstraints{MOI.SingleVariable,MOI.GreaterThan{Float64}}()) == 2
340-
MOI.delete!(model, v[1])
340+
MOI.delete(model, v[1])
341341
@test MOI.get(model, MOI.NumberOfConstraints{MOI.SingleVariable,MOI.GreaterThan{Float64}}()) == 1
342342

343343
if config.query
@@ -638,7 +638,7 @@ function linear5test(model::MOI.ModelLike, config::TestConfig)
638638
if config.modify_lhs
639639
MOI.modify(model, c1, MOI.ScalarCoefficientChange(y, 3.0))
640640
else
641-
MOI.delete!(model, c1)
641+
MOI.delete(model, c1)
642642
cf1 = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([2.0,3.0], [x,y]), 0.0)
643643
c1 = MOI.add_constraint(model, cf1, MOI.LessThan(4.0))
644644
end
@@ -662,7 +662,7 @@ function linear5test(model::MOI.ModelLike, config::TestConfig)
662662
# x >= 0, y >= 0
663663
#
664664
# solution: x = 4, y = 0, objv = 4
665-
MOI.delete!(model, c1)
665+
MOI.delete(model, c1)
666666

667667
if config.solve
668668
MOI.optimize!(model)
@@ -683,7 +683,7 @@ function linear5test(model::MOI.ModelLike, config::TestConfig)
683683
# y >= 0
684684
#
685685
# solution: y = 2, objv = 2
686-
MOI.delete!(model, x)
686+
MOI.delete(model, x)
687687

688688
if config.solve
689689
MOI.optimize!(model)
@@ -810,7 +810,7 @@ function linear7test(model::MOI.ModelLike, config::TestConfig)
810810
if config.modify_lhs
811811
MOI.modify(model, c1, MOI.VectorConstantChange([-100.0]))
812812
else
813-
MOI.delete!(model, c1)
813+
MOI.delete(model, c1)
814814
c1 = MOI.add_constraint(model, MOI.VectorAffineFunction([MOI.VectorAffineTerm(1, MOI.ScalarAffineTerm(1.0, x))], [-100.0]), MOI.Nonnegatives(1))
815815
end
816816

@@ -831,7 +831,7 @@ function linear7test(model::MOI.ModelLike, config::TestConfig)
831831
if config.modify_lhs
832832
MOI.modify(model, c2, MOI.VectorConstantChange([100.0]))
833833
else
834-
MOI.delete!(model, c2)
834+
MOI.delete(model, c2)
835835
c2 = MOI.add_constraint(model, MOI.VectorAffineFunction([MOI.VectorAffineTerm(1, MOI.ScalarAffineTerm(1.0, y))], [100.0]), MOI.Nonpositives(1))
836836
end
837837

@@ -1349,7 +1349,7 @@ function linear14test(model::MOI.ModelLike, config::TestConfig)
13491349
end
13501350
end
13511351

1352-
MOI.delete!(model, [x, z])
1352+
MOI.delete(model, [x, z])
13531353

13541354
if config.solve
13551355
MOI.optimize!(model)

src/Test/contquadratic.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ function qcp1test(model::MOI.ModelLike, config::TestConfig)
257257
# try delete quadratic constraint and go back to linear
258258

259259
# FIXME why is this commented ?
260-
# MOI.delete!(model, c2)
260+
# MOI.delete(model, c2)
261261
#
262262
# MOI.optimize!(model)
263263
#

src/Test/intlinear.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ function int2test(model::MOI.ModelLike, config::TestConfig)
134134
@test MOI.get(model, MOI.VariablePrimal(), v) [0,1,2] atol=atol rtol=rtol
135135
end
136136

137-
MOI.delete!(model, c1)
138-
MOI.delete!(model, c2)
137+
MOI.delete(model, c1)
138+
MOI.delete(model, c2)
139139

140140
if config.solve
141141
MOI.optimize!(model)
@@ -220,7 +220,7 @@ function int2test(model::MOI.ModelLike, config::TestConfig)
220220
end
221221

222222
for cref in bin_constraints
223-
MOI.delete!(model, cref)
223+
MOI.delete(model, cref)
224224
end
225225

226226
if config.solve

src/Test/modellike.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ function nametest(model::MOI.ModelLike)
6969
@test MOI.get(model, MOI.ConstraintIndex, "Con0") == c2
7070
@test MOI.get(model, MOI.ConstraintIndex, "Con1") == c
7171

72-
MOI.delete!(model, v[2])
72+
MOI.delete(model, v[2])
7373
@test MOI.get(model, MOI.VariableIndex, "Var2") === nothing
7474

75-
MOI.delete!(model, c)
75+
MOI.delete(model, c)
7676
@test MOI.get(model, MOI.ConstraintIndex{MOI.ScalarAffineFunction{Float64},MOI.LessThan{Float64}}, "Con1") === nothing
7777
@test MOI.get(model, MOI.ConstraintIndex, "Con1") === nothing
7878
end
@@ -85,7 +85,7 @@ function validtest(model::MOI.ModelLike)
8585
@test MOI.is_valid(model, v[2])
8686
x = MOI.add_variable(model)
8787
@test MOI.is_valid(model, x)
88-
MOI.delete!(model, x)
88+
MOI.delete(model, x)
8989
@test !MOI.is_valid(model, x)
9090
cf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1.0,1.0], v), 0.0)
9191
@test MOI.supports_constraint(model, typeof(cf), MOI.LessThan{Float64})
@@ -256,7 +256,7 @@ function orderedindicestest(model::MOI.ModelLike)
256256
@test MOI.get(model, MOI.ListOfVariableIndices()) == [v1]
257257
v2 = MOI.add_variable(model)
258258
@test MOI.get(model, MOI.ListOfVariableIndices()) == [v1, v2]
259-
MOI.delete!(model, v1)
259+
MOI.delete(model, v1)
260260
@test MOI.get(model, MOI.ListOfVariableIndices()) == [v2]
261261
v3 = MOI.add_variable(model)
262262
@test MOI.get(model, MOI.ListOfVariableIndices()) == [v2, v3]
@@ -269,7 +269,7 @@ function orderedindicestest(model::MOI.ModelLike)
269269
@test MOI.get(model, MOI.ListOfConstraintIndices{MOI.SingleVariable, MOI.LessThan{Float64}}()) == [c1]
270270
c2 = MOI.add_constraint(model, MOI.SingleVariable(v3), MOI.LessThan(2.0))
271271
@test MOI.get(model, MOI.ListOfConstraintIndices{MOI.SingleVariable, MOI.LessThan{Float64}}()) == [c1, c2]
272-
MOI.delete!(model, c1)
272+
MOI.delete(model, c1)
273273
@test MOI.get(model, MOI.ListOfConstraintIndices{MOI.SingleVariable, MOI.LessThan{Float64}}()) == [c2]
274274
c3 = MOI.add_constraint(model, MOI.SingleVariable(v4), MOI.LessThan(3.0))
275275
@test MOI.get(model, MOI.ListOfConstraintIndices{MOI.SingleVariable, MOI.LessThan{Float64}}()) == [c2, c3]

0 commit comments

Comments
 (0)