Skip to content

Commit 82dc333

Browse files
committed
Fixes to get tests passing
1 parent 49d118b commit 82dc333

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

src/Bridges/bridgeoptimizer.jl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,25 @@ function MOI.modifyconstraint!(b::AbstractBridgeOptimizer, ci::CI, change)
225225
end
226226
end
227227

228+
function MOI.canset(b::AbstractBridgeOptimizer, ::MOI.ConstraintSet, ::Type{C}) where C <: CI
229+
if isbridged(b, C)
230+
MOI.canset(b.bridged, MOI.ConstraintSet(), C)
231+
# TODO(@blegat) is this necessary? How do I do it without types
232+
# && MOI.canset(b, MOIB.bridge(b, ci), change)
233+
else
234+
MOI.canset(b.model, MOI.ConstraintSet(), C)
235+
end
236+
end
237+
function MOI.set!(b::AbstractBridgeOptimizer, ::MOI.ConstraintSet, constraint_index::CI, set)
238+
# Note: we also under-type this function to avoid ambiguity
239+
if isbridged(b, typeof(constraint_index))
240+
MOI.set!(b, MOI.ConstraintSet(), bridge(b, constraint_index), set)
241+
MOI.set!(b.bridged, MOI.ConstraintSet(), constraint_index, set)
242+
else
243+
MOI.set!(b.model, MOI.ConstraintSet(), constraint_index, set)
244+
end
245+
end
246+
228247
# Objective
229248
MOI.canmodifyobjective(b::AbstractBridgeOptimizer, ::Type{M}) where M<:MOI.AbstractFunctionModification = MOI.canmodifyobjective(b.model, M)
230249
MOI.modifyobjective!(b::AbstractBridgeOptimizer, change::MOI.AbstractFunctionModification) = MOI.modifyobjective!(b.model, change)

src/Utilities/model.jl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,15 @@ MOI.canmodifyconstraint(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunctionModi
252252
function MOI.modifyconstraint!(model::AbstractModel, ci::CI, change::MOI.AbstractFunctionModification)
253253
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
254254
end
255-
MOI.canset(::AbstractModel, ::MOI.ConstraintFunction, ::Type{<:CI}) = true
256-
function MOI.set!(model::AbstractModel, ::MOI.ConstraintFunction, ci::CI, change::MOI.AbstractFunction)
255+
256+
MOI.canmodifyconstraint(::AbstractModel, ::CI, ::Type{<:MOI.AbstractFunction}) = true
257+
function MOI.modifyconstraint!(model::AbstractModel, ci::CI, change::MOI.AbstractFunction)
257258
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)
258259
end
260+
# MOI.canset(::AbstractModel, ::MOI.ConstraintFunction, ::Type{<:CI}) = true
261+
# function MOI.set!(model::AbstractModel, ::MOI.ConstraintFunction, ci::CI, change::MOI.AbstractFunction)
262+
# _modifyconstraint!(model, ci, getconstrloc(model, ci), change)
263+
# end
259264
MOI.canset(::AbstractModel, ::MOI.ConstraintSet, ::Type{<:CI}) = true
260265
function MOI.set!(model::AbstractModel, ::MOI.ConstraintSet, ci::CI, change::MOI.AbstractSet)
261266
_modifyconstraint!(model, ci, getconstrloc(model, ci), change)

test/model.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ end
6262
f3 = MOIU.modifyfunction(f3, MOI.ScalarCoefficientChange(y, 2))
6363

6464
@test !(MOI.get(model, MOI.ConstraintFunction(), c1) f3)
65-
MOI.set!(model, MOI.ConstraintFunction(), c1, f3)
65+
MOI.modifyconstraint!(model, c1, f3)
66+
# MOI.set!(model, MOI.ConstraintFunction(), c1, f3)
6667
@test MOI.get(model, MOI.ConstraintFunction(), c1) f3
6768

6869
f4 = MOI.VectorAffineFunction(MOI.VectorAffineTerm.([1, 1, 2], MOI.ScalarAffineTerm.([2, 4, 3], [x, y, y])), [5, 7])

0 commit comments

Comments
 (0)