Skip to content

Commit 3f453e3

Browse files
committed
Update
1 parent 49e0e93 commit 3f453e3

4 files changed

Lines changed: 24 additions & 10 deletions

File tree

src/Bridges/Constraint/bridges/AbstractFunctionConversionBridge.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ end
5353

5454
# Needed to avoid an ambiguity with the getter for MOI.Constraint.AbstractBridge
5555
function MOI.get(
56-
model::MOI.Bridges.AbstractBridgeOptimizer,
56+
model::MOI.ModelLike,
5757
attr::MOI.ConstraintConflictStatus,
5858
bridge::AbstractFunctionConversionBridge,
5959
)
@@ -65,8 +65,6 @@ function MOI.get(
6565
return status
6666
elseif status == MOI.MAYBE_IN_CONFLICT
6767
ret = status
68-
# elseif status == MOI.NOT_IN_CONFLICT
69-
# Nothing to do here.
7068
end
7169
end
7270
end
@@ -191,6 +189,7 @@ function invariant_under_function_conversion(
191189
MOI.ConstraintPrimalStart,
192190
MOI.ConstraintDual,
193191
MOI.ConstraintDualStart,
192+
MOI.ConstraintConflictStatus,
194193
},
195194
)
196195
return true

src/Bridges/bridge_optimizer.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,11 @@ function MOI.optimize!(b::AbstractBridgeOptimizer)
368368
return
369369
end
370370

371+
function MOI.compute_conflict!(b::AbstractBridgeOptimizer)
372+
MOI.compute_conflict!(b.model)
373+
return
374+
end
375+
371376
function MOI.is_empty(b::AbstractBridgeOptimizer)
372377
return isempty(Variable.bridges(b)) &&
373378
isempty(Constraint.bridges(b)) &&
@@ -1745,7 +1750,7 @@ function MOI.set(
17451750
end
17461751

17471752
function MOI.get(
1748-
model::AbstractBridgeOptimizer,
1753+
model::MOI.ModelLike,
17491754
attr::MOI.ConstraintConflictStatus,
17501755
bridge::AbstractBridge,
17511756
)
@@ -1757,8 +1762,6 @@ function MOI.get(
17571762
return status
17581763
elseif status == MOI.MAYBE_IN_CONFLICT
17591764
ret = status
1760-
# elseif status == MOI.NOT_IN_CONFLICT
1761-
# Nothing to do here.
17621765
end
17631766
end
17641767
end

src/Bridges/lazy_bridge_optimizer.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,3 @@ function bridging_cost(b::LazyBridgeOptimizer, args...)
607607
end
608608

609609
recursive_model(b::LazyBridgeOptimizer) = b
610-
611-
function MOI.compute_conflict!(model::LazyBridgeOptimizer)
612-
return MOI.compute_conflict!(model.model)
613-
end

test/Bridges/Constraint/ScalarFunctionizeBridge.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,22 @@ function test_supports_ScalarNonlinearFunction()
378378
return
379379
end
380380

381+
function test_issue_2838()
382+
inner = MOI.Utilities.MockOptimizer(MOI.Utilities.Model{Float64}())
383+
model = MOI.Bridges.Constraint.ScalarFunctionize{Float64}(inner)
384+
x = MOI.add_variable(model)
385+
c = MOI.add_constraint(model, x, MOI.GreaterThan(1.0))
386+
F, S = MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}
387+
ci = only(MOI.get(inner, MOI.ListOfConstraintIndices{F,S}()))
388+
for ret in (MOI.NOT_IN_CONFLICT, MOI.IN_CONFLICT, MOI.MAYBE_IN_CONFLICT)
389+
MOI.set(inner, MOI.ConflictCount(), 1)
390+
MOI.set(inner, MOI.ConstraintConflictStatus(), ci, ret)
391+
MOI.compute_conflict!(model)
392+
@test MOI.get(model, MOI.ConstraintConflictStatus(), c) == ret
393+
end
394+
return
395+
end
396+
381397
end # module
382398

383399
TestConstraintFunctionize.runtests()

0 commit comments

Comments
 (0)