Skip to content

Commit

Permalink
Fix quadratic tests (#368)
Browse files Browse the repository at this point in the history
* Fix quadratic tests

* fix format

* Update Solvers/Manifest.toml

* Fixes

* Fix format
  • Loading branch information
blegat committed Jul 6, 2024
1 parent a917931 commit 6334d4c
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 27 deletions.
2 changes: 2 additions & 0 deletions src/SumOfSquares.jl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import StarAlgebras as SA

import MultivariatePolynomials as MP
const _APL = MP.AbstractPolynomialLike
const _AE_APL = Union{SA.AlgebraElement,_APL}

Reexport.@reexport using MultivariateBases
const MB = MultivariateBases
# @set assumes that `SemialgebraicSets` is defined
Expand Down
4 changes: 2 additions & 2 deletions src/constraints.jl
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ const SOSMatrixCone = PSDMatrixInnerCone{MOI.PositiveSemidefiniteConeTriangle}

function JuMP.build_constraint(
_error::Function,
P::AbstractMatrix{<:_APL},
P::AbstractMatrix{<:_AE_APL},
::PSDMatrixInnerCone{MCT};
newton_polytope::Tuple = tuple(),
kws...,
Expand Down Expand Up @@ -613,7 +613,7 @@ const SOSConvexCone = ConvexPolyInnerCone{MOI.PositiveSemidefiniteConeTriangle}

function JuMP.build_constraint(
_error::Function,
p::_APL,
p::_AE_APL,
::ConvexPolyInnerCone{MCT};
kws...,
) where {MCT}
Expand Down
12 changes: 6 additions & 6 deletions test/Mock/mock_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ end
@testset "Simple matrix" begin
include("simple_matrix.jl")
end
#@testset "Concave then convex cubic" begin
# include("concave_then_convex_cubic.jl")
#end
@testset "Concave then convex cubic" begin
include("concave_then_convex_cubic.jl")
end
@testset "Horn" begin
include("horn.jl")
end
Expand All @@ -45,9 +45,9 @@ end
#@testset "BPT12e399" begin
# include("BPT12e399.jl")
#end
#@testset "Max Cut" begin
# include("maxcut.jl")
#end
@testset "Max Cut" begin
include("maxcut.jl")
end
#@testset "Chebyshev" begin
# include("chebyshev.jl")
#end
Expand Down
28 changes: 27 additions & 1 deletion test/Mock/quadratic.jl
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,34 @@ for mock in [bridged_mock(optimize_bridged!), cached_mock(optimize_cached!)]
Tests.sdsos_scaled_univariate_quadratic_test(mock, config)
Tests.sdsos_scaled_bivariate_quadratic_test(mock, config)
Tests.sos_cheby_univariate_quadratic_test(mock, config)
Tests.sos_cheby_bivariate_quadratic_test(mock, config)
Tests.sdsos_cheby_univariate_quadratic_test(mock, config)
end
function optimize!(mock)
return MOI.Utilities.mock_optimize!(
mock,
[2.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0],
(
MOI.VectorOfVariables,
MOI.MathOptInterface.PositiveSemidefiniteConeTriangle,
) => [[0.0, 0.0, 1.0, 0.0, -1.0, 1.0]],
(MOI.VectorAffineFunction{Float64}, MOI.Zeros) =>
[[0.0, 0.0, 0.0, 2.0, -1.0, 2.0]],
)
end
for mock in [bridged_mock(optimize!), cached_mock(optimize!)]
Tests.sos_cheby_bivariate_quadratic_test(mock, config)
end
function optimize!(mock)
return MOI.Utilities.mock_optimize!(
mock,
(MOI.FEASIBLE_POINT, [2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2]),
(MOI.VectorOfVariables, MOI.RotatedSecondOrderCone) =>
[[0.0, 1.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, -√2]],
(MOI.VectorAffineFunction{Float64}, MOI.Zeros) =>
[[0.0, 0.0, 0.0, 2.0, -1.0, 2.0]],
)
end
for mock in [bridged_mock(optimize!), cached_mock(optimize!)]
Tests.sdsos_cheby_bivariate_quadratic_test(mock, config)
end
function optimize!(mock)
Expand Down
34 changes: 17 additions & 17 deletions test/Solvers/Manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ version = "0.5.3"

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

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

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

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

[[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
Expand Down Expand Up @@ -206,10 +206,10 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
version = "1.6.0"

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

[[deps.ECOS]]
deps = ["CEnum", "ECOS_jll", "MathOptInterface"]
Expand Down Expand Up @@ -326,9 +326,9 @@ version = "0.21.4"

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

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

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

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

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

[[deps.MosekTools]]
deps = ["MathOptInterface", "Mosek", "Printf"]
Expand Down Expand Up @@ -761,9 +761,9 @@ uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
version = "0.5.24"

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

[deps.TranscodingStreams.extensions]
Expand Down
43 changes: 43 additions & 0 deletions test/Solvers/generate.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import SumOfSquares as SOS
import MultivariateBases as MB
using SemialgebraicSets
using DynamicPolynomials

function generate(test, solver, config)
optimizer = MOI.instantiate(solver, with_bridge_type = Float64)
# We don't use `UniversalFallback` so that the SOS bridges
# are applied
cached = MOI.Utilities.CachingOptimizer(
MOI.Utilities.Model{Float64}(),
optimizer,
)
bridged = MOI.Bridges.full_bridge_optimizer(cached, Float64)
# Second cache needed for the fallback for `ConstraintPrimal`
model = MOI.Utilities.CachingOptimizer(
MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()),
bridged,
)
MOI.Bridges.add_bridge(
bridged,
SOS.Bridges.Constraint.SOSPolynomialBridge{Float64},
)
MOI.Bridges.add_bridge(bridged, SOS.Bridges.Variable.KernelBridge{Float64})
MOI.Bridges.add_bridge(bridged, SOS.Bridges.Constraint.EmptyBridge{Float64})
MOI.Bridges.add_bridge(
bridged,
SOS.Bridges.Constraint.PositiveSemidefinite2x2Bridge{Float64},
)
MOI.Bridges.add_bridge(
bridged,
SOS.Bridges.Constraint.DiagonallyDominantBridge{Float64},
)
MOI.Bridges.add_bridge(
bridged,
SOS.Bridges.Variable.ScaledDiagonallyDominantBridge{Float64},
)
MOI.Bridges.add_bridge(
bridged,
SOS.Bridges.Constraint.SOSPolynomialInSemialgebraicSetBridge{Float64},
)
return test(model, config)
end
2 changes: 1 addition & 1 deletion test/Tests/utilities.jl
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ function inner_variable_value(model, atol = 1e-4)
first = false
print(MOI.get(inner, MOI.ConstraintDual(), ci))
end
println("])")
println("],")
end
end
return println(")")
Expand Down

0 comments on commit 6334d4c

Please sign in to comment.