Skip to content

Commit 5feb1c0

Browse files
authored
[Bridges.Variable] add bridges in alphabetical order and change weight (#2599)
1 parent c4cd518 commit 5feb1c0

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

src/Bridges/Variable/Variable.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ Add all bridges defined in the `Bridges.Variable` submodule to `model`.
2525
The coefficient type used is `T`.
2626
"""
2727
function add_all_bridges(model, ::Type{T}) where {T}
28-
MOI.Bridges.add_bridge(model, ZerosBridge{T})
2928
MOI.Bridges.add_bridge(model, FreeBridge{T})
30-
MOI.Bridges.add_bridge(model, NonposToNonnegBridge{T})
31-
MOI.Bridges.add_bridge(model, VectorizeBridge{T})
32-
MOI.Bridges.add_bridge(model, SOCtoRSOCBridge{T})
33-
MOI.Bridges.add_bridge(model, RSOCtoSOCBridge{T})
34-
MOI.Bridges.add_bridge(model, RSOCtoPSDBridge{T})
3529
MOI.Bridges.add_bridge(model, HermitianToSymmetricPSDBridge{T})
30+
MOI.Bridges.add_bridge(model, NonposToNonnegBridge{T})
3631
MOI.Bridges.add_bridge(model, ParameterToEqualToBridge{T})
32+
MOI.Bridges.add_bridge(model, RSOCtoPSDBridge{T})
33+
MOI.Bridges.add_bridge(model, RSOCtoSOCBridge{T})
34+
MOI.Bridges.add_bridge(model, SOCtoRSOCBridge{T})
35+
MOI.Bridges.add_bridge(model, VectorizeBridge{T})
36+
MOI.Bridges.add_bridge(model, ZerosBridge{T})
3737
return
3838
end
3939

src/Bridges/Variable/bridges/RSOCtoPSDBridge.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ end
5656
const RSOCtoPSD{T,OT<:MOI.ModelLike} =
5757
SingleBridgeOptimizer{RSOCtoPSDBridge{T},OT}
5858

59+
# This bridge destorys a lot of structure and adding PSD variables is almost
60+
# always undesirable. We give this bridge an arbitrarily hight cost so that it
61+
# is used only if necessary.
62+
MOI.Bridges.bridging_cost(::Type{<:RSOCtoPSDBridge}) = 10.0
63+
5964
function bridge_constrained_variable(
6065
::Type{RSOCtoPSDBridge{T}},
6166
model::MOI.ModelLike,

test/Bridges/lazy_bridge_optimizer.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,13 +1041,13 @@ Objective function of type `MOI.ScalarQuadraticFunction{$T}` is not supported an
10411041
"""
10421042
Bridge graph with 2 variable nodes, 5 constraint nodes and 2 objective nodes.
10431043
[1] constrained variables in `MOI.Reals` are bridged (distance 1) by $(MOI.Bridges.Variable.FreeBridge{T}).
1044-
[2] constrained variables in `MOI.RotatedSecondOrderCone` are bridged (distance 2) by $(MOI.Bridges.Variable.RSOCtoPSDBridge{T}).
1045-
(1) `MOI.ScalarQuadraticFunction{$T}`-in-`MOI.GreaterThan{$T}` constraints are bridged (distance 5) by $(MOI.Bridges.Constraint.QuadtoSOCBridge{T}).
1046-
(2) `MOI.VectorAffineFunction{$T}`-in-`MOI.RotatedSecondOrderCone` constraints are bridged (distance 4) by $(MOI.Bridges.Constraint.VectorSlackBridge{T,MOI.VectorAffineFunction{T},MOI.RotatedSecondOrderCone}).
1044+
[2] constrained variables in `MOI.RotatedSecondOrderCone` are bridged (distance 11) by $(MOI.Bridges.Variable.RSOCtoPSDBridge{T}).
1045+
(1) `MOI.ScalarQuadraticFunction{$T}`-in-`MOI.GreaterThan{$T}` constraints are bridged (distance 14) by $(MOI.Bridges.Constraint.QuadtoSOCBridge{T}).
1046+
(2) `MOI.VectorAffineFunction{$T}`-in-`MOI.RotatedSecondOrderCone` constraints are bridged (distance 13) by $(MOI.Bridges.Constraint.VectorSlackBridge{T,MOI.VectorAffineFunction{T},MOI.RotatedSecondOrderCone}).
10471047
(3) `MOI.VariableIndex`-in-`MOI.EqualTo{$T}` constraints are bridged (distance 1) by $(MOI.Bridges.Constraint.ScalarFunctionizeBridge{T,MOI.EqualTo{T}}).
10481048
(4) `MOI.VectorAffineFunction{$T}`-in-`MOI.Zeros` constraints are bridged (distance 1) by $(MOI.Bridges.Constraint.ScalarizeBridge{T,MOI.ScalarAffineFunction{T},MOI.EqualTo{T}}).
1049-
(5) `MOI.ScalarQuadraticFunction{$T}`-in-`MOI.LessThan{$T}` constraints are bridged (distance 5) by $(MOI.Bridges.Constraint.QuadtoSOCBridge{T}).
1050-
|1| objective function of type `MOI.ScalarQuadraticFunction{$T}` is bridged (distance 13) by $(MOI.Bridges.Objective.SlackBridge{T,MOI.ScalarQuadraticFunction{T},MOI.ScalarQuadraticFunction{T}}).
1049+
(5) `MOI.ScalarQuadraticFunction{$T}`-in-`MOI.LessThan{$T}` constraints are bridged (distance 14) by $(MOI.Bridges.Constraint.QuadtoSOCBridge{T}).
1050+
|1| objective function of type `MOI.ScalarQuadraticFunction{$T}` is bridged (distance 31) by $(MOI.Bridges.Objective.SlackBridge{T,MOI.ScalarQuadraticFunction{T},MOI.ScalarQuadraticFunction{T}}).
10511051
|2| objective function of type `MOI.VariableIndex` is bridged (distance 1) by $(MOI.Bridges.Objective.FunctionizeBridge{T,MOI.VariableIndex}).
10521052
""",
10531053
)

0 commit comments

Comments
 (0)