The Pyomo optimization modeling framework for formulating, analyzing, and solving mathematical optimization problems
npx @tessl/cli install tessl/pypi-pyomo@6.9.0Pyomo is a comprehensive Python-based open-source optimization modeling framework that enables users to formulate, analyze, and solve diverse mathematical optimization problems. It supports linear programming, quadratic programming, nonlinear programming, mixed-integer programming variants, stochastic programming, generalized disjunctive programming, differential algebraic equations, and mathematical programming with equilibrium constraints. The framework provides a full-featured modeling environment with symbolic problem definition capabilities, concrete instance creation, and integration with standard optimization solvers.
pip install pyomoPrimary interface importing all core APIs:
from pyomo.environ import *Specific component imports:
from pyomo.environ import (
ConcreteModel, AbstractModel, Var, Constraint, Objective, Set, Param,
SolverFactory, value, minimize, maximize
)Module-specific imports:
import pyomo.core as pyo
import pyomo.opt as opt
import pyomo.gdp as gdpfrom pyomo.environ import *
# Create a concrete model
model = ConcreteModel()
# Define decision variables
model.x = Var([1, 2], domain=NonNegativeReals)
# Define objective function
model.obj = Objective(expr=2*model.x[1] + 3*model.x[2], sense=maximize)
# Define constraints
model.constraint1 = Constraint(expr=3*model.x[1] + 4*model.x[2] <= 1)
model.constraint2 = Constraint(expr=2*model.x[1] + 5*model.x[2] <= 2)
# Solve the optimization problem
solver = SolverFactory('glpk') # requires GLPK solver installed
results = solver.solve(model)
# Access solution values
print(f"x[1] = {value(model.x[1])}")
print(f"x[2] = {value(model.x[2])}")
print(f"Objective value = {value(model.obj)}")Pyomo's architecture is built around several key design principles:
Essential modeling components for creating optimization problems including models, variables, constraints, objectives, parameters, and sets. These form the foundation of all Pyomo optimization models.
class ConcreteModel: ...
class AbstractModel: ...
class Var: ...
class Constraint: ...
class Objective: ...
class Set: ...
class Param: ...Solver factories, result handling, and optimization problem management. Provides standardized interface to dozens of optimization solvers with comprehensive result analysis capabilities.
class SolverFactory: ...
class SolverResults: ...
def check_optimal_termination(results): ...
enum SolverStatus: ...
enum TerminationCondition: ...Built-in mathematical functions and expression utilities for constructing complex objective functions and constraints including trigonometric, logarithmic, and logical operations.
def log(x): ...
def sin(x): ...
def cos(x): ...
def exp(x): ...
def value(expr): ...
def differentiate(expr, var): ...Predefined domain sets and interval constructors for variable bounds and parameter domains including real numbers, integers, booleans, and custom intervals.
Reals: Set
NonNegativeReals: Set
Integers: Set
Boolean: Set
def RealInterval(lb, ub): ...
def IntegerInterval(lb, ub): ...Components for modeling logical relationships and disjunctive constraints including disjuncts, disjunctions, and GDP-specific transformations.
class Disjunct: ...
class Disjunction: ...
class GDP_Error(Exception): ...Generalized Disjunctive Programming
Components for modeling dynamic systems with differential and algebraic equations including continuous sets, derivative variables, and simulation interfaces.
class ContinuousSet: ...
class DerivativeVar: ...
class Integral: ...
class Simulator: ...Differential Algebraic Equations
Components for modeling equilibrium problems, complementarity constraints, and bilevel optimization problems including variational inequalities and game-theoretic formulations.
class Complementarity: ...
class ComplementarityList: ...
def complements(expr1, expr2): ...Mathematical Programming with Equilibrium Constraints
Data loading and management interfaces for importing external data from various sources including databases, spreadsheets, and structured files.
class DataPortal: ...
class TableData: ...
class DataManagerFactory: ...Contributed modules providing specialized optimization algorithms, solver interfaces, and modeling capabilities including nonlinear decomposition, sensitivity analysis, and robust optimization.
# Selected contrib modules
pyomo.contrib.gdpopt: ...
pyomo.contrib.mindtpy: ...
pyomo.contrib.sensitivity_toolbox: ...
pyomo.contrib.pyros: ...