GloptiPoly 3- moments, optimization and semidefinite programming

Developed by Didier Henrion, Jean-Bernard Lasserre and Johan Loefberg.


GloptiPoly 3 is intended to solve, or at least approximate, the Generalized Problem of Moments (GPM), an infinite-dimensional optimization problem which can be viewed as an extension of the classical problem of moments. From a theoretical viewpoint, the GPM has developments and impact in various areas of mathematics such as algebra, Fourier analysis, functional analysis, operator theory, probability and statistics, to cite a few. In addition, and despite a rather simple and short formulation, the GPM has a large number of important applications in various fields such as optimization, probability, finance, control, signal processing, chemistry, cristallography, tomography, etc.

The present version of GloptiPoly 3 can handle moment problems with polynomial data. Many important applications in e.g. optimization, probability, financial economics and optimal control, can be viewed as particular instances of the GPM, and (possibly after some transformation) of the GPM with polynomial data.

The approach is similar to that used in the former version 2 of GloptiPoly. The software allows to build up a hierarchy of semidefinite programming (SDP), or linear matrix inequality (LMI) relaxations of the GPM, whose associated monotone sequence of optimal values converges to the global optimum.


The public release of GloptiPoly 3 was annonced during the IMA Workshop on Optimization and Control in January 2007 in Minneapolis.

GloptiPoly 3 is described in:

  • D. Henrion, J. B. Lasserre, J. Loefberg. GloptiPoly 3: moments, optimization and semidefinite programming. Optimization Methods and Software, Vol. 24, Nos. 4-5, pp. 761-779, 2009.

    The GPM and its SDP formulation are described in:

  • J. B. Lasserre. A Semidefinite programming approach to the generalized problem of moments. Mathematical Programming, Vol. 112, pp. 65-92, 2008.

    Matlab version

    GloptiPoly 3.10 (5 July 2021) can be downloaded as a zip archive, including this documentation for version 3.3. It is developed for Matlab 7.2 and higher.

    It is a freeware subject to the General Public Licence (GPL) policy.

    Octave version

    An Octave version of GloptiPoly 3.10 was prepared by Robert Jenssen in September 2021 and last updated on 26 September 2022. It is available in this zip archive.

    The archive contains an Octave version of gloptipoly3 made with the patch file, tested on Win10/VirtualBox as follows: 1) Octave was downloaded via its Windows installer, 2) SeDuMi was downloaded from github, 3) after installing Octave, SeDuMi was unzipped in the gloptipoly3 directory, 4) the SeDuMi path was added with "addpath('SeDuMi')" and 5) SeDuMi was compiled with the Octave command "install_sedumi". A simple script, inst.m, installing GloptiPoly and running gloptipolydemo.m and the resulting diary file are provided.


    GloptiPoly 3.6 benefited from feedback by Damien Bily, Florian Bugarin, Mathieu Claeys, Akin Delibasi, Martin Mevissen, Carlo Savorgnan and Tung Phan Thanh.

    Gloptipoly 3.7 benefited from feedback by Milan Korda and Jiawang Nie.

    Gloptipoly 3.8 fixes a bug in the YALMIP interface pointed out by Mathieu Claeys.

    GloptiPoly 3.9 fixes a bug in the case of no objective function as pointed by Swann Marx, Quentin Vila and Tillmann Weisser.

    Gloptipoly 3.10 fixes a bug in the @mpol/subs function as reported by Lu Wang and Eloise Berthier.

    The Octave version of GloptiPoly 3.10 was prepared by Robert Jenssen.

    Please forward comments, suggestions and bug reports to Didier Henrion.

    Last updated on 22 November 2021.