(599b) Efficient Object-Oriented Dynamic Modeling Framework with Source Code Generation for Nonlinear MPC | AIChE

(599b) Efficient Object-Oriented Dynamic Modeling Framework with Source Code Generation for Nonlinear MPC

Authors 

Leal, J. R. - Presenter, University of Coimbra
Santos, L. O., Universidade de Coimbra
Romanenko, A., Ciengis


One of the critical tasks during the implementation of a Nonlinear Model Predictive Control (NMPC) project is the development of a sufficiently good plant model. The dynamic modeling of highly complex industrial processes, where NMPC is economically feasible, typically involves the definition of a very large number of variables and equations in a procedure that may be both time consuming and error prone. Besides, the issue of model maintainability is an important factor in order to sustain NMPC system performance after commissioning. In order to ensure the success of an NMPC project, it is crucial to use specially designed tools that allow to describe, with a sufficient accuracy and reasonable effort, the dynamic behavior of the process and to produce a highly efficient compiled model suitable for simulation, parameter estimation, and optimization purposes. There are several equation-oriented frameworks available, many of them with their own declarative modeling language which requires the engineer to learn yet another new programming language. Unfortunately, most of these languages do not aid in the translation of process engineering concepts into equations [1].

In order to speed-up the model development for Plantegrity, an NMPC system derived from NEWCON [2], a new modeling library was developed using first principles and the concepts of object-oriented programming. The framework was developed in C++ and employs the ideas defined by Tu and Rinard (2006) [1] for the ForeSee modeling system, which is based upon the use of four key modeling components: containments, core models, connectors, and coordinators. Some additional concepts, such as equilibrium, were included in the proposed framework.

Owing to its dimensional analysis and conversion capabilities, this library allows the modeler to specify exogenous variables using the most convenient dimensions and units without the need to modify the model. Additionally, it is interfaced with several automatic differentiation (AD) packages, such as ADOL-C [3] and CppAD [4]. A new extension of the CppAD library was also developed in order to produce online efficient C code for model and its derivative evaluations up to the second-order. This automatic differentiation approach may be classified as a hybrid approach, since it combines operator overloading with source code generation. A performance comparison of the several AD packages was carried out in the context of NMPC and state estimation (using an Unscented Kalman filter). In addition, some models are presented in order to illustrate the modeling principles and work-flow.

[1] Tu, H. and Rinard, I. H. (2006). Foresee—a hierarchical dynamic modeling and simulation system of complex processes. Computers & Chemical Engineering, 30(9):1324 – 1345.

[2] A. Romanenko; N. Pedrosa, J. L. and Santos, L. (2007). A linux based nonlinear model predictive control framework. In Ardanuy, J. F.; Escalante, P. B. and S ́nchez, J. M. M., editors, II a Seminario de Aplicaciones Industriales de Control Avanzado, page 229. Madrid, Spain.

[3] Walther, A. and Griewank, A. (2010). ADOL-C: A Package for the Automatic Differentiation of Algorithms Written in C/C++ (https://projects.coin-or.org/ADOL-C).

[4] Bell, B. M. (2012). CppAD: a package for C++ algorithmic differentiation. Computational Infrastructure for Operations Research, COIN-OR (http://www.coin-or.org/CppAD).