| name | pyomo-6-10-0 |
| description | Python-based open-source optimization modeling language supporting LP, QP, NLP, MILP, MIQP, MINLP, stochastic programming, GDP, DAE, bilevel programming, MPEC, and network flow models with commercial (Gurobi, CPLEX) and open-source (CBC, HiGHS, IPOPT) solver interfaces. Use when formulating mathematical optimization models in Python, connecting code to solvers, building abstract or concrete models, or needing advanced features like disjunctive programming, stochastic optimization, dynamic optimization, bilevel optimization, robust optimization, or sensitivity analysis. |
Pyomo 6.10.0
Overview
Pyomo is a Python-based, open-source optimization modeling language supporting a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models. It defines general symbolic problems, creates specific problem instances with data, and solves them using commercial (Gurobi, CPLEX, Xpress) and open-source (CBC, HiGHS, IPOPT, GLPK) solvers.
Pyomo supports a wide range of problem types: Linear Programs (LP), Quadratic Programs (QP), Nonlinear Programs (NLP), Mixed-Integer LP (MILP), Mixed-Integer Quadratic Programming (MIQP), Mixed-Integer Nonlinear Programming (MINLP), Stochastic Programming, Generalized Disjunctive Programming (GDP), Differential-Algebraic Equations (DAE), Bilevel Programming, Mathematical Programs with Equilibrium Constraints (MPEC), network flow models, and constraint programming via z3.
When to Use
- Formulating mathematical optimization models in Python
- Connecting Python code to optimization solvers (persistent or file-based)
- Building abstract models with external data files or concrete models with inline data
- Modeling discrete decisions with logical constraints (GDP)
- Stochastic programming with scenario trees and parallel solvers (PySP)
- Dynamic optimization with differential equations (DAE)
- Bilevel optimization with nested optimization problems
- Robust optimization under uncertainty (PyROS)
- Global optimization of nonconvex MINLP (MindtPy, McPP, multistart)
- Sensitivity analysis, parameter estimation, or design of experiments
Quick Start
import pyomo.environ as pyo
model = pyo.ConcreteModel()
model.x = pyo.Var([1, 2], domain=pyo.NonNegativeReals)
model.obj = pyo.Objective(expr=2*model.x[1] + 3*model.x[2])
model.con = pyo.Constraint(expr=3*model.x[1] + 4*model.x[2] >= 1)
opt = pyo.SolverFactory('cbc')
results = opt.solve(model)
print(f"Status: {results.solver.status}")
print(f"x[1] = {pyo.value(model.x[1]):.4f}")
print(f"x[2] = {pyo.value(model.x[2]):.4f}")
Core Concepts
- ConcreteModel — data is supplied inline at model definition time; preferred for Python programmers
- AbstractModel — symbolic template instantiated with external data via
create_instance(); preferred when separating model logic from data
- Components — Sets, Parameters, Variables, Objectives, Constraints, Expressions, Suffixes are the building blocks
- Blocks — hierarchical containers that group components; models themselves are blocks
- Transformations — modify model structure (e.g., GDP reformulations, DAE discretization, logical-to-linear)
- SolverFactory — creates solver interfaces by name (
'cbc', 'gurobi', 'ipopt', 'appsi_gurobi')
Advanced Topics
Core Modeling Components: Sets, Parameters, Variables, Objectives, Constraints, Expressions, Suffixes, SOS → Core Modeling Components
Expression System & Transformations: Expression tree architecture, visitors, context managers, transformation framework → Expression System and Transformations
Abstract Models & Data Handling: AbstractModel workflow, .dat files, DataPortal, native data, BuildAction → Abstract Models and Data Handling
Solver Interfaces & APPSI: SolverFactory, persistent solvers, APPSI auto-persistent interfaces (CBC, CPLEX, Gurobi, HiGHS, IPOPT) → Solver Interfaces and APPSI
Mixed-Integer & Global Optimization: MindtPy, McPP, multistart, trust region solvers for MINLP → Mixed-Integer and Global Optimization
Generalized Disjunctive Programming: Disjunctions, logical constraints, GDPopt, PyROS robust optimization → Generalized Disjunctive Programming
DAE, Network, and Advanced Models: Differential-algebraic equations, collocation, network flows, MPEC, units → DAE and Network Models
Model Analysis & Utilities: IIS, incidence analysis, DOE, MPC, parameter estimation, sensitivity, scaling → Model Analysis and Utilities
Advanced Modeling Patterns: Blocks, interrogating, manipulating, cloning, debugging models → Advanced Modeling Patterns
Kernel API (Beta): Alternative pyomo.kernel API with containers and conic modeling → Kernel API Beta
Constraint Programming & External Solvers: z3 interface, ExternalFunction, GAMS, direct solver modes →
: NLP interfaces, linear solvers, block-structured computation →
: pip/conda install, Cython build, solver setup, principles →