Pyomo

Last updated
Pyomo
Pyomo Logo Without Text.png
Designed by Gabriel Hackebeil
William E. Hart
Carl Laird
Bethany Nicholson
John Siirola
Jean-Paul Watson
David Woodruff
First appeared2008;14 years ago (2008)
Stable release
6.4.2 / August 17, 2022;56 days ago (2022-08-17)
OS Cross-platform: Linux, Mac OS X and Windows
License BSD license
Filename extensions .py
Website www.pyomo.org
Influenced by
Python, AMPL, General Algebraic Modeling System

Pyomo is a collection of Python software packages for formulating optimization models. [1] [2]

Contents

Pyomo was developed by William Hart and Jean-Paul Watson at Sandia National Laboratories and David Woodruff at University of California, Davis. Significant extensions to Pyomo were developed by Bethany Nicholson and John Siirola at Sandia National Laboratories, Carl Laird at Purdue University, and Gabriel Hackebeil. Pyomo is an open-source project that is freely available, and it is licensed with the BSD license. Pyomo is developed as part of the COIN-OR project. Pyomo is a popular open-source software package that is used by a variety of government agencies and academic institutions.

Features

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 asynchronous 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:

See also

Related Research Articles

<span class="mw-page-title-main">SciPy</span> Open-source Python library for scientific computing

SciPy is a free and open-source Python library used for scientific computing and technical computing.

<span class="mw-page-title-main">AMPL</span>

AMPL is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing . It was developed by Robert Fourer, David Gay, and Brian Kernighan at Bell Laboratories. AMPL supports dozens of solvers, both open source and commercial software, including CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO, and LGO. Problems are passed to solvers as nl files. AMPL is used by more than 100 corporate clients, and by government agencies and academic institutions.

IBM ILOG CPLEX Optimization Studio is an optimization software package. In 2004, the work on CPLEX earned the first INFORMS Impact Prize.

<span class="mw-page-title-main">COIN-OR</span>

Computational Infrastructure for Operations Research (COIN-OR), is a project that aims to "create for mathematical software what the open literature is for mathematical theory." The open literature provides the operations research (OR) community with a peer-review process and an archive. Papers in operations research journals on mathematical theory often contain supporting numerical results from computational studies. The software implementations, models, and data used to produce the numerical results are typically not published. The status quo impeded researchers needing to reproduce computational results, make fair comparisons, and extend the state of the art.

The TOMLAB Optimization Environment is a modeling platform for solving applied optimization problems in MATLAB.

Algebraic modeling languages (AML) are high-level computer programming languages for describing and solving high complexity problems for large scale mathematical computation. One particular advantage of some algebraic modeling languages like AIMMS, AMPL, GAMS, Gekko, MathProg, Mosel, and OPL is the similarity of their syntax to the mathematical notation of optimization problems. This allows for a very concise and readable definition of problems in the domain of optimization, which is supported by certain language elements like sets, indices, algebraic expressions, powerful sparse index and data handling variables, constraints with arbitrary names. The algebraic formulation of a model does not contain any hints how to process it.

MOSEK is a software package for the solution of linear, mixed-integer linear, quadratic, mixed-integer quadratic, quadratically constraint, conic and convex nonlinear mathematical optimization problems. The applicability of the solver varies widely and is commonly used for solving problems in areas such as engineering, finance and computer science.

JModelica.org is a commercial software platform based on the Modelica modeling language for modeling, simulating, optimizing and analyzing complex dynamic systems. The platform is maintained and developed by Modelon AB in collaboration with academic and industrial institutions, notably Lund University and the Lund Center for Control of Complex Systems (LCCC). The platform has been used in industrial projects with applications in robotics, vehicle systems, energy systems, CO2 separation and polyethylene production.

Open energy system models are energy system models that are open source. However, some of them may use third party proprietary software as part of their workflows to input, process, or output data. Preferably, these models use open data, which facilitates open science.

APOPT is a software package for solving large-scale optimization problems of any of these forms:

<span class="mw-page-title-main">JuMP</span>

JuMP is an algebraic modeling language and a collection of supporting packages for mathematical optimization embedded in the Julia programming language. JuMP is used by companies, government agencies, academic institutions, software projects, and individuals to formulate and submit optimization problems to third‑party solvers. JuMP has been specifically applied to problems in the field of operations research.

Artelys Knitro is a commercial software package for solving large scale nonlinear mathematical optimization problems.

<span class="mw-page-title-main">NEOS Server</span>

The NEOS Server is an Internet-based client-server application that provides free access to a library of optimization solvers. Its library of solvers includes more than 60 commercial, free and open source solvers, which can be applied to mathematical optimization problems of more than 12 different types, including linear programming, integer programming and nonlinear optimization.

SolverStudio is a free Excel plug-in developed at the University of Auckland that supports optimization and simulation modelling in a spreadsheet using an algebraic modeling language. It is popular in education, the public sector and industry for optimization users because it uses industry-standard modelling languages and is faster than traditional Excel optimisation approaches.

In machine learning, hyperparameter optimization or tuning is the problem of choosing a set of optimal hyperparameters for a learning algorithm. A hyperparameter is a parameter whose value is used to control the learning process. By contrast, the values of other parameters are learned.

<span class="mw-page-title-main">OR-Tools</span> Open source software suite by Google

Google OR-Tools is a free and open-source software suite developed by Google for solving linear programming (LP), mixed integer programming (MIP), constraint programming (CP), vehicle routing (VRP), and related optimization problems.

Octeract Engine is a proprietary massively parallel deterministic global optimization solver for general Mixed-Integer Nonlinear Programs (MINLP). It uses MPI as a means of accelerating solution times. It is notable for its parallelism, and most recently for ranking ahead of all other global MINLP solvers in the Mittelmann benchmark.

References

  1. 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.
  2. 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.
  3. 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.
  4. DeCarolis, Joseph; Kevin Hunter; Sarat Sreepathi (2010). The TEMOA Project: Tools for Energy Model Optimization and Analysis (PDF). International Energy Workshop. Stockholm, Sweden.
  5. Greenhall, Adam; Rich Christie; Jean-Paul Watson (2012). Minpower: A power systems optimization toolkit (PDF). Power and Energy Society General Meeting.
  6. "linopy: Linear optimization with N-D labeled variables". PyPSA. Retrieved 2022-02-22.