Sum of Squares Programming for Julia


Sum of Squares Programming for Julia.

Documentation PackageEvaluator Build Status Social References to cite
Build Status Build Status Gitter DOI
Coveralls branch Codecov branch

This packages contains the Sum of Squares reformulation for polynomial optimization. When used in conjunction with MultivariatePolynomial and PolyJuMP, it provides a Sum of Squares Programming extension for JuMP. Enabling the creation of sum of squares variables and constraints.

Some presentations on, or using, SumOfSquares:

The following example shows how to find lower bounds for the Goldstein-Price function using this package with MultivariatePolynomial and PolyJuMP.

using MultivariatePolynomials
using JuMP
using PolyJuMP
using SumOfSquares
using DynamicPolynomials
using Mosek

# Create symbolic variables (not JuMP decision variables)
@polyvar x1 x2

# Create a Sum of Squares JuMP model with the Mosek solver
m = SOSModel(solver = MosekSolver())

# Create a JuMP decision variable for the lower bound
@variable m γ

# f(x) is the Goldstein-Price function
f1 = x1+x2+1
f2 = 19-14*x1+3*x1^2-14*x2+6*x1*x2+3*x2^2
f3 = 2*x1-3*x2
f4 = 18-32*x1+12*x1^2+48*x2-36*x1*x2+27*x2^2

f = (1+f1^2*f2)*(30+f3^2*f4)

# Constraints f(x) - γ to be sum of squares
@constraint m f >= γ

@objective m Max γ

status = solve(m)

# The lower bound found is 3

First Commit


Last Touched

about 1 month ago


116 commits

Used By: