Skip to content

Commit 1e85da7

Browse files
committed
Define bridge in MOIB
1 parent 2b9719b commit 1e85da7

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

src/Bridges/Bridges.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@ const CI = MOI.ConstraintIndex
2020

2121
include("bridge.jl")
2222
include("intervalbridge.jl")
23+
@bridge SplitInterval SplitIntervalBridge () (Interval,) () () () (ScalarAffineFunction,) () ()
2324
include("geomeanbridge.jl")
25+
@bridge GeoMean GeoMeanBridge () () (GeometricMeanCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
2426
include("detbridge.jl")
27+
@bridge LogDet LogDetBridge () () (LogDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
28+
@bridge RootDet RootDetBridge () () (RootDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
2529
include("soctopsdbridge.jl")
30+
@bridge SOCtoPSD SOCtoPSDCBridge () () (SecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
31+
@bridge RSOCtoPSD RSOCtoPSDCBridge () () (RotatedSecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
2632

2733
end # module

test/bridge.jl

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# Model not supporting Interval
22
MOIU.@model SimpleModel () (EqualTo, GreaterThan, LessThan) (Zeros, Nonnegatives, Nonpositives, RotatedSecondOrderCone, GeometricMeanCone, PositiveSemidefiniteConeTriangle, ExponentialCone) () (SingleVariable,) (ScalarAffineFunction,) (VectorOfVariables,) (VectorAffineFunction,)
3-
MOIB.@bridge SplitInterval MOIB.SplitIntervalBridge () (Interval,) () () () (ScalarAffineFunction,) () ()
43

54
@testset "Copy test" begin
65
mock = MOIU.MockOptimizer(SimpleModel{Float64}())
7-
bridgedmock = SplitInterval{Float64}(mock)
6+
bridgedmock = MOIB.SplitInterval{Float64}(mock)
87
MOIT.failcopytestc(bridgedmock)
98
MOIT.failcopytestia(bridgedmock)
109
MOIT.failcopytestva(bridgedmock)
@@ -20,10 +19,10 @@ function test_noc(bridgedmock, F, S, n)
2019
end
2120

2221
@testset "BridgeOptimizer" begin
23-
const model = SplitInterval{Int}(SimpleModel{Int}())
22+
const model = MOIB.SplitInterval{Int}(SimpleModel{Int}())
2423

2524
@testset "Name test" begin
26-
MOIT.nametest(SplitInterval{Float64}(SimpleModel{Float64}()))
25+
MOIT.nametest(MOIB.SplitInterval{Float64}(SimpleModel{Float64}()))
2726
end
2827

2928
@testset "Custom test" begin
@@ -66,16 +65,10 @@ end
6665
mock = MOIU.MockOptimizer(SimpleModel{Float64}())
6766

6867
@testset "Continuous Linear" begin
69-
MOIT.contlineartest(SplitInterval{Float64}(mock), MOIT.TestConfig(solve=false))
68+
MOIT.contlineartest(MOIB.SplitInterval{Float64}(mock), MOIT.TestConfig(solve=false))
7069
end
7170
end
7271

73-
MOIB.@bridge GeoMean MOIB.GeoMeanBridge () () (GeometricMeanCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
74-
MOIB.@bridge SOCtoPSD MOIB.SOCtoPSDCBridge () () (SecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
75-
MOIB.@bridge RSOCtoPSD MOIB.RSOCtoPSDCBridge () () (RotatedSecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
76-
MOIB.@bridge LogDet MOIB.LogDetBridge () () (LogDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
77-
MOIB.@bridge RootDet MOIB.RootDetBridge () () (RootDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
78-
7972
# Test deletion of bridge
8073
function test_delete_bridge(m::MOIB.AbstractBridgeOptimizer, ci::MOI.ConstraintIndex{F, S}, nvars::Int, nocs::Tuple) where {F, S}
8174
@test MOI.get(m, MOI.NumberOfVariables()) == nvars
@@ -111,7 +104,7 @@ end
111104
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [0]),
112105
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1.0]),
113106
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [6.0, 6.0]))
114-
bridgedmock = SplitInterval{Float64}(mock)
107+
bridgedmock = MOIB.SplitInterval{Float64}(mock)
115108
MOIT.linear10test(bridgedmock, config)
116109
ci = first(MOI.get(bridgedmock, MOI.ListOfConstraintIndices{MOI.ScalarAffineFunction{Float64}, MOI.Interval{Float64}}()))
117110
@test MOI.canmodifyconstraint(bridgedmock, ci, MOI.ScalarAffineFunction{Float64})
@@ -125,7 +118,7 @@ end
125118

126119
@testset "GeoMean" begin
127120
mock.optimize! = (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [ones(4); 2; 2; 2])
128-
bridgedmock = GeoMean{Float64}(mock)
121+
bridgedmock = MOIB.GeoMean{Float64}(mock)
129122
MOIT.geomean1vtest(bridgedmock, config)
130123
MOIT.geomean1ftest(bridgedmock, config)
131124
@test !MOI.canget(bridgedmock, MOI.ConstraintDual(), MOI.ConstraintIndex{MOI.VectorOfVariables, MOI.GeometricMeanCone})
@@ -136,7 +129,7 @@ end
136129
end
137130

138131
@testset "SOCtoPSD" begin
139-
bridgedmock = SOCtoPSD{Float64}(mock)
132+
bridgedmock = MOIB.SOCtoPSD{Float64}(mock)
140133
mock.optimize! = (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1/√2, 1/√2],
141134
(MOI.VectorAffineFunction{Float64}, MOI.PositiveSemidefiniteConeTriangle) => [[2/2, -1/2, 2/4, -1/2, 2/4, 2/4]],
142135
(MOI.VectorAffineFunction{Float64}, MOI.Zeros) => [[-√2]])
@@ -148,7 +141,7 @@ end
148141
end
149142

150143
@testset "RSOCtoPSD" begin
151-
bridgedmock = RSOCtoPSD{Float64}(mock)
144+
bridgedmock = MOIB.RSOCtoPSD{Float64}(mock)
152145
mock.optimize! = (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1/√2, 1/√2, 0.5, 1.0],
153146
(MOI.SingleVariable, MOI.EqualTo{Float64}) => [-√2, -1/√2],
154147
(MOI.VectorAffineFunction{Float64}, MOI.PositiveSemidefiniteConeTriangle) => [[2, -1/2, 2/8, -1/2, 2/8, 2/8]])
@@ -162,7 +155,7 @@ end
162155
end
163156

164157
@testset "LogDet" begin
165-
bridgedmock = LogDet{Float64}(mock)
158+
bridgedmock = MOIB.LogDet{Float64}(mock)
166159
mock.optimize! = (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [0, 1, 0, 1, 1, 0, 1, 0, 0])
167160
MOIT.logdett1vtest(bridgedmock, config)
168161
MOIT.logdett1ftest(bridgedmock, config)
@@ -173,7 +166,7 @@ end
173166
end
174167

175168
@testset "RootDet" begin
176-
bridgedmock = RootDet{Float64}(mock)
169+
bridgedmock = MOIB.RootDet{Float64}(mock)
177170
mock.optimize! = (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1, 1, 0, 1, 1, 0, 1])
178171
MOIT.rootdett1vtest(bridgedmock, config)
179172
MOIT.rootdett1ftest(bridgedmock, config)

0 commit comments

Comments
 (0)