@@ -22,122 +22,115 @@ for filename in readdir(joinpath(@__DIR__, "bridges"); join = true)
2222end
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
3029The 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
142135end
143136
0 commit comments