(449g) Modeling Abstractions and Frameworks for Optimization Problems with Differential Equations in Pyomo
The first part of this talk presents pyomo.dae, an open-source tool for abstracting and discretizing optimization problems constrained by differential equations. Our tool does not require differential equations to have a particular form and is able to represent high-order differential equations as well as partial differential equations on bounded rectangular domains. This provides users a new level of modeling flexibility that is not found in most algebraic modeling languages and optimization frameworks. Furthermore, pyomo.dae provides several automatic discretization methods for converting models containing differential equations to finite-dimensional algebraic models that can be solved with standard optimization solvers.
Dynamic models are often used within more advanced methods such as moving horizon estimation (MHE) or nonlinear model predictive control (NMPC). While these methods have been widely applied in the literature, there is no standard for implementing them. The second part of this talk introduces a general framework for dynamic optimization within Pyomo. This framework provides easier implementation and use of several advanced optimization techniques by both experts and non-experts alike.
The final part of this talk demonstrates pyomo.dae and our dynamic optimization framework on several illustrative examples, showing how it can be used to tackle a variety of dynamic optimization problems. We present the finite difference and collocation discretization schemes that have been implemented and demonstrate how simple it is to combine such schemes to create new, non-intuitive solution strategies and perform discretization studies. We also show how our framework for dynamic optimization drastically simplifies the implementation of MHE and NMPC. Finally, we discuss how this package enables the exploration of new modeling paradigms such as combining pyomo.dae with other packages in Pyomo for stochastic or disjunctive programming.