The demand for model-based simulation and optimization solutions requires the availability of software frameworks that not only provide computational capabilities, but also help to ease the formulation and implementation of the respective optimal control problems. In this article, we present and discuss recent development efforts and applicable work flows using the example of MUSCOD, the Multiple Shooting Code for optimal control, a contemporary and frequently used software package based on a direct and simultaneous approach to optimal control. We show how to facilitate its usage by providing convenient high-level language interfaces that open up the possibility of using well-established modeling languages as back-ends for problem formulation, implementation and evaluation. This is in accordance to well-known design principles that ask for implementing everything in the highest suitable programming language available (here Python), while crunching numbers in the lowest and most efficient one that allows for best exploitation of structure, memory, and CPU usage (here Fortran and C). Using the example of an introductory optimal control problem, we present the most common use patterns in both C++ and Python, for optimal control, nonlinear model predictive control (NMPC), and moving horizon estimation (MHE) applications.
GOMS-2016-0242, Interdisciplinary Center for Scientific Computing (IWR), Heidelberg University, Germany November 2016