Skip to content

Commit 56ef4fd

Browse files
committed
improvement and tests updated
1 parent 591072b commit 56ef4fd

File tree

9 files changed

+32
-32
lines changed

9 files changed

+32
-32
lines changed

src/Bridges/Bridges.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ include("singlebridgeoptimizer.jl")
2424
include("lazybridgeoptimizer.jl")
2525

2626
# This is used by JuMP and removes the need to update JuMP everytime a bridge is added
27-
MOIU.@model AllBridgedConstraints () (Interval,) (SecondOrderCone, RotatedSecondOrderCone, GeometricMeanCone, LogDetConeTriangle, RootDetConeTriangle) () () (ScalarAffineFunction,) (VectorOfVariables,) (VectorAffineFunction,)
27+
MOIU.@model AllBridgedConstraints () (MOI.Interval,) (MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone, MOI.LogDetConeTriangle, MOI.RootDetConeTriangle) () () (MOI.ScalarAffineFunction,) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
2828
"""
2929
fullbridgeoptimizer(model::MOI.ModelLike, ::Type{T}) where T
3030
@@ -44,18 +44,18 @@ function fullbridgeoptimizer(model::MOI.ModelLike, ::Type{T}) where T
4444
end
4545

4646
include("intervalbridge.jl")
47-
@bridge SplitInterval SplitIntervalBridge () (Interval,) () () (SingleVariable,) (ScalarAffineFunction, ScalarQuadraticFunction) () ()
47+
@bridge SplitInterval SplitIntervalBridge () (MOI.Interval,) () () (MOI.SingleVariable,) (MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction) () ()
4848
include("rsocbridge.jl")
49-
@bridge RSOC RSOCBridge () () (RotatedSecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
49+
@bridge RSOC RSOCBridge () () (MOI.RotatedSecondOrderCone,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
5050
include("geomeanbridge.jl")
51-
@bridge GeoMean GeoMeanBridge () () (GeometricMeanCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
51+
@bridge GeoMean GeoMeanBridge () () (MOI.GeometricMeanCone,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
5252
include("squarepsdbridge.jl")
53-
@bridge SquarePSD SquarePSDBridge () () (PositiveSemidefiniteConeSquare,) () () () (VectorOfVariables,) (VectorAffineFunction, VectorQuadraticFunction)
53+
@bridge SquarePSD SquarePSDBridge () () (MOI.PositiveSemidefiniteConeSquare,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction, MOI.VectorQuadraticFunction)
5454
include("detbridge.jl")
55-
@bridge LogDet LogDetBridge () () (LogDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
56-
@bridge RootDet RootDetBridge () () (RootDetConeTriangle,) () () () (VectorOfVariables,) (VectorAffineFunction,)
55+
@bridge LogDet LogDetBridge () () (MOI.LogDetConeTriangle,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
56+
@bridge RootDet RootDetBridge () () (MOI.RootDetConeTriangle,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
5757
include("soctopsdbridge.jl")
58-
@bridge SOCtoPSD SOCtoPSDBridge () () (SecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
59-
@bridge RSOCtoPSD RSOCtoPSDBridge () () (RotatedSecondOrderCone,) () () () (VectorOfVariables,) (VectorAffineFunction,)
58+
@bridge SOCtoPSD SOCtoPSDBridge () () (MOI.SecondOrderCone,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
59+
@bridge RSOCtoPSD RSOCtoPSDBridge () () (MOI.RotatedSecondOrderCone,) () () () (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
6060

6161
end # module

src/Bridges/singlebridgeoptimizer.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ macro bridge(modelname, bridge, ss, sst, vs, vst, sf, sft, vf, vft)
4545
esc(quote
4646
$MOIU.@model $bridged_model_name $ss $sst $vs $vst $sf $sft $vf $vft
4747
const $modelname{T, OT<:MOI.ModelLike} = $MOIB.SingleBridgeOptimizer{$bridge{T}, $bridged_model_name{T}, OT}
48-
MathOptInterface.Bridges.is_bridged(::$modelname, ::Type{<:$bridged_funs}, ::Type{<:$bridged_sets}) = true
48+
$MOIB.is_bridged(::$modelname, ::Type{<:$bridged_funs}, ::Type{<:$bridged_sets}) = true
4949
supports_bridging_constraint(::$modelname, ::Type{<:$bridged_funs}, ::Type{<:$bridged_sets}) = true
5050
end)
5151
end

src/Utilities/model.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,12 @@ abstract type Constraints{F} end
393393

394394
abstract type SymbolFS end
395395
struct SymbolFun <: SymbolFS
396-
s::Symbol
396+
s::Union{Symbol,Expr}
397397
typed::Bool
398398
cname::Symbol
399399
end
400400
struct SymbolSet <: SymbolFS
401-
s::Symbol
401+
s::Union{Symbol,Expr}
402402
typed::Bool
403403
end
404404

@@ -409,9 +409,9 @@ end
409409
# Expr(:., MOI, :($(QuoteNode(s)))) is Expr(:., MOI, :(:EqualTo)) <- what we want
410410

411411
# (MOI, :Zeros) -> :(MOI.Zeros)
412-
_mod(m::Module, s::Symbol) = s
412+
_mod(m::Module, s::Union{Symbol,Expr}) = s
413413
# (:Zeros) -> :(MOI.Zeros)
414-
_moi(s::Symbol) = _mod(MOI, s)
414+
_moi(s::Union{Symbol,Expr}) = _mod(MOI, s)
415415
_set(s::SymbolSet) = _moi(s.s)
416416
_fun(s::SymbolFun) = _moi(s.s)
417417
function _typedset(s::SymbolSet)
@@ -433,7 +433,7 @@ end
433433
if VERSION >= v"0.7.0-DEV.2813"
434434
using Unicode
435435
end
436-
_field(s::SymbolFS) = Symbol(lowercase(string(s.s)))
436+
_field(s::SymbolFS) = Symbol(replace(lowercase(string(s.s)), "." => "_"))
437437

438438
_getC(s::SymbolSet) = :($MOIU.C{F, $(_typedset(s))})
439439
_getC(s::SymbolFun) = _typedfun(s)
@@ -586,7 +586,7 @@ macro model(modelname, ss, sst, vs, vst, sf, sft, vf, vft)
586586
field = _field(s)
587587
code = quote
588588
$code
589-
MathOptInterface.Utilities.$funct(model::$c, ci::$T{F, <:$set}, args...) where F = MathOptInterface.Utilities.$funct(model.$field, ci, args...)
589+
$MOIU.$funct(model::$c, ci::$T{F, <:$set}, args...) where F = $MOIU.$funct(model.$field, ci, args...)
590590
end
591591
end
592592
end
@@ -596,7 +596,7 @@ macro model(modelname, ss, sst, vs, vst, sf, sft, vf, vft)
596596
field = _field(f)
597597
code = quote
598598
$code
599-
MathOptInterface.Utilities.$funct(model::$modelname, ci::$T{<:$fun}, args...) = MathOptInterface.Utilities.$funct(model.$field, ci, args...)
599+
$MOIU.$funct(model::$modelname, ci::$T{<:$fun}, args...) = $MOIU.$funct(model.$field, ci, args...)
600600
end
601601
end
602602
end

test/bridge.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Model not supporting Interval
2-
MOIU.@model SimpleModel () (EqualTo, GreaterThan, LessThan) (Zeros, Nonnegatives, Nonpositives, SecondOrderCone, RotatedSecondOrderCone, GeometricMeanCone, PositiveSemidefiniteConeTriangle, ExponentialCone) () (SingleVariable,) (ScalarAffineFunction, ScalarQuadraticFunction) (VectorOfVariables,) (VectorAffineFunction,)
2+
MOIU.@model SimpleModel () (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone, MOI.PositiveSemidefiniteConeTriangle, MOI.ExponentialCone) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
33

44
function test_noc(bridgedmock, F, S, n)
55
@test MOI.get(bridgedmock, MOI.NumberOfConstraints{F, S}()) == n
@@ -109,7 +109,7 @@ end
109109
end
110110

111111
# Model not supporting RotatedSecondOrderCone
112-
MOIU.@model NoRSOCModel () (EqualTo, GreaterThan, LessThan, Interval) (Zeros, Nonnegatives, Nonpositives, SecondOrderCone, ExponentialCone, PositiveSemidefiniteConeTriangle) () (SingleVariable,) (ScalarAffineFunction,) (VectorOfVariables,) (VectorAffineFunction,)
112+
MOIU.@model NoRSOCModel () (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone, MOI.ExponentialCone, MOI.PositiveSemidefiniteConeTriangle) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction,) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
113113

114114
@testset "LazyBridgeOptimizer" begin
115115
mock = MOIU.MockOptimizer(NoRSOCModel{Float64}())

test/cachingoptimizer.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@MOIU.model ModelForCachingOptimizer (ZeroOne, Integer) (EqualTo, GreaterThan, LessThan, Interval) (Zeros, Nonnegatives, Nonpositives, SecondOrderCone, RotatedSecondOrderCone, GeometricMeanCone, ExponentialCone, DualExponentialCone, PositiveSemidefiniteConeTriangle, RootDetConeTriangle, LogDetConeTriangle) () (SingleVariable,) (ScalarAffineFunction,ScalarQuadraticFunction) (VectorOfVariables,) (VectorAffineFunction,)
1+
@MOIU.model ModelForCachingOptimizer (MOI.ZeroOne, MOI.Integer) (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone, MOI.ExponentialCone, MOI.DualExponentialCone, MOI.PositiveSemidefiniteConeTriangle, MOI.RootDetConeTriangle, MOI.LogDetConeTriangle) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
22

33
@testset "CachingOptimizer Manual mode" begin
44
m = MOIU.CachingOptimizer(ModelForCachingOptimizer{Float64}(), MOIU.Manual)

test/model.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MOIU.@model LPModel () (EqualTo, GreaterThan, LessThan, Interval) (Zeros, Nonnegatives, Nonpositives) () (SingleVariable,) (ScalarAffineFunction,) (VectorOfVariables,) (VectorAffineFunction,)
1+
MOIU.@model LPModel () (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction,) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
22

33
@testset "Name test" begin
44
MOIT.nametest(Model{Float64}())

test/parser.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ end
3131
@test MOIU.separatelabel(:(con1: [x,y] in S)) == (:con1, :([x,y] in S))
3232
end
3333

34-
@MOIU.model GeneralModel (ZeroOne, Integer) (EqualTo, GreaterThan, LessThan, Interval) (Zeros, Nonnegatives, Nonpositives, SecondOrderCone, RotatedSecondOrderCone, PositiveSemidefiniteConeTriangle) () (SingleVariable,) (ScalarAffineFunction,ScalarQuadraticFunction) (VectorOfVariables,) (VectorAffineFunction,)
34+
@MOIU.model GeneralModel (MOI.ZeroOne, MOI.Integer) (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.PositiveSemidefiniteConeTriangle) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
3535

3636
@testset "loadfromstring" begin
3737
@testset "one variable" begin

test/runtests.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ end
2020
# Needed by test spread over several files, defining it here make it easier to comment out tests
2121
# Model supporting every MOI functions and sets
2222
MOIU.@model(Model,
23-
(ZeroOne, Integer),
24-
(EqualTo, GreaterThan, LessThan, Interval, Semicontinuous, Semiinteger),
25-
(Reals, Zeros, Nonnegatives, Nonpositives, SecondOrderCone, RotatedSecondOrderCone, GeometricMeanCone, ExponentialCone, DualExponentialCone, PositiveSemidefiniteConeTriangle, PositiveSemidefiniteConeSquare, RootDetConeTriangle, RootDetConeSquare, LogDetConeTriangle, LogDetConeSquare),
26-
(PowerCone, DualPowerCone, SOS1, SOS2),
27-
(SingleVariable,),
28-
(ScalarAffineFunction, ScalarQuadraticFunction),
29-
(VectorOfVariables,),
30-
(VectorAffineFunction, VectorQuadraticFunction))
23+
(MOI.ZeroOne, MOI.Integer),
24+
(MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval, MOI.Semicontinuous, MOI.Semiinteger),
25+
(MOI.Reals, MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone, MOI.ExponentialCone, MOI.DualExponentialCone, MOI.PositiveSemidefiniteConeTriangle, MOI.PositiveSemidefiniteConeSquare, MOI.RootDetConeTriangle, MOI.RootDetConeSquare, MOI.LogDetConeTriangle, MOI.LogDetConeSquare),
26+
(MOI.PowerCone, MOI.DualPowerCone, MOI.SOS1, MOI.SOS2),
27+
(MOI.SingleVariable,),
28+
(MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction),
29+
(MOI.VectorOfVariables,),
30+
(MOI.VectorAffineFunction, MOI.VectorQuadraticFunction))
3131
# Model supporting only SecondOrderCone as non-LP cone.
32-
@MOIU.model ModelForMock (ZeroOne, Integer) (EqualTo, GreaterThan, LessThan, Interval) (Zeros, Nonnegatives, Nonpositives, SecondOrderCone) () (SingleVariable,) (ScalarAffineFunction, ScalarQuadraticFunction) (VectorOfVariables,) (VectorAffineFunction,)
32+
@MOIU.model ModelForMock (MOI.ZeroOne, MOI.Integer) (MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval) (MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives, MOI.SecondOrderCone) () (MOI.SingleVariable,) (MOI.ScalarAffineFunction, MOI.ScalarQuadraticFunction) (MOI.VectorOfVariables,) (MOI.VectorAffineFunction,)
3333

3434
# Utilities submodule tests
3535
@testset "MOI.Utilities" begin

test/universalfallback.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ struct UnknownOptimizerAttribute <: MOI.AbstractOptimizerAttribute end
4747

4848
# A few constraint types are supported to test both the fallback and the
4949
# delegation to the internal model
50-
@MOIU.model ModelForUniversalFallback () (LessThan,) () () (SingleVariable,) (ScalarAffineFunction,) () ()
50+
@MOIU.model ModelForUniversalFallback () (MOI.LessThan,) () () (MOI.SingleVariable,) (MOI.ScalarAffineFunction,) () ()
5151

5252
@testset "UniversalFallback" begin
5353
model = ModelForUniversalFallback{Float64}()

0 commit comments

Comments
 (0)