Plates-formes des systèmes multi-agents

Systèmes multi-agents

Professeur : J-P. SANSONNET

Préparé par : Said SAIDNA

Master recherche en Informatique – Université Paris XI - Orsay


Sommaire :

1.     Introduction. 1   

2.     La norme FIPA pour les systèmes multi-agents. 1

3.     L'environnement JADE. 2

4.     L'architecture de la plate-forme multi-agents. 3

5.     Le modèle d'agents. 4

6.     Conclusion. 6

 


1.   Introduction.                                 

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.

 

Haut.


2.   La norme FIPA pour les systèmes multi-agents.                      

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.


3.   L'environnement JADE.

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.

 

Haut.


4.   L'architecture de la plate-forme multi-agents.

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.

 

Haut.


5.   Le modèle d'agents.

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.

Haut.


6.   Conclusion.

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.