Plates-formes
des systèmes multi-agents
Professeur : J-P. SANSONNET
Préparé par : Said SAIDNA
Master recherche en Informatique – Université Paris XI
- Orsay
2. La norme FIPA pour les systèmes multi-agents.
4. L'architecture de la plate-forme multi-agents.
JADE (Java Agent Development Framework ) est une
plate-forme multi-agents développée en Java par CSELT qui a comme but la
construction des systèmes multi-agents et la réalisation d'applications
conformes à la norme FIPA. JADE comprend deux
composantes de base : une plate-forme agents compatible FIPA et un paquet logiciel
pour le développement des agents Java.
Les premiers documents de
spécification de la norme FIPA, appelés spécifications FIPA97, établissent les
règles normatives qui permettent à une société d'agents d'inter-opérer.
Tout d'abord, les documents FIPA décrivent le modèle de référence d'une
plate-forme multi-agents (figure 1) où ils identifient les rôles de quelques
agents clés nécessaires pour la gestion de la plate-forme, et spécifient le
contenu du langage de gestion des agents et l'ontologie du langage.

Figure 1: Services
fournis par la Plate-forme FIPA.
Dans la figure 1, on voit qu'il y
a trois rôles principaux dans une plate-forme multi-agents FIPA (en plus des
rôles optionnels).
·
Le Système de Gestion d'Agents
(AMS) est l'agent qui exerce le contrôle de supervision sur l'accès à et
l'usage de la plate-forme ; il est responsable de l'authentification des agents
résidents et du contrôle d'enregistrements.
·
Le Canal de Communication entre
Agents (ACC) est l'agent qui fournit la route pour les interactions de base
entre les agents dans et hors de la plate-forme ; c'est la méthode de
communication implicite qui offre un service fiable et précis pour le routage
des messages ; il doit aussi être compatible avec le protocole IIOP pour
l'interopérabilité entre les différentes plates-formes multi-agents.
·
Le Facilitateur d'Annuaire (DF)
est l'agent qui fournit un service de pages jaunes à la plate-forme
multi-agents. Il faut remarquer qu'il n'y a aucune restriction sur la
technologie utilisée pour l'implémentation de la plate-forme : émail, basé sur
CORBA, applications multi-threads Java, etc.
· Le standard spécifie aussi le Langage de Communication d'Agents (ACL). La communication des agents est basée sur l'envoi de messages. Le langage FIPA ACL est le langage standard des messages et impose le codage, la sémantique et la pragmatique des messages. La norme n'impose pas de mécanisme spécifique pour le transport interne de messages. Plutôt, puisque les agents différents pourraient s'exécuter sur des plates-formes différentes et utiliser technologies différentes d'interconnexion, FIPA spécifie que les messages transportés entre les plates-formes devraient être codés sous forme textuelle.
Haut.
Jade est un logiciel libre
distribué par Tilab en open source. Jade a pour but
de simplifier le développement des systèmes multi-agents tout en fournissant un
ensemble complet de services et d'agents conformes aux spécifications FIPA
(voir ci dessus).
La plate-forme d'agent de Jade
inclut tous les composants obligatoires qui contrôlent un SMA.
Ces composants sont le Canal de Communication entre Agents (ACL), le Système de
Gestion d'Agents (AMS) et le Facilitateur d'Annuaire (DF). Toute la
communication entre agents est exécutée par messages FIPA ACL.
Ces trois agents sont automatiquement créés et activés quand la plate-forme est
activée.
La plate-forme d'agent peut être
répartie sur plusieurs serveurs. Une seule application Java, et donc une seule
machine virtuelle de Java (JVM), est exécutée sur
chaque serveur. Chaque JVM est un conteneur d'agents qui fournit un
environnement complet pour l'exécution d'agent et permet à plusieurs agents de
s'exécuter en parallèle sur le même serveur.
L’architecture de communication
offre la transmission de messages flexibles et efficaces. JADE crée et contrôle
une file d'attente des messages entrants pour chaque agent. Le modèle global de
communication FIPA a été mis en application. Ses composants ont été distingués
clairement et ont été entièrement intégrés: protocoles d'interaction, ACL,
langues, schémas de codage, protocoles de transport ...
Le mécanisme de transport
fonctionne comme un caméléon. il s'adapte à chaque
situation, en choisissant de manière transparente le meilleur protocole
disponible. Java RMI, http, et IIOP sont actuellement employés, mais la plupart
des protocoles d'interaction définis par FIPA sont déjà disponibles et
peuvent être instanciés.
Concrètement, un thread est lancé pour chaque agent, mais ces derniers
doivent souvent exécuter des taches parallèles. Avec la solution du multithreading offerte directement par Java, Jade supporte
également la gestion des comportements coopératifs. Le run-time inclut également quelques fonctions complexes
prêtes l'emploi pour les taches les plus communes dans la programmation agent,
comme des protocoles d'interaction de FIPA. Jade
offre entre autre un certain JessBehaviour qui permet
la pleine intégration dans JESS, où Jade fournit le GUI de l'agent et garantit
la conformité de FIPA, alors que JESS est le moteur qui exécute tout le
raisonnement nécessaire. On a donc la possibilité de créer des agents
intelligents en délégant le raisonnement à d'autres outils.
Un GUI de DF (directory facilitator) peut être lancé du menu outil RMA. Le DF est un composant qui fait office d'annuaire.
C'est un service de « pages jaunes » qui permet de mettre en
relations les agents avec leurs compétences. Un agent peut enregistrer ses
compétences dans le DF ou interroger le DF pour connaître les compétences
proposées par les autres agents. Le GUI permet d'associer ces DF afin de créer
plusieurs niveaux de domaines. Le GUI peut accéder de la même manière à
n'importe quel DF me situé sur une plate forme distante d'agents non Jade.
Il existe dans Jade un certain
nombre d'outils graphiques qui soutiennent la phase de correction,
habituellement très complexe dans les systèmes répartis.
L'agent Dummy
est un outil simple et très utile pour visualiser des échanges de messages
entre agents. L'agent Dummy facilite la validation
d'un agent avant l'intégration dans le SMA et facilite le debugage
au cas où un agent échouerait. L'interface graphique fournit un support pour
éditer, composer et regarder des messages des agents, et, par la suite, de
sauver ou charger des messages sur le disque dur.
L'agent Sniffer permet de suivre
des messages échangés dans une plate-forme d'agent Jade. Quand l'utilisateur
décide de « renifler » un agent, ou un groupe d'agents, chaque
message dirigé vers ou venant de cet agent, ou du groupe, est dépisté et montré
dans la fenêtre de sniffer. L’utilisateur peut alors regarder, sauvegarder,
charger chaque message pour une analyse postérieure.
Une plate-forme multi-agents JADE
est composée de plusieurs réceptacles d'agents selon la figure 2. La
distribution de ces réceptacles à travers un réseau d'ordinateurs est permise,
à condition que la communication RMI entre leurs hôtes soit conservée. Un
réceptacle léger spécial est implémenté pour l'exécution des agents dans un
navigateur Web. Chaque réceptacle d'agents est un objet serveur RMI qui gère
localement un ensemble d'agents. Il règle le cycle de vie des agents en les
créant, les suspendant, les reprenant et les détruisant. En plus, il traite
tous les aspects de la communication : répartition des messages ACL reçus,
routage des messages selon le champ de destination (receiver)
et dépôt des messages dans les files de messages privées des agents. Pour les
messages vers l'extérieur, le réceptacle d'agents maintient assez d'information
pour chercher l'emplacement de l'agent récepteur et pour choisir une méthode de
transport convenable pour expédier le message ACL.

Figure 2: Architecture
logicielle de la plate-forme multi-agents JADE
La plate-forme offre une interface graphique utilisateur (GUI) pour la gestion à distance qui permet de contrôler et superviser les états des agents, par exemple arrêter et remettre en marche un agent. L'interface graphique permet aussi de créer et de commencer l'exécution d'un agent sur un hôte éloigné, à condition qu'un réceptacle d'agents s'exécute déjà sur cet hôte. L'interface elle-même a été implémentée comme un agent, appelé RMA (Remote Monitoring Agent). Toute la communication entre les agents et l'interface (GUI) et toute la communication entre cette interface et l'AMS est faite par ACL via une extension ad hoc de l'ontologie des agents de gestion FIPA.
On a vu qu'une propriété
importante d'un agent est son autonomie : un agent ne doit pas se limiter à
réagir aux événements externes, mais il doit être aussi capable de prendre
l'initiative de nouveaux actes communicatifs d'une façon autonome. Ceci exige que
chaque agent ait un thread interne de contrôle ;
cependant, un agent peut engager des conversations simultanées multiples, tout
en poursuivant d’autres activités qui n'impliquent pas d’échanges de messages.
JADE utilise l'abstraction Comportement
pour modéliser les tâches qu'un agent peut exécuter et les agents instancient leurs comportements selon leurs besoins et
leurs capacités. De point de vue de la programmation concurrente, un agent est
un objet actif, ayant un thread de contrôle. JADE
utilise un modèle de programmation concurrente "un thread-par-agent"
au lieu d'un modèle "un thread-par-comportement"
pour éviter une augmentation du nombre de threads
d'exécution exigés sur la plate-forme d'agents. Ceci signifie que, pendant que
les agents différents s'exécutent dans un environnement multi- threads de préemption, deux comportements d'un même agent
sont planifiés coopérativement.
En dehors de la préemption, les
comportements travaillent tous comme des threads
d'exécution coopératifs, mais il n'y a pas de pile qui ait besoin d'être
sauvée. Un planificateur (scheduler), exécuté par la
classe de base Agent et caché au programmeur, exécute une politique de
"round-robin" de non-préemption
entre tous les comportements disponibles dans la file des processus prêts.
Ainsi, il permet l'exécution d'une classe dérivée de la classe Comportement
jusqu'à ce qu'elle abandonne le contrôle d'exécution par elle-même. Si la tâche
qui a le contrôle n'est pas encore finie, elle sera re-planifiée pendant le
prochain tour du round-robin à moins qu'elle ne soit
pas bloquée ; en fait, un comportement peut se bloquer lui-même, par exemple
pendant qu'il attend des messages, pour éviter le gaspillage de temps de CPU,
réalisant ainsi un comportement d'attente occupée.
Donc, le développeur d'agents doit étendre la classe Agent et implémenter les tâches spécifiques de l'agent par une ou plusieurs classes Comportement, les instancier et les ajouter à l'agent. La classe Agent représente une super-classe commune pour tous les agents définis par l'utilisateur. Du point de vue du programmeur, la conséquence est qu'un agent JADE est simplement une classe Java qui étend la classe de base Agent. Cela permet à l'agent d'hériter un comportement fondamental caché (qui traite toutes les tâches liées à la plate-forme, telles que l'enregistrement, la configuration, la gestion à distance, etc.), et un ensemble de méthodes qui peuvent être appelées pour implémenter les tâches spécifiques à l'agent, par exemple envoi des messages, utilisation des protocoles d'interaction standard, enregistrement sur plusieurs domaines, etc. De plus, il y a encore deux méthodes qui sont héritées pour gérer la file de comportements d'agents : addBehaviour (Behaviour) et removeBehaviour (Behaviour). JADE inclut aussi quelques comportements prêts à être utilisés pour les tâches les plus communes dans la programmation des agents, tels que l'envoi et la réception des messages et la décomposition des tâches complexes en des agrégations de tâches plus simples. Entre autres, JADE offre aussi une classe JessBehaviour qui permet l'intégration avec le système expert JESS (Java Expert System Shell), où JADE fournit le noyau de l'agent et garantit (autant que possible) la conformité avec les normes FIPA, alors que JESS est le moteur d'inférence de l'agent qui exécute le raisonnement nécessaire pour la résolution du problème.
Le développement de Jade continue
toujours. D'autres améliorations, perfectionnements, et réalisations ont été
projetés, la plupart d'entre eux en collaboration avec les utilisateurs
intéressés da la communauté de Jade.