L'environnement est une grille modifiable à partir d'un fichier texte tel que ci dessous :
BBBBBBB BSEEEEB BEBEBEB BEEEBEB BEBEEEB BEBBBEB BEEEEFB BBBBBBB
B = block E = empty S = start F = finish
Elle contient une case de départ, une case de fin et un agent (et bientôt la possibilité d'en mettre plus).
La grille (d'une grande beauté) est représentée comme ci dessous :
envgrille.png
les cases cadrillées sont des murs, l'espace coloré en vert est le labyrinthe, et le cercle bleu est l'agent.
Pour la suite je pars du principe que la case (0, 0) est celle qui se situe le plus en haut à gauche du terrain. Sur cette grille l'agent commence en haut à gauche (case (1, 1)) et doit se rendre en bas à droite (case (5, 6)). Il évolue dans un environnement déterministe. A chaque mouvement il reçoit une récompense de -1, s'il atteint la case de fin, il obtient une récompense de 0.
Lors du test, l'agent à ε = 0, de façon à ce qu'il n'explore jamais (une récompense négative à chaque mouvement devrait le forcer à l'exploration de toute manière). Le taux d'apprentissage est à 0.05. Le taux de réduction gamma est de 0.90. Le nombre d'itérations par épisode est de 5000.
En lançant 500 épisodes de 5000 itérations (maximum, mais on voit que l'agent n'a jamais passé plus de 175 itérations sans trouver la sortie), j'obtiens ce graphique :
rewardsgrille.png
L'agent apprend petit à petit jusqu'à ce que ses qvaleurs convergent. La stratégie s'affine et devient intéressante à partir du 300ième épisode.
Appliquer ce QLearning au MountainCar et au Pendule.