NCTSSOS is a non-commutative polynomial optimization tool based on the sparsity adapted moment-SOHS hierarchies. To use NCTSSOS in Julia, run
pkg> add https://github.com/wangjie212/NCTSSOS
Documentation |
---|
NCTSSOS has been tested on WINDOW 10, Julia 1.6, JuMP 1.11.1 and MOSEK 10.0.
Taking
using NCTSSOS
using DynamicPolynomials
@ncpolyvar x[1:3]
obj = 1+x[1]^4+x[2]^4+x[3]^4+x[1]*x[2]+x[2]*x[1]+x[2]*x[3]+x[3]*x[2]
opt,data = nctssos_first(obj, x, TS="MD", obj="eigen")
Two vectors will be output. The first vector includes the sizes of PSD blocks and the second vector includes the numbers of PSD blocks with sizes corresponding to the first vector.
To execute higher levels of the NCTSSOS hierarchy, repeatedly run
opt,data = nctssos_higher!(data, TS="MD")
Options:
obj: "eigen" (implements eigenvalue minimization), "trace" (implements trace minimization)
TS (term sparsity): "block" (using the maxmial chordal extension), "MD" (using approximately smallest chordal extention), false (without term sparsity)
Taking the objective
@ncpolyvar x[1:2]
obj = 2-x[1]^2+x[1]*x[2]^2*x[1]-x[2]^2
ineq = [4-x[1]^2-x[2]^2]
eq = [x[1]*x[2]+x[2]*x[1]-2]
pop = [obj; ineq; eq]
d = 2 # the relaxation order
opt,data = nctssos_first(pop, x, d, numeq=1, TS="MD", obj="eigen")
To execute higher levels of the NCTSSOS hierarchy, repeatedly run
opt,data = nctssos_higher!(data, TS="MD")
Options:
obj: "eigen" (implements eigenvalue minimization), "trace" (implements trace minimization)
TS: "block" (using the maxmial chordal extension), "MD" (using approximately smallest chordal extention), false (without term sparsity)
To use correlative-term sparsity, run
opt,data = cs_nctssos_first(pop, x, d, TS="block", obj="eigen")
and
opt,data = cs_nctssos_higher!(data, TS="MD")
Check out /examples/traceopt.jl.
Check out /examples/stateopt.jl for state polynomial optimization over real numbers and /examples/state_complex.jl for state polynomial optimization over complex numbers.
[1] Exploiting Term Sparsity in Noncommutative Polynomial Optimization, 2021.
[2] Sparse polynomial optimization: theory and practice, 2023.
[3] State polynomials: positivity, optimization and nonlinear Bell inequalities, 2023.