PPOPT
Python Parametric OPtimization Toolbox (PPOPT) is a software platform for solving and manipulating multiparametric programs in Python.
Installation
Currently, PPOPT requires Python 3.7 or higher and can be installed with the following commands.
pip install ppopt
To install PPOPT and install all optional solvers the following installation is recommended.
pip install ppopt[optional]
In Python 3.11 and beyond there is currently an error with the quadprog package. An alternate version that fixed this error can be installed here.
pip install git+https://github.com/HKaras/quadprog/
Completed Features
Solver interface for mpLPs and mpQPs with the following algorithms
Serial and Parallel Combinatorial Algorithm
Serial and Parallel Geometrical Algorithm
Serial and Parallel Graph based Algorithm
Solver interface for mpMILPs and mpMIQPs with the following algorithms
Enumeration based algorithm
Multiparametric solution export to C++, JavaScript, and Python
Plotting utilities
Presolver and Conditioning for Multiparametric Programs
Key Applications
Explicit Model Predictive Control
Multilevel Optimization
Integrated Design, Control, and Scheduling
Robust Optimization
For more information about Multiparametric programming and it’s applications, this paper is a good jumping point.
Quick Overview
To give a fast primer of what we are doing, we are solving multiparametric programming problems (fast) by writing parallel algorithms efficiently. Here is a quick scaling analysis on a large multiparametric program with the combinatorial algorithm.
Here is a benchmark against the state of the art multiparametric programming solvers. All tests run on the Terra Supercomputer at Texas A&M University. Matlab 2021b was used for solvers written in matlab and Python 3.8 was used for PPOPT.
Citation
Since a lot of time and effort has gone into PPOPT’s development, please cite the following publication if you are using PPOPT for your own research.
@incollection{kenefake2022ppopt,
title={PPOPT-Multiparametric Solver for Explicit MPC},
author={Kenefake, Dustin and Pistikopoulos, Efstratios N},
booktitle={Computer Aided Chemical Engineering},
volume={51},
pages={1273--1278},
year={2022},
publisher={Elsevier}
}