1. Introduction.- Part I. An Introduction to Pyomo.- 2. Mathematical Modeling and Optimization.- 3. Pyomo Overview.- 4. Pyomo Models and Components: An Introduction.- 5. Scripting Custom Workflows.- 6. Interacting with Solvers.- Part II. Advanced Topics.- 7. Nonlinear Programming with Pyomo.- 8. Structured Modeling with Blocks.- 9. Performance: Model Construction and Solver Interfaces.- 10. Abstract Models and Their Solution.- Part III. Modeling Extensions.- 11. Generalized Disjunctive Programming.- 12. Differential Algebraic Equations.- 13. Mathematical Programs with Equilibrium Constraints.- . A Brief Python Tutorial.- Bibliography.- Index.
William E. Hart, Carl D. Laird, Bethany L. Nicholson, John D. Siirola, and Michael L. Bynum are researchers affiliated with the Sandia National Laboratories in Albuquerque, New Mexico. Jean-Paul Watson is a researcher with the Lawrence Livermore Laboratory. David L. Woodruff is professor at the graduate school of management at the University of California, Davis. Gabriel Hackebeil is affiliated with Deepfield Nokia, Ann Arbor, MI. The 2019 INFORMS Computing Society prize was awarded to William E. Hart, Carl D. Laird, Jean-Paul Watson, David L. Woodruff, Gabriel A. Hackebeil, Bethany L. Nicholson and John Siirola for spearheading the creation and advancement of Pyomo, an open-source software package for modeling and solving mathematical programs in Python.
This book provides a complete and comprehensive guide to Pyomo (Python Optimization Modeling Objects) for beginning and advanced modelers, including students at the undergraduate and graduate levels, academic researchers, and practitioners. Using many examples to illustrate the different techniques useful for formulating models, this text beautifully elucidates the breadth of modeling capabilities that are supported by Pyomo and its handling of complex real-world applications. In the third edition, much of the material has been reorganized, new examples have been added, and a new chapter has been added describing how modelers can improve the performance of their models. The authors have also modified their recommended method for importing Pyomo. A big change in this edition is the emphasis of concrete models, which provide fewer restrictions on the specification and use of Pyomo models.
Pyomo is an open source software package for formulating and solving large-scale optimization problems. The software extends the modeling approach supported by modern AML (Algebraic Modeling Language) tools. Pyomo is a flexible, extensible, and portable AML that is embedded in Python, a full-featured scripting language. Python is a powerful and dynamic programming language that has a very clear, readable syntax and intuitive object orientation. Pyomo includes Python classes for defining sparse sets, parameters, and variables, which can be used to formulate algebraic expressions that define objectives and constraints. Moreover, Pyomo can be used from a command-line interface and within Python's interactive command environment, which makes it easy to create Pyomo models, apply a variety of optimizers, and examine solutions.
Review of the Second edition:
This book provides a detailed guide to Pyomo for beginners and advanced users from undergraduate students to academic researchers to practitioners. … the book is a good software guide which I strongly recommend to anybody interested in looking for an alternative to commercial modeling languages in general or in learning or intensifying their Pyomo skills in particular.
—Christina Schenk, SIAM Review, Vol. 61 (1), March 2019