jump-dev / SumOfSquares.jl

Sum of Squares Programming for Julia
Other
114 stars 24 forks source link

Compatibility issue between SymbolicWedderburn with SumsOfSquares #361

Open kneshat opened 2 weeks ago

kneshat commented 2 weeks ago

Symmetry reduction does not work properly while doing SOS optimization. Here is a minimal example, which is similar to an example in the SumsOfSquares document. Here, I used poly = sum(x) + sum(x.^4) instead of poly = sum(x) + sum(x.^2)

import MutableArithmetics as MA
using MultivariatePolynomials
using MultivariateBases
using DynamicPolynomials
@polyvar x[1:3]
poly = sum(x) + sum(x.^4)
using PermutationGroups
G = PermGroup([perm"(1,2,3)",perm"(1,2)"])
import CSDP
solver = CSDP.Optimizer
model = Model(solver)
@variable(model, t)
@objective(model, Max, t)
pattern = Symmetry.Pattern(G, Symmetry.VariablePermutation())
con_ref = @constraint model poly - t in SOSCone() symmetry = pattern
optimize!(model)
value(t)

@kalmarek has checked the problem and said "Indeed this seems to be the problem with SumOfSquares.jl formulation, as SymbolicWedderburn.jl correctly reduces the optimization problem"

For more info: https://discourse.julialang.org/t/symmetry-reduction-in-sumsofsquares/115727

blegat commented 2 weeks ago

Thanks, once https://github.com/jump-dev/SumOfSquares.jl/pull/355 is merged, I'll rework the symmetry reduction part and take a look that this example

kalmarek commented 2 weeks ago

@Khashayar-Neshat until then, if all you want is to solve the optimization problem and get the optimal value you may use sos_problem (or a modification of it). The actual model is created here