La grille fonctionne sur le même principe que la dernière fois, les cases vertes sont parcourables, les blanches sont des murs et les points bleus sont des agents.
Voir ici pour plus de détails.
La grille est générée à parti d'un fichier texte. Il est possible de passer le nombre d'agents voulu dans le fichier texte, ils sont placés automatiquement sur la grille sur les positions désignés (l'utilisateur ne choisi pas spécifiquement d'un agent).
Exemple de fichier :
2
BBBBBB
BSEEEB
BBBBEB
BFEEEB
BBBBEB
BSEEEB
BBBBBB
Le 2 indique que deux agents seront sur la grille. Ils seront placés sur les deux cases “S”. (Note à moi même - inutile de préciser le nombre d'agents, il suffirait d'en créer autant qu'il y a de cases “S”).
Au début de l'épisode, les agents sont sur leur position de départ. Ils se déplacent l'un après l'autre sur la grille jusqu'à trouver la case objectif. A chaque déplacement l'agent reçoit une récompense de -1, s'il se déplace sur la case d'un autre agent, il reçoit une récompense de -10. Sinon, s'il trouve l'objectif sa récompense est de 0.
L'épisode est terminé lorsque les deux agents ont atteint la case objectif. Si un agent la trouve avant l'autre, l'épisode continue, mais l'agent qui l'a trouvé ne bouge plus. Pendant ce temps le second agent continue de le chercher.
Deux IL évoluent sur une grille de forme Tunnel To Goal avec un QLearning (grille ci-dessus). Les deux agents essaient d'apprendre une politique optimale, mais se court-circuitent en arrivant devant le tunnel.
reward_grille_sma_ils.png
(Somme des récompenses des deux agents - l'un en violet, l'autre en marron)
La récompense de -10 sur la collision à l'entrée du tunnel les empêche d'apprendre la politique optimale
Même test en prenant une grille dans laquelle il n'y a pas de collisions.
sans_collisions_sma_grille.png
On peut voir que la somme des récompenses tend vers un minimum et que les agents ne se perturbent pas.
sans_collisions_sma_grille_ils.png
(Somme des récompenses des deux agents - l'un en violet, l'autre en marron)