Implémentation du jeu du Wumpus
mono-agent & mutli-agents
sous Jade
29 Mars 2010
Introduction
Le projet consiste à implémenter le jeu du Wumpus en deux versions, mono-agent et multi-agents
sous Jade. Ceci dans le but d’implémenter l’algorithme de Q-learning, de trouver les bons
paramètres qui permettent sa convergence dans le cas mono-agent et d’essayer de trouver une
méthode d’implémentation pour que l’algorithme converge dans le cas multi-agents.
Ce rapport est divisé en deux parties. Dans la première partie nous décrirons le contexte du jeu,
ensuite nous présenterons la méthode proposée pour résoudre le problème de convergence en multi-
agents. Dans la deuxième partie qui est consacrée à l’implémentation, nous détaillerons
l’architecture du programme et le protocole d’interaction entre les agents. Puis nous expliquerons
l’évolution de l’apprentissage en se basant sur notre méthode d’implémentation.
1. Contexte
Le jeu du Wumpus est composé d’une grille, de n lignes et n colonnes, qui représente une caverne
dans laquelle un chasseur (ou plusieurs) doit se déplacer pour trouver un trésor, tuer un monstre et
sortir vivant malgré tous les obstacles.
Dans le monde des agents, le jeu est modélisé par un agent chasseur, un agent environnement (la
caverne) et les objets qui se trouvent dans l’environnement tels que le monstre, les trous et le trésor.
L’agent chasseur se trouve dans l’obscurité, et est guidé uniquement par ses perceptions. Celles-ci
sont fournies par l’agent environnement, sous forme de messages, à la demande de l’agent chasseur.
Dans ce contexte, notre objectif est d’apprendre au chasseur à trouver une politique optimale qui lui
mène au trésor. L’apprentissage se fait par l’algorithme de Q-learning qui attribut un poids à chaque
action a effectuée dans un état s parmi les actions possibles de cet état. La politique optimale qui
assure le gain de l’agent est alors déduit par le choix des actions possédants le plus gros poids dans
chaque état.
1.1 Méthode classique
Le problème de l’implémentation de l’algorithme de Q-learning est de fixer le point de convergence
qui permet à l’agent de passer d’un état d’exploration de l’environnement à un état d’exploitation de
ses connaissances.
Généralement les solutions proposées consistent à utiliser une table de hachage, par agent, indicée
par état et par action dans laquelle sont stockées les valeurs Q correspondantes à chaque couple
(état, action). L’algorithme converge alors après un très grand nombre d’itérations qui est
strictement liée au taux de remplissage de la table de hachage.
1.2 Méthode Proposée
Notre méthode se base sur le partage de connaissance. La base de connaissance est le résultat des
contributions de tous les agents. Chaque agent bénéficie de l’expérience des autres agents grâce à la
structure et la méthode utilisées pour le stockage des valeurs Q.
En pratique, nous utilisons un tableau simple par état indicé par les huit actions. En passant par un
état s, chaque agent ajoute au tableau sa contribution en mettant à jour la valeur Q. Ainsi, plus le
nombre d’agents est important, plus le remplissage de la structure est rapide et par la suite le point
de convergence sera rapidement atteint.
2. Implémentation
2.1 Architecture
Notre programme se compose de quatre packages:
Environnement: rassemble toute la fonctionnalité liée à l’environnement, telle que la structure, la
perception, la communication, et l’orchestration. Ce package regroupe (resp) les classes Cell et
Grid, Perception, WumpusACLMessage, et EnvironmentAgent.
-Gui: regroupe les deux classes qui se chargent de l’interface graphique, CellGui et GridGui.
-Hunter: contient la classe HunterAgent.
-Start: contient la classe Wumpus qui permet de lancer les agents.
Les classes du programme se divisent en quatre catégories: la structure, les agents, la
communication et l’interface graphique.
-La structure: les classes Cell et Grid forment la structure utilisée pour stocker les données. La
classe Cell détient toutes les informations. Tous les objets de l’environnement y sont définis, ainsi
que les huit actions possibles du jeu du Wumpus et leur table Q, tous encapsulés avec les deux
perceptions vent et odeur.
Un objet cell constitue la plus petite entité d’un objet grid qui à son tour n’est autre qu’un ensemble
de cellules. Plus précisément un objet grid est une matrice de cellules, elle s’occupe du placement
des objets dans les cellules correspondantes. Ainsi une cellule peut contenir de zéro à trois entités
(objets et/ou perceptions) avec un ou plusieurs chasseurs (version multi-agents).
-Les agents: la classe EnvironmentAgent est l’orchestrateur de toutes les actions. L’agent
environnement, ayant un comportement complètement réactif, répond aux demandes du chasseur.
Il exécute les actions et envoie les perceptions d’une manière cyclique.
La classe HunterAgent représente l’agent apprenant. Elle implémente l’algorithme de Q- learning.
L’agent chasseur calcule la valeur Q (après chaque action a dans un état s) mais il ne la stocke pas
car il ne possède pas le tableau. Ce dernier est stocké dans la cellule et c’est l’agent environnement qui s’en charge.
L’agent chasseur calcule la valeur Q (après chaque action a dans un état s) mais il ne la stocke pas
car il ne possède pas le tableau. Ce dernier est stocké dans la cellule et c’est l’agent environnement qui s’en charge.
La communication: est assurée par la classe WumpusACLMessage, qui hérite de la classe
ACLMessage de Jade, et la classe Perception. Un message est composé de deux entités, l’enveloppe
ou le type du message qui est un objet WumpusACLMessage et son contenu qui est un objet
Perception. Un objet Perception est composé d’un objet Cell et du résultat de l’action effectuée
(gagné, mort, Wumpus tué, action non disponible, succée).
L’interface graphique: se crée à partir des deux classes CellGui et GridGui. La classe CellGui est
le miroir de la classe Cell, elle s’occupe de la représentation graphique des objets et de la mise à
jour après chaque changement des états de l’environnement. La classe GridGui est une matrice de
CellGui.
Après une action, le changement d’un état de la grille ne nécessite que le rafraîchissement de la
cellule correspondante.
2.2 Les interactions
L’interaction entre l’agent chasseur et l’agent environnement se fait par envoi de messages. L’agent
chasseur initie la conversation en demandant sa position à l’agent environnement. Ce dernier, ayant
un comportement réactif, lui envoie sa position sous forme de perception.
En se basant sur la perception reçue, il demande à l’environnement d’effectuer une action.
L’environnement exécute l’action demandée (tirer ou se déplacer) et à son tour lui envoie le résultat
de l’action. Selon le résultat de l’action, la récompense reçue, le chasseur calcule la valeur Q et
envoie une demande de mise à jour du tableau Q-learning.
2.3 Apprentissage
Mono-agent: Dans un environnement stable et en se basant sur notre méthode d’implémentation,
nous avons remarqué que l’apprentissage évolue d’une manière très rapide. Sur une grille de 25
cases contenant quatre trous, le chasseur termine la phase d’exploration de la grille en un nombre
minimal d’itérations (20). Ce qui lui permet de passer à l’exploitation de ses connaissances, tuer le
Wumpus et remporter le trésor à tous les coups, en suivant le même chemin résultant de la politique
optimale calculée pendant la phase d’exploration.
Multi-agents: en conservant les mêmes données que dans le cas mono-agent (notre méthode
appliquée dans un environnement stable) l’apprentissage ne pose pas les problèmes de convergence
connus avec l’algorithme de Q-learning, parce que les agents partagent la connaissance. Le tableau
de Q-learning d’un état s est rempli par tous les agents qui le visite. Etant donné que la convergence
de l’algorithme est fortement liée au taux de remplissage du tableau Q, l’augmentation du nombre
d’agents permettra d'accélérer le remplissage des tableaux et par conséquent de réduire le nombre
d’itérations.
Conclusion
Notre méthode d’implémentation a été conçue spécialement pour un système multi-agents. le choix
d’encapsuler toutes les structures dans un objet cellule était dans le but de rendre l’apprentissage
disponibles à tous les agents à tout moment. Nous nous sommes inspirées du système routier qui
nous permet de partager les mêmes informations, disponibles sous forme de panneaux, elles nous
indiquent les directions et nous permettent de calculer notre chemin. C’est ce que nous faisons dans
notre programme, nous mettons des balises dans chaque cellule pour guider les agents.
En plus notre solution utilise peu de ressources grâce à l’utilisation d’un seul tableau simple de Q-
learning partagé par tous les agents.