Dymos is a library for optimizing control schedules for dynamic systems -sometimes referred to as optimal control or trajectory optimization. There are a number of other optimal control libraries that tackle similar kinds of problems, such as OTIS4 (Paris et al., 2006), GPOPS-II (Patterson & Rao, 2014),and CASADI (Andersson et al., 2019. These tools all rely on gradient-based optimization to solve optimal control problems, though their methods of computing the gradients vary. Dymos is built on top of the OpenMDAO framework (Gray et al., 2019) and supports its modular derivative system which allows users to mix-and-match from finite-differencing, complex-step, hand-differentiated, and algorithmic differentiation. This flexibility allows Dymos to efficiently solve optimal control problems constructed with both ordinary differential equations (ODE) and differential-algebraic equations (DAE).Dymos can also help solve more general optimization problems where dynamics are only one part in a larger system-level model with additional -potentially computationally expensivecalculations that come before and after the dynamic calculations. These broader problems are commonly referred to as co-design, controls-co-design, and multidisciplinary design optimization. Dymos provides specific APIs and features that make it possible to integrate traditional optimal-control models into a co-design context, while still supporting analytic derivatives that are necessary for computational efficiency in these complex use cases. An example of a co-design problem that was solved with Dymos is the coupled trajectory-thermal design of an electric vertical takeoff and landing aircraft where the thermal management and propulsion systems were designed simultaneously with the flight trajectories to ensure no components overheated (Hendricks et al., 2020).
Difference between optimal-control and co-designOptimal-control and co-design problems deal with dynamic systems. The evolution of the states over time is governed by an ordinary differential equation (ODE) or differential-algebraic equation (DAE):ẋ = f ode (x, t,ū,d) Here,x is a vector of time-varying state variables whose behavior is affected by time (t), a vector of dynamic controls (ū), and a vector of static design parameters (d).To optimize a dynamic system we also need to account for the objective function (J):