Numerical Optimal Control (online)

Prof. Dr. Moritz Diehl -

The course’s aim is to give an introduction into numerical methods for the solution of optimal control problems in science and engineering. The focus is on both discrete time and continuous time optimal control in continuous state spaces. It is intended for a mixed audience of students from mathematics, engineering and computer science. This semester, Numerical Optimal Control is offered as a semi-online course.

Structure of the course

The course relies heavily on self-study based on the lecture videos, course manuscript and exercise sheets that were created in the Summer Semester 2017. Nonetheless we will meet every Friday, 10:00 to 12:00. The sessions will be dedicated to either Q&A with Prof. Diehl or exercises with the teaching assistants. This course has 6 ECTS credits. For more information please contact Florian Messerer or Andrea Zanelli.

Exercises: The exercises are mainly computer based. Individual laptops with MATLAB and CasADi installed are required. Please note that the reserved room is not a computer pool. The exercises will be distributed beforehand. You can then prepare yourselves for the exercise session, where you can work on the exercises and get help and feedback from the teaching assistants. We may also discuss solutions of previous sheets if there is demand. You can work in groups of two. Solutions to the exercise sheets have to be handed in via e-mail to until the start of the next Q&A session. Note that because of the biweekly rhythm it will usually be two exercise sheets at the same time. You will also have to indicate which of the exercises you successfully finished. We will not examine every solution of every student. Note however that we will do extensive random probing. Indicating a task as solved when this is not true will result in 0 points for the whole sheet. Also note the guidelines for handing in stated below. You will need at least 50% of the total points in order to be eligible for the exam.

Final Evaluation: The final exam is a written closed book exam. Only pencil, paper, a calculator and four single A4 pages of self-chosen formulas are allowed. For engineering students the final grade of the course (6 ECTS) is based solely on the final exam. Students from the faculty of mathematics need to pass the written exam (ungraded) in order to take a graded oral exam.

Projects: The optional project (3 ECTS) consists in the formulation and implementation of a self-chosen problem of Numerical Optimal Control, resulting in documented computer code, a project report, and a public presentation. Project work starts in the last third of the semester and participants can work either individually or in groups of two people.

Guidelines for handing in exercises

For handing in the exercises via e-mail, please adhere to the following guidelines:

  • You can hand in in groups of two.
  • One file which is your main document. It contains your name(s) and a clear indication for every task whether you solved it. A simple format such as .txt suffices. Claiming tasks as solved when this is not true will result in 0 points for the whole sheet.
  • If there are questions requiring an explicit answer statement (instead of only code) please add them to the main document. Anwers hidden in comments in the middle of the code will be ignored.
  • Hand in all of the relevant code files. It should be possible to run them to see all results. It should not be necessary to un(comment) lines for proper functioning. If there are several similar, but conflicting versions (e.g. different constraints), please hand them in as separate files.
  • If you received helper functions as part of the exercise, please also hand them in. This makes it easier to run your files since everything is contained in one folder already.
  • Do not copy each other's code. This will result in 0 points for the sheet for all participating parties!



 Apr 26th  Kick-off meeting  ex0.pdf  
 May 3rd  Exercise session  ex1.pdf  
 May 10th  Guest talk (at TF)  Deadline Ex1 at 10am  all info see here
 May 17th  Exercise session ex2.pdf,, ex3.pdf,  
 May 24th  Q&A (R119, Ernst-Zemelo-Str. 1)  Deadline Ex2, Ex3 at 10am  course content up to and including Chapter 5
 May 31st  Exercise session ex4.pdf ex5.pdf  
 Jun 7th  Q&A  Deadline Ex4, Ex5 at 10am  course content up to and including Chapter 8.8 (without Chap. 6)
 Jun 14th  PENTECOST    
 Jun 21st  Projects / Guest Talk (at TF)  SR102-02-12 (Engineering Faculty)  10:15 - 10:55 project discussions (with Prof. Diehl) / 11:00 Guest Talk
 Jun 28th  Q&A (without Prof. Diehl)                Exercise session  ex6.pdf ex7.pdf  course content up to and including Chapter 12
 Jul 5th  Exercise session / project work  ex8.pdf ex9.pdf  Deadline Ex6, Ex7 at 10am
 Jul 12th  Q&A / project discussions  Deadline Ex8, Ex9 at 10am  course content up to and including Chapter 16 (without Chap. 14, 17)
 Jul 19th  Exercise / Guest Talk (at TF)  ex10.pdf | SR103-02-14 (TF)  10:00 - 10:55 exercise session / 11:00 Guest Talk
 Jul 26th  Project presentations  Deadline projects, Ex10 at 10am  



Please find the guidelines for the optional 3ECTS project here .

Matlab and CasADi installation

MATLAB is an environment for numerical computing based on a proprietary language that allows one to easily manipulate matrices and visualize data which will be very helpful in prototyping the algorithms presented during the lectures of this course. The University of Freiburg offers a free-of-cost license to students and staff which can be obtained following the instructions here. In order to be able to complete the exercises of this course, you will need a working installation of MATLAB. Follow the instructions at the provided link in order to install the software package.
CasADi is a symbolic framework for algorithmic differentiation and numerical optimization. In order to install CasADi, follow the instructions here. Download the binaries for your platform and, after having extracted them, add their location to MATLAB's path. To test your installation run the simple example described at the provided link. If successful, save the path by executing the command savepath. In this way, the location of the binaries will be known even after restarting MATLAB.