L’objectif de ce TP est de réaliser de l’apprentissage automatique sur un jeu (mini golf). La plupart du code est déjà fourni, il faut donc essentiellement le lire et le comprendre afin de le compléter. Nous allons nous concentrer sur trois algorithmes:
- Value Iteration
- Monte Carlo
- Q-Learning
Ressources
Lisez les instructions ci-dessous
Prise en main
Archive
Télécharger et décompressez l’archive. Exécutez le jeu à l’aide de python simulator.py
. Les contrôles
apparaissent dans le terminal.
Il y a trois fichiers source dans le projet:
render.py
qui gère l’affichage: vous n’avez pas à vous en occupersimulator.py
qui gère le jeu en lui-même, il est important de comprendre ce que font les fonctionsagents.py
les agents dont nous allons compléter le code.
Simulateur
Lisez simulator.py
et essayez de répondre aux questions:
- Où est stockée la position actuelle de la balle ?
- Comment les obstacles sont ils représentés ?
- À quoi sert la fonction
get_kick_target
? - Où les déplacements de la balle sont ils simulés ? Comment ?
- Comment les collisions sont t-elles détectées, et où sont géré les rebonds de la balle contre les obstacles ?
- Quelle est la condition pour que la balle soit considérée comme entrée dans le trou ?
- Il est possible de jouer l’animation de la balle qui se déplace ou pas. Pourquoi ? Comment cela est-il implémenté ?
- Comment la balle est t-elle repositionnée dans le jeu, sans être déjà sur un obstacle ?
Agents
Lisez agents.py
(surtout la classe Agent
) et essayez de répondre aux questions:
- À quoi servent les fonctions
position_to_state
etstate_to_position
? - Que fait la fonction
build_states
? - Comment l’agent par défaut choisit ses actions (lorsque vous appuyez sur
p
) ? - Comment choisir quel agent sera utilisé dans le programme ?
Value Iteration
Compréhension
Lisez le code de ValueIterationAgent
:
- Comment sont stockées les valeurs de la fonction \(V\) ?
- La fonction
initialize
construit le modèle (déterministe) du jeu. Comment ce modèle est-il représenté ? - À quoi sert le fichier
model.data
?
Construction du modèle
Changez le code pour que l’agent utilisé soit ValueIterationAgent
et lancez le simulateur de manière à
générer le modèle de transition.
Implémentation
Implémentez les fonctions manquantes, c’est à dire:
-
pick_action
: qui trouve l’action (et éventuellement le score) la meilleure pour un état donné, en utilisant le modèle et l’estimation actuelle de $V$ pour les récompenses futures. -
learn
: qui fait une étape du value iteration (on pourra la déclencher avecl
), c’est à dire qui met à jour $V$ pour chaque état (cf algorithme du value iteration).
Visualisez la carte des valeurs, et testez la politique avec la touche p
.
Model-free
Compréhension
- Lisez le code de
pick_action
, comment l’action est t-elle sélectionnée ? - Lisez le code de
learn
- Que fait la ligne
episode = episode[-10:]
? Pourquoi fait-on ça ? - Quels sont les arguments passés à
update_q
? Notamment, quelle est la différence entrereward
etreturns
?
Implémentation Monte Carlo
Implémentez le code manquant dans MonteCarloAgent
et exécutez l’algorithme.
Implémentation Q-Learning
Pourquoi initialiser les valeurs de \(Q\) à -10?
Implémentez le code manquant dans QLearningAgent
et exécutez l’algorithme.