Sageopt is for signomial and polynomial optimization
Sageopt provides functionality for constructing, solving, and analyzing convex relaxations for signomial and polynomial optimization problems. It also provides functionality for recovering feasible solutions from these convex relaxations.
You can use sageopt as a standalone tool to find provably optimal solutions to hard optimization problems. You can also use sageopt as part of a broader effort to find locally-optimal solutions to especially difficult problems (with bounds on possible optimality gaps).
These underlying convex relaxations are built upon the idea of "SAGE certificates" for signomial and polynomial nonnegativity. Refer to the paper Signomial and Polynomial Optimization via Relative Entropy and Partial Dualization for a mathematical description of the functionality implemented by this python package.
This readme file contains a minimal amount of information on sageopt. Users of this software are encouraged to visit the main sageopt website.
Dependencies
Sageopt requires Python version 3.5 or higher. There is no way around this: we make heavy use of the @
operator for matrix multiplication, and this operator was only introduced in Python 3.5.
We also require the following packages
- SciPy, version >= 1.1.
- Numpy, version >= 1.14.
- ECOS, version >= 2.0.
It is highly recommended that you also install MOSEK (version >= 9). MOSEK is a commerical optimization solver, and currently the only solver that is able to handle the more intersting convex relaxations needed for optimization with SAGE certificates. If you are in academia (that includes undergraduates!) you can request a free academic license for MOSEK.
To install
Run pip install sageopt
.
If you use Anaconda for Python development, please (1) activate your anaconda environment, (2) run conda install pip
, and (3) run
pip install sageopt
. It is important that pip be installed inside your conda environment, or sageopt
might not be detected by Anaconda Navigator (among other environment management tools).
To install sageopt from source, do the following:
- Download this repository. If needed, change your directory so that you are in the same directory as
sageopt's
setup.py
file. - Activate the Python virtual environment of your choice.
- Run
python setup.py install
to install sageopt to your current Python environment. - Run
python -c "import sageopt; print(sageopt.__version__)"
to verify that sageopt installed correctly. - Run
pip install nose
(orconda install nose
) in preparation for running unittests. - Run
nosetests sageopt/tests
.