Optimization with CasADi

In this short course, you will get the opportunity to gain hands-on experience with an open source tool for solving optimization problems, CasADi. The main focus of the course is to develop skills in solving optimization problems arising in research using efficient tools.

  • Computation of derivatives (Jacobians and Hessians)
  • Solving non-linear programming problems (NLPs)
  • Solving DAE constrained optimal control problems, both with CasADi and

The exercises during the tutorial will be based on the Python language. Basic knowledge of Python helps, but is not a requirement.

About CasADi

CasADi is a minimalistic computer algebra system implementing automatic differentiation in forward and adjoint modes by means of a hybrid symbolic/numeric approach. It is designed to be a low-level tool for quick, yet highly efficient implementation of algorithms for numerical optimization. Of particular interest is dynamic optimization, using either a collocation approach, or a shooting-based approach using embedded ODE/DAE-integrators. In either case, CasADi relieves the user from the work of efficiently calculating the relevant derivative or ODE/DAE sensitivity information to an arbitrary degree, as needed by the NLP solver. This together with full-featured Python and Octave front ends, as well as back ends to state-of-the-art codes such as Sundials (CVODES, IDAS and KINSOL),IPOPT and KNITRO, drastically reduces the effort of implementing the methods compared to a pure C/C++/Fortran approach.


Participants receive 2hp if the following requirements are fulfilled.

  • Attendance during the tutorial sessions
  • Completion of a hand-in exercise or a small project of your choice

Please note that taking the course for credits is not a requirement to participate - you are also welcome to join the tutorial just for learning CasADi.


The course will be held at the Department of Automatic Control, in Lab C at the ground floor of the M-building.


Tuesday December 6th 13:15-17:00

Wednesday December 7th 8:15-12:00

Thursday December 8th 8:15-17:00


Hand-in problems