Geometric and numerical methods in optimal control II
We present in this course the indirect simple shooting method based on the Pontryagin Maximum Principle (PMP) to solve a smooth optimal control problem. By smooth, we mean that the maximization condition of the PMP gives a control law in feedback form (i.e. with respect to the state and the costate) at least continuously differentiable. We use the nutopy package to solve the optimal control problem by simple shooting.
When the control law in feedback form is discontinuous, in the indirect context, we need to implement a multiple shooting method. We will give a brief introduction to the multiple shooting method during the computer session on a simple example.
Lecture
Lecture: The indirect simple shooting method (lecture notebook, lecture notes)
To get the lecture, you can either click on the first link or follow the procedure given below to download all the course, that is the lecture with the exercices.
Exercices
- Exercice 1: Application of the simple shooting method (correction)
- Exercice 2: Implementing the indirect simple shooting method (correction)
- Exercice 3: Introduction to indirect multiple shooting: the Bang-Singular-Bang case on a turnpike problem (correction)
To do the exercices, please follow the procedure given below.
References
Procedure to get the course and do the exercices
Remark. For the students of the CIMPA school, follow the procedure given here: CIMPA procedure.
In the following, ROOT
is a variable standing for the root directory where the course repository will be stored. For example,
export ROOT=${HOME}/cimpa
The lecture and exercices are given in the form of python notebooks. To download all the course you can download all the files clicking on the links given above or use the git
command (git). To clone the git repository and get the course:
cd $ROOT
git clone https://gitlab.irit.fr/toc/cimpa/gnmoc.git
The course uses python packages (see pkg/env
directory). All theses packages may be installed in a conda environment for ease of use.
If you do not have the conda
command, please install miniconda or conda (conda is longer to install than miniconda). Then, create the cimpa conda environment:
cd $ROOT/gnmoc
conda env create -f pkg/env/cimpa-<YOUR_OS>.yaml
Where <YOUR_OS> must be replaced by linux
, mac
or windows
, according to the platform used.
Activate the cimpa conda environment to get access to all the packages:
conda activate cimpa
Run jupyterlab and access to the lecture (in subdirectory course/lecture
) and exercices (in subdirectory course/exercices
):
jupyter-lab
Revoming the environment
You can remove the cimpa environment doing:
conda activate base
conda env remove --name cimpa