• Aucun résultat trouvé

Développement des agents

Chapitre V : Etude de cas et implémentation

V.3. Outils et aspects techniques de l’implémentation

V.3.1. Développement des agents

Les plateformes sont un environnement permettant de gérer le cycle de vie des agents et dans lequel les agents ont accès à certains services. Elle constitue un réceptacle au sein duquel les agents peuvent évoluer. De ce fait l’utilisation d’une plate-forme facilite le développement de notre système SMA.

Il existe un grand nombre de systèmes multi-agents dédiés à différents modèles d’agent. De ce fait, plusieurs outils ont été développés pour répondre aux besoins liés à la programmation

orientée agent [178]. Ces outils peuvent prendre différentes formes, allant d’outils d’ordre méthodologique, à des outils de développement, ou des supports d’exécution.

Nous en avons examiné plusieurs, parmi les plus récents, en fonction de leur popularité et de leur pertinence : Madkit [176], AgentBuilder [177], Zeus [174], Jack [173] et Jade [175]. En fonction des propriétés de notre architecture, nous avons opté pour l’utilisation de la plate- forme Jade version 3.5. Ce choix a été motivé par les raisons suivantes :

 Jade est fondée sur les spécifications FIPA. Ces spécifications ont été élaborées afin de faciliter la communication entre différentes plateformes multi agents hétérogènes.

 Jade peut gérer un système multi agents dont les agents sont répartis sur un réseau informatique. Installée sur différentes machines, elle permet en effet à des agents répartis de communiquer d’une manière transparente à travers le réseau.

 Jade possède des outils simplifiant la gestion des erreurs.

 Jade est facilement intégrable avec les environnements du développement comme JBuiler 7.

 Jade permet de suivre le cycle de vie des agents et leurs interactions et le code généré par Jade est facilement adapté aux utilisations spécifiques aux agents.

V.3.1.1. Description de la plate-forme Jade

Dans ce qui suit nous décrivons les composantes de la plate-forme Jade et l’agent Jade. V.3.1.1.1. Composantes de la plate-forme

Jade (Java Agent Development Framework) [179], [185] est une plate-forme multi-agents développée en entier en Java. Elle a comme but la construction des systèmes multi-agents et la réalisation d'applications conformes aux spécifications FIPA.

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.

La plate-forme d'agent de Jade inclut tous les composants obligatoires qui contrôlent un SMA. Ces composants sont l’AMS (Agent Management System), l’ACC (Agent Communication Chanel) et le DF (Director facilitatory). Toute la communication entre agents est exécutée par messages FIPA ACL. L’AMS fournit un service pages blanches et un service de gestion du cycle de vie (supervise l’enregistrement des agents, leur authentification, leur accès et leur utilisation dans le système). Le DF est l’agent qui fournit le service de pages jaunes par défaut. L’ACC gère la communication entre les agents. La plate-forme d'agent fournit une interface graphique utilisateur (GUI) pour la gestion à distance des agents RMA (Remote Management Agent), surveillant le statut des agents, permettant par exemple d’arrêter et de remettre en marche des agents. Le GUI permet également de créer et de lancer un agent sur un serveur à distance, à condition qu’un conteneur d'agent fonctionne déjà. Le GUI permet de commander d'autres plates-formes d'agent à distance.

Jade fournit quelques outils pour simplifier l’administration de la plate-forme : L'agent Dummy est un outil simple et très utile pour visualiser des échanges de messages entre agents,

et donne une interface graphique pour l’édition, l’écriture et l’envoi des messages ACL vers les agents, et de recevoir et lire les messages des autres agents, et éventuellement sauvegarder ces messages. L'agent Sniffer permet de suivre des messages échangés pendant qu’ils sont traités et les afficher sous forme de diagrammes de séquence. L'agent Introspector permet de surveiller et de commander le cycle de vie d'un agent courant ainsi que ses messages échangés (provenant de la file d'attente des messages envoyés et reçus).

Dans le but de simplifier la transmission, les messages internes (sur la même plate-forme) sont transférés et codés comme des objets Java et non comme des chaînes de caractères. Quand l'expéditeur ou le récepteur n'appartient pas à la même plate-forme, le message est automatiquement converti au format de chaîne de caractères spécifiés par la FIPA. De cette façon, la conversion est cachée au programmeur d'agents, qui a seulement besoin de traiter la classe d'objets Java. Concernant l’implémentation des protocoles d’interaction, Jade facilite la tâche et offre une bibliothèque de protocoles d’interaction FIPA prêts à l’utilisation.

V.3.1.1.1. L’agent Jade

Un agent selon Jade est conforme au standard FIPA, possède un cycle de vie, possède toujours un état (AP_INITIATED, AP_ACTIVE, AP_DELETE, etc.), possède un ou plusieurs comportements (Behaviours) et un comportement peut être de plusieurs types simples (oneShot, cyclic) ou composites (Finite State Machine, parallel, sequentiel).

Un agent est identifié de manière globale par un nom unique (l'AgentIdentifier ou AID). Chaque agent peut joindre ou quitter librement la plateforme et rentrer en contact avec chacun des autres agents. Il communique avec des messages de type ACL et rend des services.

La création d'un agent (Cf. figure V.1) Jade est aussi simple que la définition d'une classe qui hérite la classe Jade.core.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. Il faut implémenter la méthode setup(). Cette dernière est destinée d'inclure les initialisations d'un agent. Le comportement réel d’un agent est représenté comme des comportements (behaviours). Le squelette du code d’un agent Jade est le suivant :

import jade.core.*;

public class MonAgent extends Agent { // declaration des variables si nécessaire protected void setup {

// to do: add necessary start-up code

addBehaviour(new Comportement(this)); }