Skip to content

Commit

Permalink
Fix bridge addition with complex coef (#90)
Browse files Browse the repository at this point in the history
* Fix bridge addition with complex coef

* Fix format
  • Loading branch information
blegat authored Jun 30, 2023
1 parent f143991 commit 4fa7efb
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 16 deletions.
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0"
SemialgebraicSets = "8e049039-38e8-557d-ae3a-bc521ccf6204"

[compat]
DynamicPolynomials = "0.5"
JuMP = "1"
MathOptInterface = "1"
MultivariateBases = "0.2"
Expand Down
30 changes: 16 additions & 14 deletions src/constraint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -78,21 +78,24 @@ by the bridges.
bridges(S::Type{<:MOI.AbstractSet}) = bridges(MOI.VectorOfVariables, S)

function bridges(
::Type{<:MOI.AbstractVectorFunction},
F::Type{<:MOI.AbstractVectorFunction},
::Type{<:ZeroPolynomialSet{FullSpace}},
)
return [Bridges.Constraint.ZeroPolynomialBridge]
return [(Bridges.Constraint.ZeroPolynomialBridge, _coef_type(F))]
end

function bridges(
::Type{<:MOI.AbstractVectorFunction},
F::Type{<:MOI.AbstractVectorFunction},
::Type{<:ZeroPolynomialSet{<:AbstractAlgebraicSet}},
)
return [Bridges.Constraint.ZeroPolynomialInAlgebraicSetBridge]
return [(
Bridges.Constraint.ZeroPolynomialInAlgebraicSetBridge,
_coef_type(F),
)]
end

function bridges(::Type{<:MOI.AbstractVectorFunction}, ::Type{<:PlusMinusSet})
return [Bridges.Constraint.PlusMinusBridge]
function bridges(F::Type{<:MOI.AbstractVectorFunction}, ::Type{<:PlusMinusSet})
return [(Bridges.Constraint.PlusMinusBridge, _coef_type(F))]
end

"""
Expand Down Expand Up @@ -128,8 +131,9 @@ end
function bridgeable(c::JuMP.AbstractConstraint, S::Type{<:MOI.AbstractSet})
bridge_types = bridges(S)
for bridge_type in bridge_types
c = BridgeableConstraint(c, bridge_type)
concrete_bridge_type = _concrete(bridge_type{Float64}, S)
BT, T = bridge_type
c = BridgeableConstraint(c, BT; coefficient_type = T)
concrete_bridge_type = _concrete(BT{T}, S)
for (ST,) in
MOI.Bridges.added_constrained_variable_types(concrete_bridge_type)
c = bridgeable(c, ST)
Expand All @@ -151,12 +155,10 @@ function bridgeable(
)
bridge_types = bridges(F, S)
for bridge_type in bridge_types
c = BridgeableConstraint(c, bridge_type)
concrete_bridge_type = MOI.Bridges.Constraint.concrete_bridge_type(
bridge_type{_coef_type(F)},
F,
S,
)
BT, T = bridge_type
c = BridgeableConstraint(c, BT, coefficient_type = T)
concrete_bridge_type =
MOI.Bridges.Constraint.concrete_bridge_type(BT{T}, F, S)
for (ST,) in
MOI.Bridges.added_constrained_variable_types(concrete_bridge_type)
c = bridgeable(c, ST)
Expand Down
2 changes: 2 additions & 0 deletions test/constraint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ function test_NonNeg(var)
S = DummyPolyModule.NonNeg
jump_set = DummyPolyModule.DummyNonNeg()
_test_constraint(m, @constraint(m, x >= y), S, jump_set, x - y, [], [])
@test DummyPolyModule.DummyNonNegBridge{Float64} in m.bridge_types
_test_constraint(
m,
@constraint(m, im * x >= y),
Expand All @@ -182,6 +183,7 @@ function test_NonNeg(var)
[],
T = ComplexF64,
)
@test DummyPolyModule.DummyNonNegBridge{ComplexF64} in m.bridge_types
_test_constraint(
m,
@constraint(m, p >= q + 1, domain = @set y >= 1 && dom),
Expand Down
4 changes: 2 additions & 2 deletions test/testpolymodule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ JuMP.reshape_set(::NonNeg, ::PolyJuMP.PolynomialShape) = DummyNonNeg()

struct DummyNonNegBridge{T,F} <: MOI.Bridges.Constraint.AbstractBridge end
function PolyJuMP.bridges(
::Type{<:MOI.AbstractVectorFunction},
F::Type{<:MOI.AbstractVectorFunction},
::Type{<:NonNeg},
)
return [DummyNonNegBridge]
return [(DummyNonNegBridge, PolyJuMP._coef_type(F))]
end
function MOI.Bridges.added_constrained_variable_types(
::Type{<:DummyNonNegBridge},
Expand Down

0 comments on commit 4fa7efb

Please sign in to comment.