Skip to content

Commit 75d59ea

Browse files
committed
sort bridges
1 parent 21a4768 commit 75d59ea

File tree

2 files changed

+87
-94
lines changed

2 files changed

+87
-94
lines changed

src/Bridges/Constraint/Constraint.jl

Lines changed: 81 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -22,122 +22,115 @@ for filename in readdir(joinpath(@__DIR__, "bridges"); join = true)
2222
end
2323

2424
"""
25-
add_all_bridges(bridged_model, ::Type{T}) where {T}
25+
add_all_bridges(model, ::Type{T}) where {T}
2626
27-
Add all bridges defined in the `Bridges.Constraint` submodule to
28-
`bridged_model`.
27+
Add all bridges defined in the `Bridges.Constraint` submodule to `model`.
2928
3029
The coefficient type used is `T`.
3130
"""
32-
function add_all_bridges(bridged_model, ::Type{T}) where {T}
33-
if T <: AbstractFloat
34-
MOI.Bridges.add_bridge(bridged_model, GreaterToIntervalBridge{T})
35-
MOI.Bridges.add_bridge(bridged_model, LessToIntervalBridge{T})
36-
end
37-
MOI.Bridges.add_bridge(bridged_model, GreaterToLessBridge{T})
38-
MOI.Bridges.add_bridge(bridged_model, LessToGreaterBridge{T})
39-
MOI.Bridges.add_bridge(bridged_model, NonnegToNonposBridge{T})
40-
MOI.Bridges.add_bridge(bridged_model, NonposToNonnegBridge{T})
41-
MOI.Bridges.add_bridge(bridged_model, ScalarizeBridge{T})
42-
MOI.Bridges.add_bridge(bridged_model, VectorizeBridge{T})
43-
MOI.Bridges.add_bridge(bridged_model, ScalarSlackBridge{T})
44-
MOI.Bridges.add_bridge(bridged_model, VectorSlackBridge{T})
45-
MOI.Bridges.add_bridge(bridged_model, ScalarFunctionizeBridge{T})
46-
MOI.Bridges.add_bridge(bridged_model, VectorFunctionizeBridge{T})
47-
MOI.Bridges.add_bridge(bridged_model, ToScalarQuadraticBridge{T})
48-
MOI.Bridges.add_bridge(bridged_model, ToVectorQuadraticBridge{T})
49-
MOI.Bridges.add_bridge(bridged_model, ToScalarNonlinearBridge{T})
50-
MOI.Bridges.add_bridge(bridged_model, SplitHyperRectangleBridge{T})
51-
MOI.Bridges.add_bridge(bridged_model, SplitIntervalBridge{T})
52-
MOI.Bridges.add_bridge(bridged_model, SplitComplexEqualToBridge{T})
53-
MOI.Bridges.add_bridge(bridged_model, SplitComplexZerosBridge{T})
54-
MOI.Bridges.add_bridge(bridged_model, QuadtoSOCBridge{T})
55-
MOI.Bridges.add_bridge(bridged_model, NormInfinityBridge{T})
56-
MOI.Bridges.add_bridge(bridged_model, NormOneBridge{T})
57-
MOI.Bridges.add_bridge(bridged_model, GeoMeantoRelEntrBridge{T})
58-
MOI.Bridges.add_bridge(bridged_model, GeoMeanBridge{T})
59-
MOI.Bridges.add_bridge(bridged_model, GeoMeanToPowerBridge{T})
60-
MOI.Bridges.add_bridge(bridged_model, NormToPowerBridge{T})
61-
MOI.Bridges.add_bridge(bridged_model, NormOneConeToNormConeBridge{T})
62-
MOI.Bridges.add_bridge(bridged_model, SecondOrderConeToNormConeBridge{T})
63-
MOI.Bridges.add_bridge(bridged_model, NormInfinityConeToNormConeBridge{T})
64-
MOI.Bridges.add_bridge(
65-
bridged_model,
66-
ComplexNormInfinityToSecondOrderConeBridge{T},
67-
)
68-
MOI.Bridges.add_bridge(bridged_model, RelativeEntropyBridge{T})
69-
MOI.Bridges.add_bridge(bridged_model, NormSpectralBridge{T})
70-
MOI.Bridges.add_bridge(bridged_model, NormNuclearBridge{T})
71-
MOI.Bridges.add_bridge(bridged_model, HermitianToSymmetricPSDBridge{T})
72-
MOI.Bridges.add_bridge(bridged_model, SquareBridge{T})
73-
MOI.Bridges.add_bridge(bridged_model, SetDotScalingBridge{T})
74-
MOI.Bridges.add_bridge(bridged_model, SetDotInverseScalingBridge{T})
75-
MOI.Bridges.add_bridge(bridged_model, LogDetBridge{T})
76-
MOI.Bridges.add_bridge(bridged_model, RootDetBridge{T})
77-
MOI.Bridges.add_bridge(bridged_model, RSOCtoSOCBridge{T})
78-
MOI.Bridges.add_bridge(bridged_model, SOCtoRSOCBridge{T})
79-
MOI.Bridges.add_bridge(bridged_model, RSOCtoPSDBridge{T})
80-
MOI.Bridges.add_bridge(bridged_model, IndicatorActiveOnFalseBridge{T})
81-
MOI.Bridges.add_bridge(bridged_model, IndicatorSOS1Bridge{T})
82-
MOI.Bridges.add_bridge(bridged_model, IndicatorLessToGreaterThanBridge{T})
83-
MOI.Bridges.add_bridge(bridged_model, IndicatorGreaterToLessThanBridge{T})
84-
MOI.Bridges.add_bridge(bridged_model, SemiToBinaryBridge{T})
85-
MOI.Bridges.add_bridge(bridged_model, ZeroOneBridge{T})
86-
MOI.Bridges.add_bridge(bridged_model, IntegerToZeroOneBridge{T})
87-
MOI.Bridges.add_bridge(bridged_model, InequalityToComplementsBridge{T})
88-
MOI.Bridges.add_bridge(bridged_model, AllDifferentToCountDistinctBridge{T})
31+
function add_all_bridges(model, ::Type{T}) where {T}
32+
MOI.Bridges.add_bridge(model, AllDifferentToCountDistinctBridge{T})
33+
MOI.Bridges.add_bridge(model, BinPackingToMILPBridge{T})
34+
MOI.Bridges.add_bridge(model, CircuitToMILPBridge{T})
35+
MOI.Bridges.add_bridge(model, ComplexNormInfinityToSecondOrderConeBridge{T})
36+
MOI.Bridges.add_bridge(model, CountAtLeastToCountBelongsBridge{T})
37+
MOI.Bridges.add_bridge(model, CountBelongsToMILPBridge{T})
38+
MOI.Bridges.add_bridge(model, CountDistinctToMILPBridge{T})
39+
MOI.Bridges.add_bridge(model, CountGreaterThanToMILPBridge{T})
8940
MOI.Bridges.add_bridge(
90-
bridged_model,
91-
ReifiedAllDifferentToCountDistinctBridge{T},
92-
)
93-
MOI.Bridges.add_bridge(bridged_model, BinPackingToMILPBridge{T})
94-
MOI.Bridges.add_bridge(bridged_model, CircuitToMILPBridge{T})
95-
MOI.Bridges.add_bridge(bridged_model, CountAtLeastToCountBelongsBridge{T})
96-
MOI.Bridges.add_bridge(bridged_model, CountBelongsToMILPBridge{T})
97-
MOI.Bridges.add_bridge(bridged_model, CountDistinctToMILPBridge{T})
98-
MOI.Bridges.add_bridge(bridged_model, ReifiedCountDistinctToMILPBridge{T})
99-
MOI.Bridges.add_bridge(bridged_model, CountGreaterThanToMILPBridge{T})
100-
MOI.Bridges.add_bridge(bridged_model, TableToMILPBridge{T})
101-
MOI.Bridges.add_bridge(bridged_model, SOS1ToMILPBridge{T})
102-
MOI.Bridges.add_bridge(bridged_model, SOS2ToMILPBridge{T})
103-
MOI.Bridges.add_bridge(bridged_model, IndicatorToMILPBridge{T})
104-
MOI.Bridges.add_bridge(
105-
bridged_model,
41+
model,
10642
ExponentialConeToScalarNonlinearFunctionBridge{T},
10743
)
108-
# Bridges not added by default:
109-
#
110-
# * FunctionConversionBridge
44+
# * FunctionConversionBridge{T}
11145
# This bridge is not added because, even though it is not abstract, it
11246
# is highly parameterized, and parameterized versions such as
11347
# ScalarFunctionizeBridge are added.
114-
# * 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}
11560
# This bridge is not added because, even though it is not abstract, it
11661
# is highly parameterized, and parameterized versions such as
11762
# IndicatorGreaterToLessThanBridge are added.
118-
# * 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}
11980
# This bridge is not added because, even though it is not abstract, it
12081
# is highly parameterized, and parameterized versions such as
12182
# NormOneConeToNormConeBridge are added.
122-
# * NumberConversionBridge
83+
MOI.Bridges.add_bridge(model, NormSpectralBridge{T})
84+
MOI.Bridges.add_bridge(model, NormToPowerBridge{T})
85+
# * NumberConversionBridge{T}
12386
# This bridge is not added by default because it would silently enable
12487
# models with mixed precision. In most cases, this is a bug in the
12588
# user's code, so we leave this bridge as opt-in.
126-
# * 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}
12795
# This bridge is not added by default because it starts with a convex
12896
# conic constraint and generate a non-convex constraint (in the QCP
12997
# interpretation).
130-
# * 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}
131111
# This bridge is not added by default because it starts with a convex
132112
# conic constraint and generate a non-convex constraint (in the QCP
133113
# interpretation).
134-
# * SOCtoPSDBridge
114+
# * SOCtoPSDBridge{T}
135115
# This bridge is not added because transforming the `SOC` to `RSOC` and
136116
# then to `PSD` produces a smaller SDP constraint. `RSOCtoPSDBridge` is
137117
# added by default.
138-
# * SetConversionBridge
139-
# This bridge is not added because, even though it is not abstract, it
140-
# 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})
141134
return
142135
end
143136

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)