Skip to content

Commit 6334d4c

Browse files
authored
Fix quadratic tests (#368)
* Fix quadratic tests * fix format * Update Solvers/Manifest.toml * Fixes * Fix format
1 parent a917931 commit 6334d4c

File tree

7 files changed

+98
-27
lines changed

7 files changed

+98
-27
lines changed

src/SumOfSquares.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import StarAlgebras as SA
1111

1212
import MultivariatePolynomials as MP
1313
const _APL = MP.AbstractPolynomialLike
14+
const _AE_APL = Union{SA.AlgebraElement,_APL}
15+
1416
Reexport.@reexport using MultivariateBases
1517
const MB = MultivariateBases
1618
# @set assumes that `SemialgebraicSets` is defined

src/constraints.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ const SOSMatrixCone = PSDMatrixInnerCone{MOI.PositiveSemidefiniteConeTriangle}
571571

572572
function JuMP.build_constraint(
573573
_error::Function,
574-
P::AbstractMatrix{<:_APL},
574+
P::AbstractMatrix{<:_AE_APL},
575575
::PSDMatrixInnerCone{MCT};
576576
newton_polytope::Tuple = tuple(),
577577
kws...,
@@ -613,7 +613,7 @@ const SOSConvexCone = ConvexPolyInnerCone{MOI.PositiveSemidefiniteConeTriangle}
613613

614614
function JuMP.build_constraint(
615615
_error::Function,
616-
p::_APL,
616+
p::_AE_APL,
617617
::ConvexPolyInnerCone{MCT};
618618
kws...,
619619
) where {MCT}

test/Mock/mock_tests.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ end
3030
@testset "Simple matrix" begin
3131
include("simple_matrix.jl")
3232
end
33-
#@testset "Concave then convex cubic" begin
34-
# include("concave_then_convex_cubic.jl")
35-
#end
33+
@testset "Concave then convex cubic" begin
34+
include("concave_then_convex_cubic.jl")
35+
end
3636
@testset "Horn" begin
3737
include("horn.jl")
3838
end
@@ -45,9 +45,9 @@ end
4545
#@testset "BPT12e399" begin
4646
# include("BPT12e399.jl")
4747
#end
48-
#@testset "Max Cut" begin
49-
# include("maxcut.jl")
50-
#end
48+
@testset "Max Cut" begin
49+
include("maxcut.jl")
50+
end
5151
#@testset "Chebyshev" begin
5252
# include("chebyshev.jl")
5353
#end

test/Mock/quadratic.jl

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,34 @@ for mock in [bridged_mock(optimize_bridged!), cached_mock(optimize_cached!)]
2727
Tests.sdsos_scaled_univariate_quadratic_test(mock, config)
2828
Tests.sdsos_scaled_bivariate_quadratic_test(mock, config)
2929
Tests.sos_cheby_univariate_quadratic_test(mock, config)
30-
Tests.sos_cheby_bivariate_quadratic_test(mock, config)
3130
Tests.sdsos_cheby_univariate_quadratic_test(mock, config)
31+
end
32+
function optimize!(mock)
33+
return MOI.Utilities.mock_optimize!(
34+
mock,
35+
[2.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0],
36+
(
37+
MOI.VectorOfVariables,
38+
MOI.MathOptInterface.PositiveSemidefiniteConeTriangle,
39+
) => [[0.0, 0.0, 1.0, 0.0, -1.0, 1.0]],
40+
(MOI.VectorAffineFunction{Float64}, MOI.Zeros) =>
41+
[[0.0, 0.0, 0.0, 2.0, -1.0, 2.0]],
42+
)
43+
end
44+
for mock in [bridged_mock(optimize!), cached_mock(optimize!)]
45+
Tests.sos_cheby_bivariate_quadratic_test(mock, config)
46+
end
47+
function optimize!(mock)
48+
return MOI.Utilities.mock_optimize!(
49+
mock,
50+
(MOI.FEASIBLE_POINT, [2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2]),
51+
(MOI.VectorOfVariables, MOI.RotatedSecondOrderCone) =>
52+
[[0.0, 1.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, -√2]],
53+
(MOI.VectorAffineFunction{Float64}, MOI.Zeros) =>
54+
[[0.0, 0.0, 0.0, 2.0, -1.0, 2.0]],
55+
)
56+
end
57+
for mock in [bridged_mock(optimize!), cached_mock(optimize!)]
3258
Tests.sdsos_cheby_bivariate_quadratic_test(mock, config)
3359
end
3460
function optimize!(mock)

test/Solvers/Manifest.toml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ version = "0.5.3"
1212

1313
[[deps.AbstractPermutations]]
1414
deps = ["GroupsCore"]
15-
git-tree-sha1 = "fbede79e328d45b2f9258abbb83b1af4a4900a5e"
15+
git-tree-sha1 = "26fcfa76767d3ff545f8362c2da62f550be4d477"
1616
uuid = "36d08e8a-54dd-435f-8c9e-38a475050b11"
17-
version = "0.3.0"
17+
version = "0.3.1"
1818

1919
[[deps.ArgTools]]
2020
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
@@ -97,15 +97,15 @@ weakdeps = ["SparseArrays"]
9797

9898
[[deps.CodecBzip2]]
9999
deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"]
100-
git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb"
100+
git-tree-sha1 = "f8889d1770addf59d0a015c49a473fa2bdb9f809"
101101
uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd"
102-
version = "0.8.2"
102+
version = "0.8.3"
103103

104104
[[deps.CodecZlib]]
105105
deps = ["TranscodingStreams", "Zlib_jll"]
106-
git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73"
106+
git-tree-sha1 = "b8fe8546d52ca154ac556809e10c75e6e7430ac8"
107107
uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
108-
version = "0.7.4"
108+
version = "0.7.5"
109109

110110
[[deps.ColorTypes]]
111111
deps = ["FixedPointNumbers", "Random"]
@@ -206,10 +206,10 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
206206
version = "1.6.0"
207207

208208
[[deps.DynamicPolynomials]]
209-
deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"]
210-
git-tree-sha1 = "30a1848c4f4fc35d1d4bbbd125650f6a11b5bc6c"
209+
deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"]
210+
git-tree-sha1 = "bbf1ace0781d9744cb697fb856bd2c3f6568dadb"
211211
uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07"
212-
version = "0.5.7"
212+
version = "0.6.0"
213213

214214
[[deps.ECOS]]
215215
deps = ["CEnum", "ECOS_jll", "MathOptInterface"]
@@ -326,9 +326,9 @@ version = "0.21.4"
326326

327327
[[deps.JuMP]]
328328
deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"]
329-
git-tree-sha1 = "28f9313ba6603e0d2850fc3eae617e769c99bf83"
329+
git-tree-sha1 = "7e10a0d8b534f2d8e9f712b33488584254624fb1"
330330
uuid = "4076af6c-e467-56ae-b986-b466b2749572"
331-
version = "1.22.1"
331+
version = "1.22.2"
332332

333333
[deps.JuMP.extensions]
334334
JuMPDimensionalDataExt = "DimensionalData"
@@ -424,9 +424,9 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
424424

425425
[[deps.MathOptInterface]]
426426
deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"]
427-
path = "../../../MathOptInterface"
427+
git-tree-sha1 = "91b08d27a27d83cf1e63e50837403e7f53a0fd74"
428428
uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
429-
version = "1.30.0"
429+
version = "1.31.0"
430430

431431
[[deps.MbedTLS_jll]]
432432
deps = ["Artifacts", "Libdl"]
@@ -444,9 +444,9 @@ uuid = "a63ad114-7e13-5084-954f-fe012c677804"
444444

445445
[[deps.Mosek]]
446446
deps = ["Libdl", "Pkg", "Printf", "SparseArrays"]
447-
git-tree-sha1 = "d745a2a4a0f71c4bcc8a3f5be3aff9feade3f644"
447+
git-tree-sha1 = "3b3f443422b385733fcc52da0a8de8607cd85482"
448448
uuid = "6405355b-0ac2-5fba-af84-adbd65488c0e"
449-
version = "10.1.4"
449+
version = "10.2.0"
450450

451451
[[deps.MosekTools]]
452452
deps = ["MathOptInterface", "Mosek", "Printf"]
@@ -761,9 +761,9 @@ uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
761761
version = "0.5.24"
762762

763763
[[deps.TranscodingStreams]]
764-
git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0"
764+
git-tree-sha1 = "60df3f8126263c0d6b357b9a1017bb94f53e3582"
765765
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
766-
version = "0.10.9"
766+
version = "0.11.0"
767767
weakdeps = ["Random", "Test"]
768768

769769
[deps.TranscodingStreams.extensions]

test/Solvers/generate.jl

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import SumOfSquares as SOS
2+
import MultivariateBases as MB
3+
using SemialgebraicSets
4+
using DynamicPolynomials
5+
6+
function generate(test, solver, config)
7+
optimizer = MOI.instantiate(solver, with_bridge_type = Float64)
8+
# We don't use `UniversalFallback` so that the SOS bridges
9+
# are applied
10+
cached = MOI.Utilities.CachingOptimizer(
11+
MOI.Utilities.Model{Float64}(),
12+
optimizer,
13+
)
14+
bridged = MOI.Bridges.full_bridge_optimizer(cached, Float64)
15+
# Second cache needed for the fallback for `ConstraintPrimal`
16+
model = MOI.Utilities.CachingOptimizer(
17+
MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()),
18+
bridged,
19+
)
20+
MOI.Bridges.add_bridge(
21+
bridged,
22+
SOS.Bridges.Constraint.SOSPolynomialBridge{Float64},
23+
)
24+
MOI.Bridges.add_bridge(bridged, SOS.Bridges.Variable.KernelBridge{Float64})
25+
MOI.Bridges.add_bridge(bridged, SOS.Bridges.Constraint.EmptyBridge{Float64})
26+
MOI.Bridges.add_bridge(
27+
bridged,
28+
SOS.Bridges.Constraint.PositiveSemidefinite2x2Bridge{Float64},
29+
)
30+
MOI.Bridges.add_bridge(
31+
bridged,
32+
SOS.Bridges.Constraint.DiagonallyDominantBridge{Float64},
33+
)
34+
MOI.Bridges.add_bridge(
35+
bridged,
36+
SOS.Bridges.Variable.ScaledDiagonallyDominantBridge{Float64},
37+
)
38+
MOI.Bridges.add_bridge(
39+
bridged,
40+
SOS.Bridges.Constraint.SOSPolynomialInSemialgebraicSetBridge{Float64},
41+
)
42+
return test(model, config)
43+
end

test/Tests/utilities.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ function inner_variable_value(model, atol = 1e-4)
147147
first = false
148148
print(MOI.get(inner, MOI.ConstraintDual(), ci))
149149
end
150-
println("])")
150+
println("],")
151151
end
152152
end
153153
return println(")")

0 commit comments

Comments
 (0)