IAMOOC is a free MOOC on Interval Analysis with application to parameter estimation and robot localization.
Interval analysis concerns the methods which computes with intervals in place of real numbers.
There is a large number of applications in Control, Optimization, Robotics, Chemistry.
The registration is free.
What is Interval Analysis?
Interval Computation is a numerical tool which allows us to solve nonlinear problems in a guaranteed way.
One of the pioneers of interval computations is Ramon E. Moore. He contributed largely to its development and dissemination.
Nowadays, Interval Computations can be found in many fields: global optimization, set inversion, parameter estimation, localization of robots, etc.
Interval Computation offers a general numerical framework to easily get reliable results.
Interval Computation can deal with a huge class of problems involving equations or inequalities which can be non-smooth,
non-convex, or with different kind of variables.
Interval tools are easy to understand. They only require basic knowledge on mathematics and computer sciences.
The results provided by interval methods are guaranteed, which means that from correct assumptions.
Interval Computations will provide correct conclusions.
The results are guaranteed in any case. As a consequence, Interval Computations can be used to prove mathematical theorems.
For instance, W. Tucker has proven the conjecture of Lorenz and Thomas Hales the conjecture of Kepler, both using Interval Computations.
To register fill the form :
The registration is not mandatory to follow the MOOC and to see the videos.
But it is needed to have to get the diploma.
To follow IAMOOC, you should have some basic notions in Python
and some knowledges in mathematics.
If you do not know Python, but any other programming language,
you may learn easily the required notions in this MOOC.
You will have to install Python 3 in your machine (see below).
A video with explanations related to each exercise is given as soon as the lesson opens.
You are not obliged to follow the method that is given in the video.
To get the diploma, you need at least 12 points.
Therefore, doing all exercises is not mandatory.
The participants who got enough points will receive a diploma corresponding this MOOC.
This diploma can be used by students to obtain the corresponding
from their PhD courses, or to comply with any other requests by their home university.
If needed by your doctoral school, I can also provide a 20 minutes Skype exam with a mark, once the MOOC is finished.
An example of the diploma you can obtain :
, 12:00. Chapter 0: Install all you need
, 12:00. Chapter 1: Interval Computation
, 12:00. Chapter 2: Set inversion
, 12:00. Chapter 3: Contractors
, 12:00. Chapter 4: Application to robot localization
, 12:00. All exercises should be posted.
, 12:00. Diplomas are sent by email
Post your work
For each lesson, you should send your solution by email to email@example.com
For the exercises that require the execution of a program,
You should provide the Python (or other) code.
You also have to send in your email a video capture
with your running program. A video should last for less than 1 minute, if possible.
A possibility is to open a youtube channel so that you can send be the associated link in the email
For the video capture, you may use 'SimpleScreenRecorder' for Linux or 'CamStudio' for Windows.
For some exercises, the solution corresponds to text and equations and no program is required.
In such a case, you should post a scan of your paper sheet,
(taken with you phone for instance) or any pdf file.
Exercises to be done:
A small manual on PyIbex and Vibes:
A zip file with the slides of the lessons :
Lessons et vidéos
In the last version of PyIbex (2019, version 1.6.4), few things have changed in the Python
code and the code written in the videos is not always exactly consistent with the latest version of
PyIbex. Below are listed the changes. from pyIbex import * should be replaced by from pyibex import *
Some other modifications are described in the PyIbex documentation. (in magenta)
Chapter 0. Install all you need
Abstract: The goal of Chapter 0 is to help you to install all what you need to follow IAMOOC.
Exercise 0. Send an image
You install all what you need in your computer. You have to send by email an image to firstname.lastname@example.org
with a subpaving (see below). The role of the exercise is to show that all is well installed and that you can start the mooc next week.
For the installation, you have two possibilities : (1) Install all in your computer (2) Use Python online.
(1) All in your computer.
You need Python 3, PyIbex and Vibes for graphics.
For the install of PyIbex and Vibes, see:
A video to help you for the install is available for Windows:
and also for Linux Ubuntu:
For Linux Ubuntu, you can also open a terminal and type the following lines:
1) Install spyder 3:
sudo apt-get install spyder3.
2) Install pip :
sudo apt-get install python3-pip.
3) Install pyibex:
sudo python3 -m pip install pyibex.
4) Install vibes:
sudo python3 -m pip install vibes.
5) Download Vibes (i.e., the binary file VIBes-0.2.3-linux.AppImage) at
executable (Right click on the icone + permissions).
Click on the icone of Vibes. You will see a small window with nothing inside, waiting for drawing orders.
7) Start Spyder and test the example given at
(2) You prefer Python online (easier, but less efficient))
We use replit.com. Go to the project
Run to check the program is fine
Fork (for this, you will have to create an account).
Modify the program as you want.
To post your program, just send the link.
Chapter 1. Interval Computation
Abstract: The goal of Chapter 1 is to
introduce all the mathematics related to interval analysis. After
this chapter, you should be able to compute with uncertain numbers
represented by intervals and also to approximate a set by subpavings,
i.e., union of boxes. During the practice we will implement the
interval calculus under a Python environment.
What is an interval ?
Natural inclusion function
Minimal inclusion function
Exercises. (To post by email : email@example.com)
Exercise 1. Interval arithmetic (1 point)
For this exercise, you do not need to program anything, just computing with intervals.
Exercise 2. Intervals with Python (1 point)
Using overloading operators, we show how Python allows an implementation of your own interval arithmetic library.
Chapter 2. Set inversion
Abstract: Many problems of engineering such as
parameter estimation, tuning of a controller, etc., can be cast into
a set inversion problem. In this chapter, we will define the notions
of set inversion and illustrate these notions on some examples. An
algorithm for solving any set inversion problems will be given. This
algorithm, named SIVIA (Set Inverter Via Interval Analysis), will be
proposed. This algorithm will be implemented in
Python and some test-cases will be solved.
What is set inversion?
Exercise 3. Minimization of a nonconvex function (1 point)
Interval analysis allows to solve non-convex global minimization problems without being trapped by a local minimum.
In this exercise, a simple interval-based algorithm is implemented to illustrate the principle.
Exercise 4. Parameter estimation (1 point)
This exercise illustrates how interval analysis can be used to solve set estimation problems
and how it can be robustified with respect to some outliers.
Chapter 3. Contractors
Abstract : A contractor is an operator which takes as an input a box X and contracts it into a subbox Y without
removing a single solution of the problem. Contractors are necessary to solve efficiently problems containing
a large number of unknowns. This chapter introduces the notion of contractor and
explains how they can be implemented in Python.
What is a contractor?
Contractor for z=x+y
For primitive equations
Exercise 5. Electric circuit (1 point)
This exercise shows a very simple example related to bounded-error estimation which illustrates the power
of interval propagation.
Exercise 6. Forward-backward contractor (1 point)
This exercise shows how an interval forward-backward propagation makes it possible to build efficient contractors
for a huge class of constraints.
Exercise 7. Sine contractor (1 point)
This exercise gives an optimal contractor for the constraint y=sin(x) using symmetries.
Exercise 8. Separators (1 point)
We show here how a separator can be built easily from two contractors: an inner and an outer. The dual nature of
the separator allows us to compute an inner and an outer approximation of a set defined by several constraints.
Chapter 4. Application to robot localization
Abstract : This chapter considers a problem of localization inside an
environment with landmarks. No lessons is given in this chapter, only exercises.
The main problem to be treated here is SLAM (Simulataneous Localization And Mapping).
It will be decomposed into a list of 4 exercises with an increasing complexity.
Exercise 9. Contractors and separators with PyIbex (1 point)
A separator is a pair of two contractors: an inner contractor and an outer contractor.
This exercise illustrates how Pybex (which is a Python extension of Ibex) can be used to
build easily separators for sets defined as union, intersection and complements of primitive sets.
Exercise 10. Estimation with PyIbex (1 point)
Bounded error estimation problems can now be solved very easily and efficiently with the help of PyIbex.
Exercise 11. Localization of a robot from landmarks using range and bearing measurements (2 points)
This exercise shows an important application which can be solved efficiently with interval analysis.
Without any linearization, we show that it is possible to localize a robot in a guaranteed manner.
Exercise 12. Simultaneous Localization And Mapping (SLAM) (2 points)
In a SLAM problem, many variables are involved with nonlinear constraints. This
problem is considered as difficult. We show here that it it possible to solve it easily and in a reliable way using intervals. Illustration of Interval SLAM for real applications..
List of the students who got the diploma
51 in 2015
EL ABDALAOUI Zacharie
ENNOUHI M'hamed Fadil
KARKOUB El Wali
LE ROCH Gwenn
PERTIERRE DO MONTE
ZIANE Mohamed Mahrez
BEN SAID Hela
El JAWAD Alaa
34 in 2017
Raphael Abellan Romita
Yves Le Palud
Philipe Miranda de Moura
29 in 2018
Elias Aoun Durand
Maria Luiza Costa Vianna
Maxime Do Rosario
25 in 2019
27 in 2020
Jose Eduardo Carvajal Rubio
Imad El Bouazzaoui
Paul-Antoine Le Tolguenec
Mohamed Sadiq Ikbal
Nicolas Torres Alberto
30 in 2021
Youssef El Gaouti
Enzo-Loïd ESSONO AUBAME
Bernardo HUMMES FLORES
Stéphane NGNEPIEPAYE WEMBE
Yves Jordan NJAMEN NGONGANG
48 in 2022
Chidiebere Millicent IGWEBUIKE
Muhammad Farhan AHMED