- Pyomo
- Wikipedia
- Developed at Sandia National Labs since 2008, part of the COIN-OR project.
- Last release 5.6.9 from March 2020
- Supports Linux, MacOS, Windows
- Solvers: need to be installed extra, can interface to many open-source and commercial, and remote solve via NEOS
- Easy to install with pip or conda (see https://www.pyomo.org/installation)
- Active development on Github (moved from Sandia to Github in 2016)
- Active discussion forum
- Decent documentation
- Pyomo book from 2017 that covers Pyomo v5 (not free)
- ND-Pyomo-Cookbook from 2018 (free) - is it updated with Pyomo?
- Probably one of the most powerful and best options, besides Google OR-Tools.
- Higher-level and more Pythonic API than Google OR-Tools?
- Old codebase and API with some quirks - e.g. "Set" is 1-indexed and seems to be an array.
- Old design with some limitations (see e.g. GH issue) - created before Numpy, and way before e.g. Tensorflow or PyTorch
- Documentation in multiple places, examples/tutorials separate (updated?); most examples use
*
imports - Doesn't interface to Google OR-Tools solvers, and doesn't support some of the features there, like routing. (Probably true the other way around as well, Pyomo has features that OR-Tools doesn't have?)
Installation is very simple, since Pyomo and the open-source solvers have been packaged at conda-forge:
conda config --add channels conda-forge
conda install pyomo pyomo.extras coincbc ipopt glpk