Pyomo allows users to formulate optimization problems in Python in a manner that is similar to the notation commonly used in mathematical optimization. Pyomo supports an object-oriented style of formulating optimization models, which are defined with a variety of modeling components: sets, scalar and multidimensional parameters, decision variables, objectives, constraints, equations, disjunctions and more. Optimization models can be initialized with python data, and external data sources can be defined using spreadsheets, databases, various formats of text files. Pyomo supports both abstract models, which are defined without data, and concrete models, which are defined with data. In both cases, Pyomo allows for the separation of model and data.
Pyomo supports dozens of solvers, both open source and commercial, including many solvers supported by AMPL, PICO, CBC, CPLEX, IPOPT, and GLPK. Pyomo can either invoke the solver directly or asynchronously with a solver manager. Solver managers support remote, asynchronous execution of solvers, which supports parallel execution of Pyomo scripts. Solver interaction is performed with a variety of solver interfaces, depending on the solver being used. A very generic solver interface is supported with AMPL's nl (format).
The following software packages integrate Pyomo as a library to support optimization modeling and analysis:
William E. Hart; Carl D. Laird; Jean-Paul Watson; David L. Woodruff; Gabriel A. Hackebeil; Bethany L. Nicholson; John D. Siirola (2017). Pyomo — Optimization Modeling in Python. Springer. ISBN 978-3-319-58821-6. 978-3-319-58821-6 ↩
Hart, William; Jean-Paul Watson; David L. Woodruff (2011). "Pyomo: modeling and solving mathematical programs in python". Mathematical Programming Computation. Vol. 3, no. 3. doi:10.1007/s12532-011-0026-8. http://mpc.zib.de/index.php/mpc/article/viewfile/59/30 ↩
Mason, Andrew (2013). "SolverStudio: A New Tool for Better Optimisation and Simulation Modelling in Excel". INFORMS Transactions on Education. Vol. 14, no. 1. pp. 45–52. doi:10.1287/ited.2013.0112. /wiki/Doi_(identifier) ↩
DeCarolis, Joseph; Kevin Hunter; Sarat Sreepathi (2010). The TEMOA Project: Tools for Energy Model Optimization and Analysis (PDF). International Energy Workshop. Stockholm, Sweden. http://www.temoaproject.org/publications/DeCarolis_IEW2010_paper.pdf ↩
Greenhall, Adam; Rich Christie; Jean-Paul Watson (2012). Minpower: A power systems optimization toolkit (PDF). Power and Energy Society General Meeting. http://adamgreenhall.github.io/minpower/minpower.pdf ↩
"linopy: Linear optimization with N-D labeled variables". PyPSA. Retrieved 2022-02-22. https://github.com/PyPSA/linopy ↩