# GloptiPoly 3- moments,
optimization and semidefinite programming

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

## Description

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.

## References

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.

## Acknowledgments

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.