Skip to content

Commit 9b26dd8

Browse files
committed
sort bridges
1 parent ee8a846 commit 9b26dd8

File tree

2 files changed

+76
-85
lines changed

2 files changed

+76
-85
lines changed

src/Bridges/Constraint/Constraint.jl

Lines changed: 70 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -29,117 +29,108 @@ Add all bridges defined in the `Bridges.Constraint` submodule to `model`.
2929
The coefficient type used is `T`.
3030
"""
3131
function add_all_bridges(model, ::Type{T}) where {T}
32-
if T <: AbstractFloat
33-
MOI.Bridges.add_bridge(model, GreaterToIntervalBridge{T})
34-
MOI.Bridges.add_bridge(model, LessToIntervalBridge{T})
35-
end
36-
MOI.Bridges.add_bridge(model, GreaterToLessBridge{T})
37-
MOI.Bridges.add_bridge(model, LessToGreaterBridge{T})
38-
MOI.Bridges.add_bridge(model, NonnegToNonposBridge{T})
39-
MOI.Bridges.add_bridge(model, NonposToNonnegBridge{T})
40-
MOI.Bridges.add_bridge(model, ScalarizeBridge{T})
41-
MOI.Bridges.add_bridge(model, VectorizeBridge{T})
42-
MOI.Bridges.add_bridge(model, ScalarSlackBridge{T})
43-
MOI.Bridges.add_bridge(model, VectorSlackBridge{T})
44-
MOI.Bridges.add_bridge(model, ScalarFunctionizeBridge{T})
45-
MOI.Bridges.add_bridge(model, VectorFunctionizeBridge{T})
46-
MOI.Bridges.add_bridge(model, ToScalarQuadraticBridge{T})
47-
MOI.Bridges.add_bridge(model, ToVectorQuadraticBridge{T})
48-
MOI.Bridges.add_bridge(model, ToScalarNonlinearBridge{T})
49-
MOI.Bridges.add_bridge(model, SplitHyperRectangleBridge{T})
50-
MOI.Bridges.add_bridge(model, SplitIntervalBridge{T})
51-
MOI.Bridges.add_bridge(model, SplitComplexEqualToBridge{T})
52-
MOI.Bridges.add_bridge(model, SplitComplexZerosBridge{T})
53-
MOI.Bridges.add_bridge(model, QuadtoSOCBridge{T})
54-
# We do not add `(R)SOCtoNonConvexQuad` because it starts with a convex
55-
# conic constraint and generate a non-convex constraint (in the QCP
56-
# interpretation).
57-
MOI.Bridges.add_bridge(model, NormInfinityBridge{T})
58-
MOI.Bridges.add_bridge(model, NormOneBridge{T})
59-
MOI.Bridges.add_bridge(model, GeoMeantoRelEntrBridge{T})
60-
MOI.Bridges.add_bridge(model, GeoMeanBridge{T})
61-
MOI.Bridges.add_bridge(model, GeoMeanToPowerBridge{T})
62-
MOI.Bridges.add_bridge(model, NormToPowerBridge{T})
63-
MOI.Bridges.add_bridge(model, NormOneConeToNormConeBridge{T})
64-
MOI.Bridges.add_bridge(model, SecondOrderConeToNormConeBridge{T})
65-
MOI.Bridges.add_bridge(model, NormInfinityConeToNormConeBridge{T})
66-
MOI.Bridges.add_bridge(model, ComplexNormInfinityToSecondOrderConeBridge{T})
67-
MOI.Bridges.add_bridge(model, RelativeEntropyBridge{T})
68-
MOI.Bridges.add_bridge(model, NormSpectralBridge{T})
69-
MOI.Bridges.add_bridge(model, NormNuclearBridge{T})
70-
MOI.Bridges.add_bridge(model, HermitianToSymmetricPSDBridge{T})
71-
MOI.Bridges.add_bridge(model, SquareBridge{T})
72-
MOI.Bridges.add_bridge(model, SetDotScalingBridge{T})
73-
MOI.Bridges.add_bridge(model, SetDotInverseScalingBridge{T})
74-
MOI.Bridges.add_bridge(model, LogDetBridge{T})
75-
MOI.Bridges.add_bridge(model, RootDetBridge{T})
76-
MOI.Bridges.add_bridge(model, RSOCtoSOCBridge{T})
77-
MOI.Bridges.add_bridge(model, SOCtoRSOCBridge{T})
78-
# We do not add `SOCtoPSDBridge` as transforming the `SOC` to `RSOC` and
79-
# then to `PSD` produces a smaller SDP constraint.
80-
# MOI.Bridges.add_bridge(model, SOCtoPSDBridge{T})
81-
MOI.Bridges.add_bridge(model, RSOCtoPSDBridge{T})
82-
MOI.Bridges.add_bridge(model, IndicatorActiveOnFalseBridge{T})
83-
MOI.Bridges.add_bridge(model, IndicatorSOS1Bridge{T})
84-
MOI.Bridges.add_bridge(model, IndicatorLessToGreaterThanBridge{T})
85-
MOI.Bridges.add_bridge(model, IndicatorGreaterToLessThanBridge{T})
86-
MOI.Bridges.add_bridge(model, SemiToBinaryBridge{T})
87-
MOI.Bridges.add_bridge(model, ZeroOneBridge{T})
88-
MOI.Bridges.add_bridge(model, IntegerToZeroOneBridge{T})
89-
MOI.Bridges.add_bridge(model, InequalityToComplementsBridge{T})
90-
# Do not add by default
91-
# MOI.Bridges.add_bridge(model, NumberConversionBridge{T})
92-
# Constraint programming bridges
9332
MOI.Bridges.add_bridge(model, AllDifferentToCountDistinctBridge{T})
94-
MOI.Bridges.add_bridge(model, ReifiedAllDifferentToCountDistinctBridge{T})
9533
MOI.Bridges.add_bridge(model, BinPackingToMILPBridge{T})
9634
MOI.Bridges.add_bridge(model, CircuitToMILPBridge{T})
35+
MOI.Bridges.add_bridge(model, ComplexNormInfinityToSecondOrderConeBridge{T})
9736
MOI.Bridges.add_bridge(model, CountAtLeastToCountBelongsBridge{T})
9837
MOI.Bridges.add_bridge(model, CountBelongsToMILPBridge{T})
9938
MOI.Bridges.add_bridge(model, CountDistinctToMILPBridge{T})
100-
MOI.Bridges.add_bridge(model, ReifiedCountDistinctToMILPBridge{T})
10139
MOI.Bridges.add_bridge(model, CountGreaterThanToMILPBridge{T})
102-
MOI.Bridges.add_bridge(model, TableToMILPBridge{T})
103-
MOI.Bridges.add_bridge(model, SOS1ToMILPBridge{T})
104-
MOI.Bridges.add_bridge(model, SOS2ToMILPBridge{T})
105-
MOI.Bridges.add_bridge(model, IndicatorToMILPBridge{T})
10640
MOI.Bridges.add_bridge(
10741
model,
10842
ExponentialConeToScalarNonlinearFunctionBridge{T},
10943
)
110-
# Bridges not added by default:
111-
#
112-
# * FunctionConversionBridge
44+
# * FunctionConversionBridge{T}
11345
# This bridge is not added because, even though it is not abstract, it
11446
# is highly parameterized, and parameterized versions such as
11547
# ScalarFunctionizeBridge are added.
116-
# * IndicatorSetMapBridge
48+
MOI.Bridges.add_bridge(model, GeoMeanBridge{T})
49+
MOI.Bridges.add_bridge(model, GeoMeanToPowerBridge{T})
50+
MOI.Bridges.add_bridge(model, GeoMeantoRelEntrBridge{T})
51+
if T <: AbstractFloat
52+
MOI.Bridges.add_bridge(model, GreaterToIntervalBridge{T})
53+
end
54+
MOI.Bridges.add_bridge(model, GreaterToLessBridge{T})
55+
MOI.Bridges.add_bridge(model, HermitianToSymmetricPSDBridge{T})
56+
MOI.Bridges.add_bridge(model, IndicatorActiveOnFalseBridge{T})
57+
MOI.Bridges.add_bridge(model, IndicatorGreaterToLessThanBridge{T})
58+
MOI.Bridges.add_bridge(model, IndicatorLessToGreaterThanBridge{T})
59+
# * IndicatorSetMapBridge{T}
11760
# This bridge is not added because, even though it is not abstract, it
11861
# is highly parameterized, and parameterized versions such as
11962
# IndicatorGreaterToLessThanBridge are added.
120-
# * NormSpecialCaseBridge
63+
MOI.Bridges.add_bridge(model, IndicatorSOS1Bridge{T})
64+
MOI.Bridges.add_bridge(model, IndicatorToMILPBridge{T})
65+
MOI.Bridges.add_bridge(model, InequalityToComplementsBridge{T})
66+
MOI.Bridges.add_bridge(model, IntegerToZeroOneBridge{T})
67+
MOI.Bridges.add_bridge(model, LessToGreaterBridge{T})
68+
if T <: AbstractFloat
69+
MOI.Bridges.add_bridge(model, LessToIntervalBridge{T})
70+
end
71+
MOI.Bridges.add_bridge(model, LogDetBridge{T})
72+
MOI.Bridges.add_bridge(model, NonnegToNonposBridge{T})
73+
MOI.Bridges.add_bridge(model, NonposToNonnegBridge{T})
74+
MOI.Bridges.add_bridge(model, NormInfinityBridge{T})
75+
MOI.Bridges.add_bridge(model, NormInfinityConeToNormConeBridge{T})
76+
MOI.Bridges.add_bridge(model, NormNuclearBridge{T})
77+
MOI.Bridges.add_bridge(model, NormOneBridge{T})
78+
MOI.Bridges.add_bridge(model, NormOneConeToNormConeBridge{T})
79+
# * NormSpecialCaseBridge{T}
12180
# This bridge is not added because, even though it is not abstract, it
12281
# is highly parameterized, and parameterized versions such as
12382
# NormOneConeToNormConeBridge are added.
124-
# * NumberConversionBridge
83+
MOI.Bridges.add_bridge(model, NormSpectralBridge{T})
84+
MOI.Bridges.add_bridge(model, NormToPowerBridge{T})
85+
# * NumberConversionBridge{T}
12586
# This bridge is not added by default because it would silently enable
12687
# models with mixed precision. In most cases, this is a bug in the
12788
# user's code, so we leave this bridge as opt-in.
128-
# * RSOCtoNonConvexQuadBridge
89+
MOI.Bridges.add_bridge(model, QuadtoSOCBridge{T})
90+
MOI.Bridges.add_bridge(model, ReifiedAllDifferentToCountDistinctBridge{T})
91+
MOI.Bridges.add_bridge(model, ReifiedCountDistinctToMILPBridge{T})
92+
MOI.Bridges.add_bridge(model, RelativeEntropyBridge{T})
93+
MOI.Bridges.add_bridge(model, RootDetBridge{T})
94+
# * RSOCtoNonConvexQuadBridge{T}
12995
# This bridge is not added by default because it starts with a convex
13096
# conic constraint and generate a non-convex constraint (in the QCP
13197
# interpretation).
132-
# * SOCtoNonConvexQuadBridge
98+
MOI.Bridges.add_bridge(model, RSOCtoPSDBridge{T})
99+
MOI.Bridges.add_bridge(model, RSOCtoSOCBridge{T})
100+
MOI.Bridges.add_bridge(model, ScalarFunctionizeBridge{T})
101+
MOI.Bridges.add_bridge(model, ScalarizeBridge{T})
102+
MOI.Bridges.add_bridge(model, ScalarSlackBridge{T})
103+
MOI.Bridges.add_bridge(model, SecondOrderConeToNormConeBridge{T})
104+
MOI.Bridges.add_bridge(model, SemiToBinaryBridge{T})
105+
# * SetConversionBridge{T}
106+
# This bridge is not added because, even though it is not abstract, it
107+
# is highly parameterized, and it intended for use by MOI extensions.
108+
MOI.Bridges.add_bridge(model, SetDotInverseScalingBridge{T})
109+
MOI.Bridges.add_bridge(model, SetDotScalingBridge{T})
110+
# * SOCtoNonConvexQuadBridge{T}
133111
# This bridge is not added by default because it starts with a convex
134112
# conic constraint and generate a non-convex constraint (in the QCP
135113
# interpretation).
136-
# * SOCtoPSDBridge
114+
# * SOCtoPSDBridge{T}
137115
# This bridge is not added because transforming the `SOC` to `RSOC` and
138116
# then to `PSD` produces a smaller SDP constraint. `RSOCtoPSDBridge` is
139117
# added by default.
140-
# * SetConversionBridge
141-
# This bridge is not added because, even though it is not abstract, it
142-
# is highly parameterized, and it intended for use by MOI extensions.
118+
MOI.Bridges.add_bridge(model, SOCtoRSOCBridge{T})
119+
MOI.Bridges.add_bridge(model, SOS1ToMILPBridge{T})
120+
MOI.Bridges.add_bridge(model, SOS2ToMILPBridge{T})
121+
MOI.Bridges.add_bridge(model, SplitComplexEqualToBridge{T})
122+
MOI.Bridges.add_bridge(model, SplitComplexZerosBridge{T})
123+
MOI.Bridges.add_bridge(model, SplitHyperRectangleBridge{T})
124+
MOI.Bridges.add_bridge(model, SplitIntervalBridge{T})
125+
MOI.Bridges.add_bridge(model, SquareBridge{T})
126+
MOI.Bridges.add_bridge(model, TableToMILPBridge{T})
127+
MOI.Bridges.add_bridge(model, ToScalarNonlinearBridge{T})
128+
MOI.Bridges.add_bridge(model, ToScalarQuadraticBridge{T})
129+
MOI.Bridges.add_bridge(model, ToVectorQuadraticBridge{T})
130+
MOI.Bridges.add_bridge(model, VectorFunctionizeBridge{T})
131+
MOI.Bridges.add_bridge(model, VectorizeBridge{T})
132+
MOI.Bridges.add_bridge(model, VectorSlackBridge{T})
133+
MOI.Bridges.add_bridge(model, ZeroOneBridge{T})
143134
return
144135
end
145136

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

0 commit comments

Comments
 (0)