FAQΒΆ
Is the bound really a proof? It is a valid bound for every iterate under two conditions: the box contains the
feasible set, and floating-point eigenvalue error is negligible. res.rigorous() removes the second condition for the
normalized problem. See Certificates and primal recovery. Interior-point solvers also return bounds (their dual objective); the
difference is that their dual feasibility holds only up to a tolerance, whereas here every parameter value is feasible
by construction.
Why not just use TSSOS? If your relaxation fits an interior-point solver, TSSOS is mature, accurate and has term
sparsity, complex and noncommutative variables; use it. moment-sos targets relaxations that do not fit (memory) and
use cases where you want a valid bound at any time. See Benchmarks and limitations.
Which solver should I pick? solve for a quick certified bound, Boolean problems and integer optimality proofs;
solve_alm for accurate relaxation values and constrained problems (e.g. networks).
The bound is far above the best feasible value. Either the relaxation is not tight at this order (try a higher
order), or the solver has not converged (look at res.history), or your box is much larger than the feasible set (a
tight box tightens the bound).
ValueError: order too low. The relaxation needs \(2r\ge\deg\) of every polynomial; use po.min_order(problem).
Can it run on a GPU? device="cuda" is accepted but untested.
Can I use it from MATLAB / R / C++? Use the JSON format and the moment-sos command (Command line and JSON format).
Only Julia has a wrapper.
How do I cite it? See CITATION.cff in the repository.