OCOMA stands for Otimal COde Generator using MAple. The original OCOMA was developed during the Ph.D. project of Jens Bausa at the Technical University of Berlin, Institute for Energy Engineering under the supervision of Prof. Dr.-Ing. George Tsatsaronis. The first version wrote FORTRAN Code for the solver SNOPT. OCOMA was later modified by Tobias Jockenhövel from the same Institute and supervision who added online optimization features, the capability to call external subroutines (e.g. thermodynamic property data) and incorporated the solvers IPOPT and TRUST. The concept of OCOMA is the following: The continuous process model, which consists of differential-algebraic equations (DAE system), is defined using a relatively simple syntax. The DAE systems are then discretized automatically into finite time elements to form nonlinear programming (NLP) problems. These are subsequently converted into FORTRAN codes using the Maple-based code generator OCOMA. OCOMA analyses the system linearity of the user given DAE system and transforms the continuous DAE optimization problem to a NLP problem by a full discretization of state and control variables. OCOMA then automatically writes the FORTRAN subroutines for the NLP solvers including first and second symbolic derivatives (Hessian or Hessian-Vector-Products for IPOPT). These derivatives are calculated symbolically and explicitly written as FORTRAN code. Thus, the convergence properties are much better than with numeric derivatives and the execution of NLP is very fast. The codes are then linked with large-scale NLP solvers which perform the dynamic optimization. OCC allows both off-line and online optimization, and the optimization results can be visualized using a user-friendly graphical interface. |