Consider the constraint @constraint(model, x^2 in SOSCone(), basis = Chebyshev).
If we convert x^2 to Chebyshev, we get 1/2 * x^2 + 1/2 so the newton polytope gives [1, x].
If we do the Newton polytope in the monomial basis we have [x] and then we can compute the chebyshev basis spanning the Newton polytope which gives [x] which is an improvement.
So I think we should compute the Newton polytope in the basis given by the user and only convert to the basis when creating the WeightedSOSCone
See test/Tests/quadratic.jl for the tests that detects this issue and should be changed once this is fixed.
Consider the constraint
@constraint(model, x^2 in SOSCone(), basis = Chebyshev)
. If we convertx^2
to Chebyshev, we get1/2 * x^2 + 1/2
so the newton polytope gives[1, x]
. If we do the Newton polytope in the monomial basis we have[x]
and then we can compute the chebyshev basis spanning the Newton polytope which gives[x]
which is an improvement. So I think we should compute the Newton polytope in the basis given by the user and only convert to the basis when creating theWeightedSOSCone
See
test/Tests/quadratic.jl
for the tests that detects this issue and should be changed once this is fixed.