@@ -29,117 +29,108 @@ Add all bridges defined in the `Bridges.Constraint` submodule to `model`.
29
29
The coefficient type used is `T`.
30
30
"""
31
31
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
93
32
MOI. Bridges. add_bridge (model, AllDifferentToCountDistinctBridge{T})
94
- MOI. Bridges. add_bridge (model, ReifiedAllDifferentToCountDistinctBridge{T})
95
33
MOI. Bridges. add_bridge (model, BinPackingToMILPBridge{T})
96
34
MOI. Bridges. add_bridge (model, CircuitToMILPBridge{T})
35
+ MOI. Bridges. add_bridge (model, ComplexNormInfinityToSecondOrderConeBridge{T})
97
36
MOI. Bridges. add_bridge (model, CountAtLeastToCountBelongsBridge{T})
98
37
MOI. Bridges. add_bridge (model, CountBelongsToMILPBridge{T})
99
38
MOI. Bridges. add_bridge (model, CountDistinctToMILPBridge{T})
100
- MOI. Bridges. add_bridge (model, ReifiedCountDistinctToMILPBridge{T})
101
39
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})
106
40
MOI. Bridges. add_bridge (
107
41
model,
108
42
ExponentialConeToScalarNonlinearFunctionBridge{T},
109
43
)
110
- # Bridges not added by default:
111
- #
112
- # * FunctionConversionBridge
44
+ # * FunctionConversionBridge{T}
113
45
# This bridge is not added because, even though it is not abstract, it
114
46
# is highly parameterized, and parameterized versions such as
115
47
# 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}
117
60
# This bridge is not added because, even though it is not abstract, it
118
61
# is highly parameterized, and parameterized versions such as
119
62
# 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}
121
80
# This bridge is not added because, even though it is not abstract, it
122
81
# is highly parameterized, and parameterized versions such as
123
82
# NormOneConeToNormConeBridge are added.
124
- # * NumberConversionBridge
83
+ MOI. Bridges. add_bridge (model, NormSpectralBridge{T})
84
+ MOI. Bridges. add_bridge (model, NormToPowerBridge{T})
85
+ # * NumberConversionBridge{T}
125
86
# This bridge is not added by default because it would silently enable
126
87
# models with mixed precision. In most cases, this is a bug in the
127
88
# 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}
129
95
# This bridge is not added by default because it starts with a convex
130
96
# conic constraint and generate a non-convex constraint (in the QCP
131
97
# 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}
133
111
# This bridge is not added by default because it starts with a convex
134
112
# conic constraint and generate a non-convex constraint (in the QCP
135
113
# interpretation).
136
- # * SOCtoPSDBridge
114
+ # * SOCtoPSDBridge{T}
137
115
# This bridge is not added because transforming the `SOC` to `RSOC` and
138
116
# then to `PSD` produces a smaller SDP constraint. `RSOCtoPSDBridge` is
139
117
# 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})
143
134
return
144
135
end
145
136
0 commit comments