Skip to content

Commit 8822416

Browse files
committed
Refactor modifyconstraint! to modify! and canmodifycontraint to
canmodify. These functions now only apply to AbstractFunctionModification changes.
1 parent bf5bcc4 commit 8822416

16 files changed

+69
-69
lines changed

docs/src/apimanual.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ See [`PositiveSemidefiniteConeTriangle`](@ref MathOptInterface.PositiveSemidefin
531531

532532
### Modifying a model
533533

534-
[Explain `modifyconstraint!` and `modifyobjective!`.]
534+
[Explain `modify!` and `modifyobjective!`.]
535535

536536
### Constraint bridges
537537

docs/src/apireference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ isvalid(::ModelLike,::ConstraintIndex)
163163
canaddconstraint
164164
addconstraint!
165165
addconstraints!
166-
modifyconstraint!
167-
canmodifyconstraint
166+
modify!
167+
canmodify
168168
transformconstraint!
169169
cantransformconstraint
170170
supportsconstraint

src/Bridges/bridgeoptimizer.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,19 @@ function MOI.addconstraint!(b::AbstractBridgeOptimizer, f::MOI.AbstractFunction,
209209
MOI.addconstraint!(b.model, f, s)
210210
end
211211
end
212-
function MOI.canmodifyconstraint(b::AbstractBridgeOptimizer, ci::CI, change)
212+
function MOI.canmodify(b::AbstractBridgeOptimizer, ci::CI, change)
213213
if isbridged(b, typeof(ci))
214-
MOI.canmodifyconstraint(b.bridged, ci, change) && MOI.canmodifyconstraint(b, MOIB.bridge(b, ci), change)
214+
MOI.canmodify(b.bridged, ci, change) && MOI.canmodify(b, MOIB.bridge(b, ci), change)
215215
else
216-
MOI.canmodifyconstraint(b.model, ci, change)
216+
MOI.canmodify(b.model, ci, change)
217217
end
218218
end
219-
function MOI.modifyconstraint!(b::AbstractBridgeOptimizer, ci::CI, change)
219+
function MOI.modify!(b::AbstractBridgeOptimizer, ci::CI, change)
220220
if isbridged(b, typeof(ci))
221-
MOI.modifyconstraint!(b, bridge(b, ci), change)
222-
MOI.modifyconstraint!(b.bridged, ci, change)
221+
MOI.modify!(b, bridge(b, ci), change)
222+
MOI.modify!(b.bridged, ci, change)
223223
else
224-
MOI.modifyconstraint!(b.model, ci, change)
224+
MOI.modify!(b.model, ci, change)
225225
end
226226
end
227227

src/Bridges/detbridge.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ end
141141
MOI.canget(model::MOI.ModelLike, a::MOI.ConstraintDual, ::Type{<:LogDetBridge}) = false
142142

143143
# Constraints
144-
MOI.canmodifyconstraint(model::MOI.ModelLike, c::LogDetBridge, change) = false
144+
MOI.canmodify(model::MOI.ModelLike, c::LogDetBridge, change) = false
145145

146146
"""
147147
RootDetBridge{T}
@@ -207,4 +207,4 @@ end
207207
MOI.canget(model::MOI.ModelLike, ::MOI.ConstraintDual, ::Type{<:RootDetBridge}) = false
208208

209209
# Constraints
210-
MOI.canmodifyconstraint(model::MOI.ModelLike, c::RootDetBridge, change) = false
210+
MOI.canmodify(model::MOI.ModelLike, c::RootDetBridge, change) = false

src/Bridges/geomeanbridge.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,4 @@ MOI.canget(model::MOI.ModelLike, a::MOI.ConstraintDual, ::Type{<:GeoMeanBridge})
138138
#end
139139

140140
# Constraints
141-
MOI.canmodifyconstraint(model::MOI.ModelLike, c::GeoMeanBridge, change) = false
141+
MOI.canmodify(model::MOI.ModelLike, c::GeoMeanBridge, change) = false

src/Bridges/intervalbridge.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ function MOI.get(model::MOI.ModelLike, a::MOI.ConstraintDual, c::SplitIntervalBr
5151
end
5252

5353
# Constraints
54-
MOI.canmodifyconstraint(model::MOI.ModelLike, c::SplitIntervalBridge, change) = true
55-
function MOI.modifyconstraint!(model::MOI.ModelLike, c::SplitIntervalBridge, change::MOI.AbstractFunctionModification)
56-
MOI.modifyconstraint!(model, c.lower, change)
57-
MOI.modifyconstraint!(model, c.upper, change)
54+
MOI.canmodify(model::MOI.ModelLike, c::SplitIntervalBridge, change) = true
55+
function MOI.modify!(model::MOI.ModelLike, c::SplitIntervalBridge, change::MOI.AbstractFunctionModification)
56+
MOI.modify!(model, c.lower, change)
57+
MOI.modify!(model, c.upper, change)
5858
end
5959

6060
MOI.canset(model::MOI.ModelLike, ::MOI.ConstraintFunction, ::Type{<:SplitIntervalBridge}) = true

src/Bridges/rsocbridge.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ end
6666
MOI.get(model::MOI.ModelLike, attr::MOI.ConstraintDual, c::RSOCBridge) = _get(model, attr, c)
6767

6868
# Constraints
69-
MOI.canmodifyconstraint(model::MOI.ModelLike, c::RSOCBridge, change) = false
69+
MOI.canmodify(model::MOI.ModelLike, c::RSOCBridge, change) = false

src/Bridges/soctopsdbridge.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ function MOI.delete!(instance::MOI.AbstractOptimizer, c::SOCtoPSDCBridge)
8686
MOI.delete!(instance, c.cr)
8787
end
8888

89-
MOI.canmodifyconstraint(::MOI.AbstractOptimizer, ::SOCtoPSDCBridge, change) = false
89+
MOI.canmodify(::MOI.AbstractOptimizer, ::SOCtoPSDCBridge, change) = false
9090

9191
"""
9292
The `RSOCtoPSDCBridge` transforms the second order cone constraint ``\\lVert x \\rVert \\le 2tu`` with ``u \\ge 0`` into the semidefinite cone constraints
@@ -151,4 +151,4 @@ function MOI.delete!(instance::MOI.AbstractOptimizer, c::RSOCtoPSDCBridge)
151151
MOI.delete!(instance, c.cr)
152152
end
153153

154-
MOI.canmodifyconstraint(::MOI.AbstractOptimizer, ::RSOCtoPSDCBridge, change) = false
154+
MOI.canmodify(::MOI.AbstractOptimizer, ::RSOCtoPSDCBridge, change) = false

src/Test/contlinear.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,8 @@ function linear1test(model::MOI.ModelLike, config::TestConfig)
172172
@test MOI.get(model, MOI.NumberOfConstraints{MOI.SingleVariable,MOI.GreaterThan{Float64}}()) == 3
173173

174174
if config.modify_lhs
175-
@test MOI.canmodifyconstraint(model, c, MOI.ScalarCoefficientChange{Float64})
176-
MOI.modifyconstraint!(model, c, MOI.ScalarCoefficientChange{Float64}(z, 1.0))
175+
@test MOI.canmodify(model, c, MOI.ScalarCoefficientChange{Float64})
176+
MOI.modify!(model, c, MOI.ScalarCoefficientChange{Float64}(z, 1.0))
177177
else
178178
@test MOI.candelete(model, c)
179179
MOI.delete!(model, c)
@@ -781,8 +781,8 @@ function linear5test(model::MOI.ModelLike, config::TestConfig)
781781
# solution: x = 2, y = 0, objv = 2
782782

783783
if config.modify_lhs
784-
@test MOI.canmodifyconstraint(model, c1, MOI.ScalarCoefficientChange{Float64})
785-
MOI.modifyconstraint!(model, c1, MOI.ScalarCoefficientChange(y, 3.0))
784+
@test MOI.canmodify(model, c1, MOI.ScalarCoefficientChange{Float64})
785+
MOI.modify!(model, c1, MOI.ScalarCoefficientChange(y, 3.0))
786786
else
787787
@test MOI.candelete(model, c1)
788788
MOI.delete!(model, c1)
@@ -980,8 +980,8 @@ function linear7test(model::MOI.ModelLike, config::TestConfig)
980980
# y <= 0.0
981981

982982
if config.modify_lhs
983-
@test MOI.canmodifyconstraint(model, c1, MOI.VectorConstantChange{Float64})
984-
MOI.modifyconstraint!(model, c1, MOI.VectorConstantChange([-100.0]))
983+
@test MOI.canmodify(model, c1, MOI.VectorConstantChange{Float64})
984+
MOI.modify!(model, c1, MOI.VectorConstantChange([-100.0]))
985985
else
986986
@test MOI.candelete(model, c1)
987987
MOI.delete!(model, c1)
@@ -1004,8 +1004,8 @@ function linear7test(model::MOI.ModelLike, config::TestConfig)
10041004
# y <= -100.0
10051005

10061006
if config.modify_lhs
1007-
@test MOI.canmodifyconstraint(model, c2, MOI.VectorConstantChange{Float64})
1008-
MOI.modifyconstraint!(model, c2, MOI.VectorConstantChange([100.0]))
1007+
@test MOI.canmodify(model, c2, MOI.VectorConstantChange{Float64})
1008+
MOI.modify!(model, c2, MOI.VectorConstantChange([100.0]))
10091009
else
10101010
@test MOI.candelete(model, c2)
10111011
MOI.delete!(model, c2)

src/Utilities/cachingoptimizer.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,22 +227,22 @@ function MOI.addconstraint!(m::CachingOptimizer, func::MOI.AbstractFunction, set
227227
return cindex
228228
end
229229

230-
function MOI.canmodifyconstraint(m::CachingOptimizer, cindex::CI, change)
231-
MOI.canmodifyconstraint(m.model_cache, cindex, change) || return false
230+
function MOI.canmodify(m::CachingOptimizer, cindex::CI, change)
231+
MOI.canmodify(m.model_cache, cindex, change) || return false
232232
if m.state == AttachedOptimizer && m.mode == Manual
233-
MOI.canmodifyconstraint(m.optimizer, m.model_to_optimizer_map[cindex], change) || return false
233+
MOI.canmodify(m.optimizer, m.model_to_optimizer_map[cindex], change) || return false
234234
end
235235
return true
236236
end
237237

238-
function MOI.modifyconstraint!(m::CachingOptimizer, cindex::CI, change)
239-
if m.mode == Automatic && m.state == AttachedOptimizer && !MOI.canmodifyconstraint(m.optimizer, cindex, typeof(change))
238+
function MOI.modify!(m::CachingOptimizer, cindex::CI, change)
239+
if m.mode == Automatic && m.state == AttachedOptimizer && !MOI.canmodify(m.optimizer, cindex, typeof(change))
240240
resetoptimizer!(m)
241241
end
242-
@assert MOI.canmodifyconstraint(m, cindex, typeof(change))
243-
MOI.modifyconstraint!(m.model_cache, cindex, change)
242+
@assert MOI.canmodify(m, cindex, typeof(change))
243+
MOI.modify!(m.model_cache, cindex, change)
244244
if m.state == AttachedOptimizer
245-
MOI.modifyconstraint!(m.optimizer, m.model_to_optimizer_map[cindex], mapvariables(m.model_to_optimizer_map,change))
245+
MOI.modify!(m.optimizer, m.model_to_optimizer_map[cindex], mapvariables(m.model_to_optimizer_map,change))
246246
end
247247
return
248248
end

src/Utilities/mockoptimizer.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,12 @@ function MOI.delete!(mock::MockOptimizer, idx::MOI.ConstraintIndex)
202202
MOI.delete!(mock.condual, idx)
203203
end
204204

205-
function MOI.canmodifyconstraint(mock::MockOptimizer, c::CI, change)
206-
MOI.canmodifyconstraint(mock.inner_model, xor_index(c), change)
205+
function MOI.canmodify(mock::MockOptimizer, c::CI, change)
206+
MOI.canmodify(mock.inner_model, xor_index(c), change)
207207
end
208208

209-
function MOI.modifyconstraint!(mock::MockOptimizer, c::CI, change)
210-
MOI.modifyconstraint!(mock.inner_model, xor_index(c), xor_variables(change))
209+
function MOI.modify!(mock::MockOptimizer, c::CI, change)
210+
MOI.modify!(mock.inner_model, xor_index(c), xor_variables(change))
211211
end
212212

213213
MOI.canset(mock::MockOptimizer, ::MOI.ConstraintSet, ::Type{C}) where C <: CI = true

src/Utilities/model.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ end
3333
_modifyconstr(ci::CI{F, S}, f::F, s::S, change::F) where {F, S} = (ci, change, s)
3434
_modifyconstr(ci::CI{F, S}, f::F, s::S, change::S) where {F, S} = (ci, f, change)
3535
_modifyconstr(ci::CI{F, S}, f::F, s::S, change::MOI.AbstractFunctionModification) where {F, S} = (ci, modifyfunction(f, change), s)
36-
function _modifyconstraint!(constrs::Vector{C{F, S}}, ci::CI{F}, i::Int, change) where {F, S}
36+
function _modify!(constrs::Vector{C{F, S}}, ci::CI{F}, i::Int, change) where {F, S}
3737
constrs[i] = _modifyconstr(constrs[i]..., change)
3838
end
3939

@@ -248,22 +248,22 @@ function MOI.delete!(model::AbstractModel, ci::CI)
248248
end
249249
end
250250

251-
MOI.canmodifyconstraint(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunctionModification}) = true
252-
function MOI.modifyconstraint!(model::AbstractModel, ci::CI, change::MOI.AbstractFunctionModification)
253-
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
251+
MOI.canmodify(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunctionModification}) = true
252+
function MOI.modify!(model::AbstractModel, ci::CI, change::MOI.AbstractFunctionModification)
253+
_modify!(model, ci, getconstrloc(model, ci), change)
254254
end
255255

256-
MOI.canmodifyconstraint(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunction}) = true
257-
function MOI.modifyconstraint!(model::AbstractModel, ci::CI, change::MOI.AbstractFunction)
258-
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
256+
MOI.canmodify(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunction}) = true
257+
function MOI.modify!(model::AbstractModel, ci::CI, change::MOI.AbstractFunction)
258+
_modify!(model, ci, getconstrloc(model, ci), change)
259259
end
260260
MOI.canset(::AbstractModel, ::MOI.ConstraintFunction, ::Type{<:CI}) = true
261261
function MOI.set!(model::AbstractModel, ::MOI.ConstraintFunction, ci::CI, change::MOI.AbstractFunction)
262-
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
262+
_modify!(model, ci, getconstrloc(model, ci), change)
263263
end
264264
MOI.canset(::AbstractModel, ::MOI.ConstraintSet, ::Type{<:CI}) = true
265265
function MOI.set!(model::AbstractModel, ::MOI.ConstraintSet, ci::CI, change::MOI.AbstractSet)
266-
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
266+
_modify!(model, ci, getconstrloc(model, ci), change)
267267
end
268268

269269
MOI.get(model::AbstractModel, noc::MOI.NumberOfConstraints) = _getnoc(model, noc)
@@ -547,7 +547,7 @@ macro model(modelname, ss, sst, vs, vst, sf, sft, vf, vft)
547547
end
548548
end
549549

550-
for (func, T) in ((:_addconstraint!, CI), (:_modifyconstraint!, CI), (:_delete!, CI), (:_getindex, CI), (:_getfunction, CI), (:_getset, CI), (:_getnoc, MOI.NumberOfConstraints))
550+
for (func, T) in ((:_addconstraint!, CI), (:_modify!, CI), (:_delete!, CI), (:_getindex, CI), (:_getfunction, CI), (:_getset, CI), (:_getnoc, MOI.NumberOfConstraints))
551551
funct = _mod(MOIU, func)
552552
for (c, sets) in ((scname, scalarsets), (vcname, vectorsets))
553553
for s in sets

src/Utilities/universalfallback.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ end
152152
MOI.supportsconstraint(uf::UniversalFallback, ::Type{F}, ::Type{S}) where {F<:MOI.AbstractFunction, S<:MOI.AbstractSet} = true
153153
MOI.canaddconstraint(uf::UniversalFallback, ::Type{F}, ::Type{S}) where {F<:MOI.AbstractFunction, S<:MOI.AbstractSet} = MOI.canaddconstraint(uf.model, F, S)
154154
MOI.addconstraint!(uf::UniversalFallback, f::MOI.AbstractFunction, s::MOI.AbstractSet) = MOI.addconstraint!(uf.model, f, s)
155-
MOI.canmodifyconstraint(uf::UniversalFallback, ci::CI, change) = MOI.canmodifyconstraint(uf.model, ci, change)
156-
MOI.modifyconstraint!(uf::UniversalFallback, ci::CI, change) = MOI.modifyconstraint!(uf.model, ci, change)
155+
MOI.canmodify(uf::UniversalFallback, ci::CI, change) = MOI.canmodify(uf.model, ci, change)
156+
MOI.modify!(uf::UniversalFallback, ci::CI, change) = MOI.modify!(uf.model, ci, change)
157157

158158
function MOI.canset(uf::UniversalFallback, ::MOI.ConstraintSet, ::Type{C}) where C <: CI
159159
MOI.canset(uf.model, MOI.ConstraintSet(), C)

src/constraints.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,33 +118,33 @@ end
118118
"""
119119
## Partial Modifications
120120
121-
canmodifyconstraint(model::ModelLike, c::ConstraintIndex, ::Type{M})::Bool where M<:AbstractFunctionModification
121+
canmodify(model::ModelLike, c::ConstraintIndex, ::Type{M})::Bool where M<:AbstractFunctionModification
122122
123123
Return a `Bool` indicating whether it is possible to apply a modification of type `M` to the function of constraint `c`.
124124
125125
### Examples
126126
127127
```julia
128-
canmodifyconstraint(model, c, ScalarConstantChange{Float64})
128+
canmodify(model, c, ScalarConstantChange{Float64})
129129
```
130130
"""
131-
function canmodifyconstraint end
132-
canmodifyconstraint(model::ModelLike, c::ConstraintIndex, change) = false
131+
function canmodify end
132+
canmodify(model::ModelLike, c::ConstraintIndex, change) = false
133133

134134
"""
135135
## Partial Modifications
136136
137-
modifyconstraint!(model::ModelLike, c::ConstraintIndex, change::AbstractFunctionModification)
137+
modify!(model::ModelLike, c::ConstraintIndex, change::AbstractFunctionModification)
138138
139139
Apply the modification specified by `change` to the function of constraint `c`.
140140
141141
### Examples
142142
143143
```julia
144-
modifyconstraint!(model, c, ScalarConstantChange(10.0))
144+
modify!(model, c, ScalarConstantChange(10.0))
145145
```
146146
"""
147-
function modifyconstraint! end
147+
function modify! end
148148

149149

150150
"""
@@ -159,7 +159,7 @@ the correct type.
159159
Solvers may only support a subset of constraint transforms that they perform
160160
efficiently (for example, changing from a `LessThan` to `GreaterThan` set). In
161161
addition, set modification (where `S1 = S2`) should be performed via the
162-
`modifyconstraint!` function.
162+
`modify!` function.
163163
164164
165165
Typically, the user should delete the constraint and add a new one.

0 commit comments

Comments
 (0)