oxfordcontrol / SOSTOOLS

A free MATLAB toolbox for formulating and solving sums of squares (SOS) optimization programs
55 stars 14 forks source link

SOSTOOLS

A free MATLAB toolbox for formulating and solving sums of squares (SOS) optimization programs.

Introduction

SOSTOOLS is a free MATLAB toolbox for formulating and solving sums of squares (SOS) optimization programs. SOSTOOLS can be used to specify and solve sum of squares polynomial problems using a very simple, flexible, and intuitive high-level notation. The SOS programs can be solved using SeDuMi, SDPT3, CSDP, SDPNAL+, CDCS, SDPA, and Mosek. All these are well-known semidefinite programming solvers, with SOSTOOLS handling internally all the necessary reformulations and data conversion.

What is a "sum of squares optimization program"? Why would I want such a thing?

A sum of squares (SOS) program, in the simplest case, has the form:

minimize: c_1 * u_1 + ... + c_n * u_n

subject to constraints: 

P_i(x) := A_i0(x) + A_i1(x) * u_1 + ... + A_in(x) * u_n

are sums of squares of polynomials (for i=1..n).

Here, the A_ij(x) are multivariate polynomials, and the decision variables u_i are scalars. This is a convex optimization problem, since the objective function is linear and the set of feasible u_i is convex.

While this looks quite nice, perhaps you are actually interested in more concrete problems such as:

Or, more generally, problems that deal with basic semialgebraic sets (sets defined by polynomial equalities and inequalities).

For a quick introduction and examples, please see Getting started with Sum of Squares and the SOSTOOLS user's guide.

Distribution and release information

SOSTOOLS is freely available under the GNU public license v3.0.

Archived releases of SOSTOOLS prior to v4.00 can be bounds at the following sites:

System requirements

To install and run SOSTOOLS, you need:

Detailed installation instructions are available in the SOSTOOLS user's guide.

Authors

The software has been written and is maintained by:

References

For a detailed explanation of the theory and applications of sums of squares programming, as well as references to related work, please see:

For more references please see http://hot.caltech.edu/math.html but also the authors' websites.

Feedback

For comments, bug reports, encouragement, suggestions, complaints, etc., please send email to: sostools@cds.caltech.edu.

If you use SOSTOOLS for research purposes, we'd be happy to hear about it and mention it in the reference guide. Please drop us a line, to sostools@cds.caltech.edu.

Citing

Please use the following when citing SOSTOOLS:

@manual{sostools,
author = {A. Papachristodoulou and J. Anderson and G. Valmorbida and S. Prajna and P. Seiler and P. A. Parrilo},
title = {{SOSTOOLS}: Sum of squares optimization toolbox for {MATLAB}},
note = {Available from \texttt{http://www.eng.ox.ac.uk/control/sostools}, 
        \texttt{http://www.cds.caltech.edu/sostools} and 
        \texttt{http://www.mit.edu/\~{}parrilo/sostools}},
year = {2013},
address = {\texttt{http://arxiv.org/abs/1310.4716}},
}

Related Patches and Add-Ons

The following are some patches and add-ons written by other people: