programmation pour la robotique, TP 2
Table of Contents
Dans ce TP nous allons utiliser la modélisation par MDP pour résoudre un problème (avec peu d'actions et peu d'états). Nous allons nous intéresser à un problème de chemin dans un graphe, mais à la différence de ce que vous avez pu voir (en INFO1 ou ailleurs), les transitions sont incertaines.
1. Le lac gelé!
Original English Version here
C'est l'hiver. Vous jouez avec vos amis au frisbee dans le parc quand un lancer incontrôlé a pour effet de faire tomber le frisbee au milieu du lac. L'eau est gelée sur presque toute la surface mais il y a quelques trous dans lesquels la glace a fondu. Si vous vous retrouvez au-dessus de l'un de ces trous, vous tomberez dans l'eau glacée. En ce moment, il y a une pénurie mondiale de frisbees, il est donc impératif que vous alliez chercher le frisbee sur le lac et que vous le rameniez. Attention, la glace est glissante, et vous ne vous déplacerez pas forcément dans la direction que vous avez choisie.
Le lac sera modélisé par un graphe, représenté informellement par une illustration comme ci-dessous:
SFFFFFFF FFFFFFFF FFFHFFFF FFFFFHFF FFFHFFFF FHHFFFHF FHFFHFHF FFFHFFFG
Chaque lettre correspond à un sommet, et il existe un arc entre un sommet et chacun de ses voisins (haut/bas/gauche/droite).
Les lettres indiquent ce que contient chaque état:
S
- votre position initiale sur la le lac gelé
G
- la position du frisbee
F
- le sol est gelé sur ce sommet
H
- il y a un trou
Le but est donner une suite d'actions pour rejoindre le sommet G
, à partir
de votre position initiale S
en évitant les trous H
. Ces actions sont au
nombre de 4 (gauche/bas/droite/haut) et indiquent vers quel sommet voisin vous
voulez vous rendre. Attention, ce n'est pas parce que vous décidez d'aller
dans une direction que vous y arriverez : vous pouvez glisser et vous retrouver
aléatoirement sur un autre sommet voisin !
2. Modélisation par un processus de décision markovien
Rappel: Un MDP est un tuple
l'ensemble des états l'ensemble des actions l'horizon la fonction de transition (aussi appelée dynamique) la fonction de récompense la dévaluation
Dans notre cas, il y aura :
- 64 états numérotés de 0 à 63 de gauche à droite et de haut en bas,
- 4 actions (demander un déplacement à gauche/bas/droite/haut) numérotées de 0 à 3
est infini. Les séquences d'actionsS
àG
les plus courtes sont de longueurs 14 mais il existe des séquences plus longues (et infinies).- Pour les transitions, on suppose que la dynamique est connue et donc que l'on
connaît les probabilités de transitions. Dans l'implémentation de OpenAI
Gym, la dynamique est définie comme suit :
- pour les sommets
étiquetésG
ouH
:- on reste sur
quelle que soit l'action, en d'autres termes ssi , sinon;
- on reste sur
- pour les sommets
étiquetés parS
ouF
:- pour toute action
, le résultat peut être de manière équiprobable celui d'aller dans la direction ou la direction ou la direction ; - si une action est "impossible", par exemple se diriger vers le haut dans l'état intiale, on considère qu'elle ramène dans l'état actuelle;
- pour toute action
- pour les sommets
- la récompense est 1 si on se trouve dans l'état étiqueté par
G
, et 0 sinon. - la dévaluation est arbitrairement mise à 0,9.
3. Utilisation de OpenAI Gym
Le site OpenAI Gym propose des modèles d'environnement pour de nombreuses tâches de robotique et plus généralement d'apprentissage par renforcement. Il sert principalement à tester et comparer de nouveaux algorithmes. La tâche qui nous intéresse aujourd'hui est Frozen Lake.
Par le module python gym
on peut charger ces environnements et créer un agent qui interagit avec eux.
Le but du TP est de créer un agent pour cet environnement, et de lui faire
apprendre un une politique
4. Les étapes du TP:
- Téléchargez le carnet ici (clic-droit puis sauvegarder le lien pour éviter les problèmes d'accent dus à l'encodage des pages USPN/LIPN)
- Ouvrez une fenêtre de votre navigateur sur colab
- Chargez le carnet (File → Open Notebook …)
- Lisez/évaluez/complétez le notebook
- Sauvegardez le carnet, et téléchargez-le (File → Download .ipynb)
- Connectez-vous à l'ENT, et à la page du cours de robotique
- Soumettez votre carnet sur l'interface de rendu pour la semaine concernée
4.1. Remarques
Vous pouvez installer jupyter notebook sur votre ordinateur personnel et travailler en local. Il vous faudra dans ce cas veiller à installer jupyter et les bibliothèques nécessaires.