Skip to content

Commit 01b1a56

Browse files
authored
Fix bridging cost for QCQP (#146)
* Fix bridging cost for QCQP * Fix format
1 parent ea3891a commit 01b1a56

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/QCQP/MOI_wrapper.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,16 @@ function MOI.supports_constraint(
198198
)
199199
end
200200

201+
function MOI.get(
202+
model::Optimizer{T},
203+
::MOI.ConstraintBridgingCost{<:PolyJuMP.ScalarPolynomialFunction{T},S},
204+
) where {T,S<:MOI.AbstractScalarSet}
205+
return MOI.get(
206+
model.model,
207+
MOI.ConstraintBridgingCost{MOI.ScalarQuadraticFunction{T},S}(),
208+
)
209+
end
210+
201211
function MOI.add_constraint(
202212
model::Optimizer,
203213
func::MOI.AbstractFunction,

test/qcqp.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,26 @@ function test_inner_bridge(x, y, T)
373373
MOI.get(inner, MOI.ListOfModelAttributesSet())
374374
end
375375

376+
function test_constraint_bridging_cost_polynomial(x, y, T)
377+
inner = MOI.Utilities.MockOptimizer(Model{T}())
378+
optimizer = PolyJuMP.QCQP.Optimizer{T}(inner)
379+
F = typeof(
380+
PolyJuMP.ScalarPolynomialFunction(
381+
one(T) * x^3 - x * y^2,
382+
[MOI.VariableIndex(1), MOI.VariableIndex(2)],
383+
),
384+
)
385+
for S in
386+
(MOI.LessThan{T}, MOI.GreaterThan{T}, MOI.EqualTo{T}, MOI.Interval{T})
387+
@test MOI.supports_constraint(optimizer, F, S)
388+
@test MOI.get(optimizer, MOI.ConstraintBridgingCost{F,S}()) == MOI.get(
389+
optimizer,
390+
MOI.ConstraintBridgingCost{MOI.ScalarQuadraticFunction{T},S}(),
391+
)
392+
end
393+
return
394+
end
395+
376396
function runtests(x, y)
377397
for name in names(@__MODULE__; all = true)
378398
if startswith("$name", "test_")

0 commit comments

Comments
 (0)