Ce mémoire décrit la conception et l'implémentation d'une équipe de
robots footballeurs simulés. Cette simulation est réalisée par un
système multi-agents dans lequel chaque agent modélise un robot
footballeur. Son implémentation tient compte des problématiques du
milieu (fortement dynamique et bruité) dans lequel les agents
évoluent. Elle fournit de plus un mécanisme pour contrôler les
erreurs dans l'exécution des plans des agents, ainsi qu'un mécanisme
de visualisation des actions en cours et un mécanisme
de modélisation par hypothèses du comportement des coéquipiers.
Notre équipe est basée sur l'implémentation de l'équipe
CMUnited 2000 (CMU-2000) décrite dans
[#!riley-2000!#,#!stone-1998!#,#!stone-1999!#]. L'équipe CMU-2000 est
développée à l'université
Carnegie Mellon et fût vainqueur des compétitions de 1998
et de 1999. Nous avons utilisé les couches basses (couche et
protocole réseau, analyse des informations sensorielles, effecteurs
bas niveau, exécution temporelle asynchrone, etc.) de CMU-2000.
L'activité comportementale de nos agents est basée sur l'exécution de plans,
représentés par autant d'instances différentes qu'il existe de plans
en cours. Le choix actuel de l'exécution d'un plan est laissé à
l'ordonnanceur des tâches qui exécute la plus prioritaire du cycle en
cours. Ainsi, l'ordonnancement des tâches est le mécanisme qui permet
de passer de l'exécution d'une tâche à une autre, ce qui produit un
mécanisme multi-tâches non préemptif. Un mécanisme plus fin serait
l'affectation de quantificateurs de priorité aux différentes tâches.
Un algorithme de répartition de ressources proche
de celui des ordonnanceurs de systèmes d'exploitation multi-tâches préemptifs
permettrait une réelle exécution concurrente des tâches en cours.
De même, l'extension du mécanisme des plans serait une chose tout à
fait souhaitable. Notamment, les conditions d'invalidation actuelles
sont communes à toutes les instances, ce qui pourrait être modifié
au profit de la définition de conditions d'invalidation propres à chaque instance.
Ainsi, un agent pourrait déclencher un plan de type « aller chercher
la balle » sur la foi de l'analyse des intentions d'un autre agent et
abandonner ce plan lorsqu'il se rend compte que les intentions de cet
agent ne sont pas ce qu'il a évalué, bien que l'état du monde rende
possible l'exécution du plan.
Les activités de visualisation de l'activité des agents implémentés
est assurée par une couche de primitives graphiques symboliques, qui
permettent de visualiser et de suivre l'évolution d'un symbole de
la mémoire de l'agent. Il est de la responsabilité des plans en cours de
décider des symboles à afficher via la couche de primitives
graphiques. On peut imaginer l'extension de ce mécanisme: la
conception de plans de pure visualisation permettraient à l'opérateur
de visualiser des structures de données arbitraires. Nous comptons de
plus développer des périphériques de visualisation supplémentaires,
notamment un affichage PostScript et un affichage en trois dimensions
utilisant OpenGL.
Nous proposons une méthode de modélisation des agents de notre système
qui se baserait sur l'adoption de la même modélisation
pour les agents de son système que pour l'architecture interne de
l'agent. En effet, le
système mis en place souffre de la séparation de l'heuristique
d'analyse comportementale et de la fonction comportementale réelle.
Ceci rend difficile l'analyse du comportement des agents du système,
puisque cette dernière se base sur une évaluation externe au processus
comportemental. Nous proposons la mise en
place d'un mécanisme où l'agent « réel » (l'agent exécuté par un
processus UNIX et communiquant avec le serveur de la RoboCup) simule par
des structures identiques à la sienne les autres agents du système et
les exécute en parallèle à sa propre exécution. L'agent réel
s'interfacerait avec les agents simulés par des canaux de
communication semblables et un protocole identique à celui utilisé
pour communiquer avec le serveur. Il se chargerait d'envoyer des
informations sensorielles aux agents simulés en se basant sur ses
croyances propres.
Ainsi, l'agent réel simulerait par ce biais le comportement de ses
partenaires en utilisant les heuristiques même de leur comportement
réel. Les actions des agents simulés seraient perçues via
leurs effecteurs et permettraient à l'agent réel de déterminer les
actions probables de ses coéquipiers et adversaires en se basant sur
les heuristiques et la représentation mêmes de leur exécution. La
communication entre de tels agents n'étant pas soumise à des
contraintes de bande passante, elle pourrait se faire ainsi de manière
privilégiée et pourrait leur permettre de s'échanger des plans et
d'estimer ce à quoi les autres sont occupés.
Cette technique se base cependant sur l'hypothèse que la modélisation
du comportement utilisée est bien identique aux
fonctions comportementales des agents simulés. Ainsi, la simulation
des adversaires par cette technique serait approximative car elle se
baserait sur des prédicats comportementaux différents. Cependant, une
telle solution permettrait d'approximer la modélisation du
comportement des adversaires en se basant sur l'hypothèse que les
primitives comportementales (aller vers la balle, envoyer la balle
dans les buts, etc.) des adversaires sont proches des primitives
comportementales de notre équipe.
Une autre problématique est l'aspect récursif des simulations
d'agents. Si nous prenons l'hypothèse que l'agent et l'agent
se simulent mutuellement, simulera le comportement de sans
tenir compte du fait que son propre comportement est simulé et estimé
par , qui agit donc en conséquence (le même mécanisme est valable
pour l'agent ). Il serait donc nécessaire pour une réelle
coordination de simuler récursivement les modèles des différents
agents. La problématique de ce type de solution est la rapide
explosion combinatoire des modèles simulés. Ce problème pourrait être
résolu par le partage de modèles ou par un mécanisme de consultation
d'états mentaux privilégiés entre les agents simulés.
Le modèle utilisé pour implémenter les agents de notre système laisse
de plus volontairement de côté les problématiques de la communication
dans un milieu bruité et non fiable comme celui de la simulation de la
RoboCup au profit d'une estimation comportementale silencieuse et donc
d'une synchronisation implicite. Le coût de l'attente d'une
information ou d'une réaction de la communication entre agents
pourrait être limité en mettant en place un paradigme de communication
informative à « sens unique. » C'est-à-dire un paradigme dont les messages émis
n'attendraient pas de réponse mais auraient pour but d'informer les
coéquipiers. Par exemple, un agent décidera d'annoncer le
déclenchement d'une action importante pour les buts globaux de
l'équipe (heuristique rigide) ou il décidera de communiquer à un agent
une information invalidant le plan en cours d'exécution.
L'utilisation du coach et de la simulation des agents de l'équipe au
sein de l'agent coach réel permettrait de tester un tel paradigme de
communication.
Nous comptons explorer les possibilités de Scheme dans la modélisation
des actes de langage. Les performatifs du langage pourraient être
facilement représentés par des procédures Scheme: en effet, le
mécanisme de l'analyse et le traitement d'un performatif est très
similaire à celui de l'analyse et de l'exécution d'une procédure
fonctionnelle. Ainsi, le protocole de communication développé à
partir de Scheme pourrait bénéficier de structures de données
complexes et des facilités fonctionnelles d'un langage fonctionnel.
De même, l'utilisation de Scheme permettrait de factoriser les
fonctionnalités du moteur Scheme implémenté dans nos agents tout en
simplifiant l'intégration d'informations au sein des instances de nos
agents.
Nous avons été confrontés à la problématique des actions complexes en milieu bruité, notamment pour les « effecteurs » non atomiques (tourner la balle, dribbler avec elle jusqu'à un point, etc.). Actuellement, ces effecteurs sont écrits de manière heuristique. Nous envisageons une réécriture de ces effecteurs de manière non statique en nous basant sur des algorithmes d'apprentissage automatique, par exemple en utilisant les algorithmes génétiques. Cette approche a par exemple déjà été étudiée et utilisée avec succès dans [#!andre-1998!#,#!stone-1998!#].