Please review the following book chapters (in order):
Chapter 1 of Biegler (2010) introduces classes of optimization problems motivated by applications.
Chapters 1 and 2 in Bynum et al. (2021) provide an overview of Pyomo and optimization modeling.
Chapters 3 and 4 in Bynum et al. (2021) describe core Pyomo features through examples.
Chapter 7 in Bynum et al. (2021) describes special considerations for nonlinear programs.
Chapter 8 in Bynum et al. (2021) describes structured modeling with blocks.
Chapter 11 in Bynum et al. (2021) describes generalized disjunctive programming (logical decisions).
Chapter 12 in Bynum et al. (2021) describes optimization with differential algebraic equations (DAEs).
Chapter 10 in Biegler (2010) provides mathematical background for DAE-constrained optimization.
For stochastic programming, read Birge and Louveaux instead of the Pyomo book. The third edition dropped the PySP chapter, and PySP is no longer shipped with Pyomo; the capability now lives in the separate mpi-sppy package.
Reference: Bynum, M. L., Hackebeil, G. A., Hart, W. E., Laird, C. D., Nicholson, B. L., Siirola, J. D., Watson, J.-P., and Woodruff, D. L. Pyomo — Optimization Modeling in Python, Third Edition. Springer Optimization and Its Applications, Vol. 67, 2021.
The following chart organizes optimization problems based on key characteristics including variable type (continuous versus discrete) and whether the objective and constraints are differentiable. These factors impact which algorithms are best suited for different problems.
Linear Programs (LP) / Linear Optimization Problems¶
There are specialized solvers for LP, QP, and other convex optimization problems. We will not focus on these in this class, but instead consider algorithms for general nonlinear programs.