MadKit
Précédent Jade Haut Introduction Suivant

La plateforme MadKit

Systèmes Multi-Agents

Professeur : J-P.Sansonnet

Master Recherche Informatique * LRI * Université Paris Sud XI

Etudiant : BOULARIAS Abdeslam


Table des Matières
1.Introduction
2.Le modèle Agent/Rôle/Groupe:
                    2.1 Agent
                    2.2 Group
                    2.3 Rôle
3. Architecture de MadKit:
                    3.1 Le micro-noyau des agents
                    3.2 Agentification:
                            3.2.1 Structure et fonctions d'un agent:
                                    3.2.1.1 Les fonctionnalités
                                    3.2.1.2 Les messages
                                    3.2.1.3 Les threads et le moteur synchrone
                            3.2.2 Agentification des services
                    3.3 Architecture des composants graphiques
4. Applications
5. Conclusion
Références bibliographiques


1.Introduction:

MadKit (Multi-Agents Developpement Kit) est une plateforme multi-agents modulaire et scalable écrite en Java et conçue selon le modèle d'organisation Alaadin AGR (Agent/Group/Role): des agents sont situés dans les groupes et jouent des rôles. MadKit est développée en 1996 par Olivier GETKNECHT et Michel FERBER au Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier (LIRMM) de l'Université Montpellier II. Il s'agit d'une plate-forme libre pour l'utilisation dans l'éducation. Un moteur d'exécution est utilisé dans MadKit où chaque agent est construit en partant d'un micro-noyau. Chaque agent a un rôle et peut appartenir à un groupe. MadKit est doté d'un environnement de développement graphique qui permet facilement la construction des applications.

2.Le modèle Agent/Rôle/Groupe:

L'architecture de la plateforme MadKit a été construite selon le modèle Agent/Rôle/Groupe, développé dans le contexte du projet Aalaadan. MadKit implémente et utilise ce modèle pour ses différentes taches de développement des agents. Dans ce modèle, les concepts organisationnels tels que: les groupes, les rôles, les structures, les dépendances, etc. sont considérés comme les briques de base qui permettront le développement des systèmes scalables et hétérogènes.

Le diagramme suivant montrent les trois concepts de base de Aalaadin : les agents, les rôles et les groupes.

Le modèle Aalaadin.

 

2.1 Agent

Le modèle n'impose aucune contrainte sur l'architecture interne des agents. Un agent est désigné comme étant une entité active communicantes qui joue des rôles dans des groupes. Cette définition est générale afin de permettre aux développeurs de spécifier le modèle le plus adapté aux agents relatif à leur application (l'architecture interne par exemple).

2.2 Group

Les groupes sont les ensembles atomiques d'agrégation des agents, chaque agent fait partie d'un ou plusieurs groupes. Dans sa plus simple forme, un groupe sert seulement à étiqueter des agents. Dans une forme plus développée, et en conjonction avec les rôles, un groupe peut représenter n'importe quel système multi-agents. Les groupes peuvent être en chevauchement, car un agent peut être membre de n groupes en même temps.

2.3 Rôle

Un rôle est une représentation abstraite de la fonction, du service ou de l'identification d'un agent à l'intérieur d'un groupe. Chaque agent peut jouer plusieurs rôles dans le même groupe, un rôle peut être attribué à un agent à la demande de ce dernier.

La propriété de chevauchement des groups nous permet de concevoir un monde plat ou les agents ne sont pas organisés d'une manière atomique et n'appartiennent pas à des modèles et structures rigides.

Dans chaque groupe, un agent particulier est désigné pour être le représentant de ce groupe lors des contacts avec les autres groupes, il est considéré comme le porte-parole de tous les agents membres de ce groups.

3. Architecture de MadKit:

L'architecture de MadKit est constituée des 3 principaux composants: le micro-noyau, l'agentification des services et le modèle des composants graphique.

MadKit est constitué d'un ensemble de paktages de classes JAVA qui implémentent le noyau agents, un environnement de développement graphique ainsi que des modèles standard des agents.

Architecture de MadKit.

 

La philosophie de MadKit est basée sur l'idée d'utiliser le plus possible la plateforme pour ses propres besoins de gestion. Aucun service autre que ceux offerts par le micro-noyau n'est utilisé par les agents. Les groupes des agents ont été proposés dans d'autres plateformes, mais ils manquent de la capacité de gérer des groupes multiples et des rôles différents pour le même agent au sein d'un groupe.

3.1 Le micro-noyau des agents 

Le micro-noyau de MadKit est petit (moins de 40 kb) et optimisé, il offre les opérations de base qui permettent le déploiement des agents.

Le noyau de MadKit a pour charge les taches suivantes :

Le control des groupes et des rôles:

Du moment ou la plupart des possibilités d'extension et d'interopérabilité sont basées sur la couche organisationnelle, la manipulation des groupes et des rôles est assuré aux niveau le plus bas de noyau afin de fournir cette fonctionnalité à n'importe quel agent. Le noyau maintient des informations sur les membres des groupes ainsi que les rôles joués dans chaque groupe. Ces informations lui permettent de faire des contrôles et vérifier le validité des demandes des agents.

La gestion de cycle de vie des agents:

La noyau se charge aussi de la création et la destruction des agents, et maintient des tables de référence de tous les agents lancés, il assigne une adresse globale à chaque agent, constituée de l'adresse de noyau et l'adresse de l'agent dans le noyau local. On peut noter ici que cette adresse peut être utilisé comme le standard de l'adressage des agents.

Passage des messages locaux:

Le passage des messages entres les agents locaux est effectué par le noyau, l'envoie d'un message est réalisé par la copie de ce message dans le tampon de l'agent récepteur.

Le noyau est doté d'un agent particulier, appelé Agent Noyau, chargé de gérer les opérations de noyau, cet agent est lancé au démarrage.

3.2 Agentification:

3.2.1 Structure et fonctions d'un agent:

La classe de base d'un agent MadKit (AbstractAgent), définit quelques fonctionnalités de base pouvant être nécessaires dans les modèles classiques.

3.2.1.1 Les fonctionnalités: 

On cite ici les fonctionnalités associées aux agents:

Cycle de vie:

L'agent dispose de quatre états (création, activation, exécution et destruction) et a la possibilité de démarrer d'autres agents sur le noyau local (et les désactiver par la suite). Aucun mécanisme d'exécution concret n'est défini à ce niveau.

Communication:

Elle est implémentée sous forme de passage de messages asynchrones, une communication peut être entre deux agents ou une diffusion à tous les teneurs d'un rôle dans un groupe.

Organisation:

Les agents sont dotés de primitives permettant de reconnaître leurs groupes et rôles et de demander des rôles ou se retirer des groupes.

Outils:

La classe de base des agents permet à l'agent de manipuler une éventuelle interface graphique, gérer le flot d'entré/sortie, etc.

3.2.1.2 Les messages:

Les messages sont dérivés d'une classe initiale qui ne définit que la notion d'émetteur et de destinataire. Certains messages de base sont fournis avec la possibilité de les étendre à tout protocole d'interaction.

3.2.1.3 Les threads et le moteur synchrone:

Une classe de base se charge d'associer un thread d'exécution à chaque agent, ça facilite l'implémentation des modèles classiques des agents autonomes. Mais dans certaines types de systèmes, ceci n'est pas possible car des milliers d'agents sont lancées. La solution à ce problème est d'utiliser des agents "synchrones" observés et gérés par des agents observateurs.

3.2.2 Agentification des services:

Contrairement aux autres plateformes, MadKit utilise les agents pour ses taches de gestion système: tel que les aspects de la sécurité, le passage des messages, l'émigration des agents. Ces taches sont définis comme des rôles dans certains groupes spécifiés. Cela permet un haut niveau de personnalisation, des services peuvent êtres rajoutés ou supprimés facilement. Un autre avantage de l'agentification des services est le faite qu'un agent commence au départ avec un certain nombre de rôles, en suite, au fur et à mesure que l'application grandisse, il délègue dynamiquement à de nouveaux agents certains de ses rôles pour réduire sa charge. Cette distribution dynamique des services résulte une montée en puissance de système.

3.3 Architecture des composants graphiques:

Madkit est doté d'un modèle graphique basé sur des composants graphiques indépendants, utilisant la spécification JAVA Beans dans la version standard. Chaque agent est responsable de ses propres interfaces graphiques.

Une vue générale de l'interface MadKit avec quelques agents lancés

 

Un noyau graphique se charge de lancer les interfaces et les gérer dans une interface globale. Etant donné que ce noyau graphique est un module logiciel indépendant, il peut être réalisé comme un agent pour une meilleure flexibilité, permettant le control des interfaces des autres agents par un agent MadKit régulière qui peut participer à n'importe quel scénario d'interaction.

4. Applications:

MadKit a été beaucoup utilisée par des différentes équipes de recherche durant ces dernières années dans le cadre de projets couvrant une large catégorie d'applications, de la simulation des architectures hybrides au control des robots sous-marins en passant par l'évaluation des réseaux sociaux et l'étude de control multi-agents des lignes de production.

On peut citer parmi les applications réalisées par MadKit, l'éditeur graphique multi formalismes SEdit qui est un éditeur graphique de formalismes représentés sous forme de graphes (UML, réseaux de Pétri, diagrammes d'interaction...). De point de vue de MadKit, cet éditeur est un ensemble d'agents représentant chacun un formalisme.

Wex est une autre application de MadKit, il a été développé pour la gestion de la connaissance des applications. Il fédère les informations parvenues de diverses sources de données (bases de données, outils de recherche sur le Web ...).

Les agents sont configurés pour représenter les différentes méthodes de recherche et transformation des informations.

5. Conclusion:

MadKit est un ensemble d'outils permettant le développement des agents selon le modèle organisationnel Group/Agent/Rôle, il intègre une grande variété d'architectures d'agents et de modèles de communication.

Références bibliographiques:

http://www.madkit.org/

 

http://www.multiagent.com/

 

GUTKNECHT O. ; FERBER J. ; MICHEL F: MADKIT : Une plate-forme multi-agents générique.

Laboratoire d'Informatique, Robotique et Microélectronique de Montpellier , 2000.

 

GUTKNECHT O. ; FERBER J. ; MICHEL F: Madkit : Une expérience d'architecture de plate-forme multi-agent générique. in JFIADSMA'OO : 8èmes Journées Francophones d'Intelligence Artificielle et Systèmes Multi-Agents , 01/01/2000, pp. 223-236

 

GUTKNECHT O. ; FERBER J: The MadKit agent plateforme architecture. Laboratoire d'Informatique, Robotique et Microélectronique de Montpellier , 2000.

 

MEKRAZ Oualid, METADIER Brice. Simulation routière dans un environnement multi-agents. ENSI CAEN.

 

 

Page réalisée par BOULARIAS Abdeslam