La plate-forme DIMA Master 1 IMA COLI23 - Université de La Rochelle
DIMA Bref aperçu
Qu'est-ce? Acronyme de «Développement et Implémentation de Systèmes Multi-Agents» Initié par Zahia Guessoum et Jean-Pierre Briot OASIS (Objets et Agents pour Systèmes d'information et de Simulation) LIP6 (Laboratoire d'informatique de Paris 6 - Université de Paris 6)
Qu'est-ce? (2) Environnement de développement de systèmes multi-agents Développement : débuté en 1993, dans le cadre de la thèse de Z. Guessoum : première version en SmallTalk-80 Porté à présent vers Java. poursuivi dans le cadre d'autres thèses (H. Ramdani, T. Jaraya...) Utilisé dans des travaux de recherche (L3I...)
A quoi çà sert? Applications diverses : Simulation (économique, éco-systèmes...) Résolution de problèmes Systèmes de contrôle temps-réel. Cf exemples développés Décrits dans le document «examples.pdf» Implémentés dans le package Examples de l'api DIMA.
DIMA Version actuelle
Environnement de développement Ensemble de librairies : API Java Briques de base pour construire des modèles d'agents divers Grande variété de paradigmes (par exemple automate, règle, etc...) Implémentation des différentes propositions conceptuelles introduites par la communauté multi-agents (BDI, KQML, ACL, etc.). «FIPA-compliant»
L'agent dans DIMA Agent = entité autonome, pro-active, sociable, adaptative Plusieurs approches pour la conception d'agent Choix dans DIMA = proposer une architecture d'agent modulaire : Un modèle d'agent minimal : noyau minimal Définition d'un ensemble de libraries pour enrichir/raffiner le noyau hérite Noyau Librairies Agent utilise
Schéma d'utilisation de DIMA SMA à réaliser = Code JAVA utilise DIMA = Bibliothèque JAVA Noyau Librairies Est exécuté Machine virtuelle JAVA
Schéma d'utilisation Définit les modèles d'agent SMA à réaliser = Code JAVA utilise DIMA = Bibliothèque JAVA Noyau Librairies Est exécuté Machine virtuelle JAVA
Schéma d'utilisation Définit les modèles d'agent SMA à réaliser = utilise Code JAVA Définit les notions nécessaires pour le fonctionnement des modèles d'agent DIMA = Bibliothèque JAVA Noyau Librairies Est exécuté Machine virtuelle JAVA
Exemple 2 agents A et B qui conversent A dit «bonjour, comment çà va?» B lui répond «salut, bien et toi?»
Exemple Création d'une classe java EntiteExemple public EntiteExemple { public EntiteExemple(){...} } A et B seront des instances de cette classe
Exemple Noyau hérite Librairies Agent utilise A et B doivent communiquer => la classe EntiteExemple = sous-classe de la classe BasicCommunicatingAgent (définie dans le noyau de DIMA) public EntiteExemple extends Gdima.kernel.communicatingAgent.BasicCommunicatingAgent { } public EntiteExemple(){super();...}...
Exemple Noyau hérite Librairies Agent utilise Il faut définir ce que A et B ont à faire : => définition de la notion de boucle de proactivité Définition des processus de perception, décision et action Boucle de pro-activité implémentée dans la méthode step() de chaque classe d'agent
Noyau Exemple hérite Librairies Agent utilise Définition du step() : A et B doivent envoyer et recevoir des messages Pour envoyer : il faut créer un message et le transmettre : utilisation par exemple de la classe pré-définie Gdima.basiccommunicationcomponents.Message Il faut utiliser la méthode BasicCommunicatingAgent.sendMessage(AgentIdentifier agentid, Message am); Pour recevoir : Tester si l'on a un message : utiliser la méthode BasicCommunicatingAgent.hasMail() Récupérer le message à l'aide de par exemple BasicCommunicatingAgent.getFirstMessage()
DIMA Présentation détaillée
Noyau DIMA Noyau hérite Librairies Agent utilise Définition d'un noyau minimal : Ensemble de classes (Gdima.kernel.*) Composant de base = ProactiveComponent Gdima.kernel.ProactiveComponents Une instance de cette classe représente une entité autonome et proactive
Noyau ProactiveComponent hérite Librairies Agent utilise Une instance de cette classe décrit : Le but de l'entité décrit implicitement ou décrit explicitement dans le corps de la méthode isalive() Les comportements de base de l'entité : Séquence d'actions Définies par des méthodes java Le méta-comportement de l'entité : permet à l'agent de contrôler ses comportements et son état interne précisé dans la méthode step()
Noyau DIMA propose... hérite Librairies Agent utilise Différents modèles d'agents : Agents réactifs : décrits par des comportements réactifs Ex : package Gdima.kernel.BasicAgents.* Agents cognitifs : décrits par des comportements cognitifs, Ex : package Gdima.kernel.communicatingAgent.* Agents hybrides : Réactifs et cognitifs Facilite l'adaptation de leur comportement en temps réel à l'évolution de leur univers.
Noyau Librairies hérite Librairies Agent utilise Différentes librairies disponibles : Implémentation de différents paradigmes agent Implémentation d'outils nécessaires pour les différents modèles d'agents Utilisées pour étendre les fonctionnalités d'une entité ProactiveComponent Exemple de la communication Classe BasicCommunicatingAgent (du noyau) Les classes de messages (de base, KQML based ou FIPA-ACL based)
Classes définies pour implémenter l'atn framework DIMA propose... Différents frameworks : Agent hérite utilise Noyau Librairies Correspondent à différents paradigmes pour définir des comportements (ATN-Based, Rule- Based, Case-Based, Classifier-Based) Exemple de l'atn-based framework (illustré sur l'exemple examples.lg.lonedomain.java et examples.lg.loneatnagent.java)
DIMA propose... Noyau hérite Librairies Agent utilise La gestion de la communication : Package basiccommunicationcomponents Package basicfipaaclmessages Package basickqmlmessages La gestion des interactions :... Package INAF2
Méthodologie d'utilisation Dans DIMA, un SMA = {agents} U {objets} Implémentation du SMA = 1)Implémentation du domaine (i.e. {objets}) 2)Implémentation des agents Détaillée en page suivante 3)Initialisation des accointances des agents Accointance = agent connu par un agent 4)Déploiement et activation des agents
Méthodologie Implémentation des agents = pour chaque agent : 1.Définition des comportements de l'agent 2.Implémentation de la classe de l'agent = Utilisation d'une classe pré-existante Définition d'une sous-classe d'une classe existante (héritage) 3.Définition du méta-comportement de l'agent (par exemple utilisation d'atn...) 4.Instantiation de l'agent
DIMA Bilan
DIMA, c'est... API Java : bibliothèque de classes pour concevoir des SMAs Ces classes permettent de définir : Les comportements d'agents Les méta-comportements Les composants de communication Les agents FIPA Les messages FIPA Les messages KQML...
Renseignements pratiques Où trouver DIMA : Installé sur les machines de la fac : Autres : DIMA.jar dans c:\program Files\java (! ce jar ne contient que les fichiers compilés!) Classapth modifié en conséquence http://perso.univ-lr.fr/fcolle/prive/dima/ Documentation, Exemples, Sources.
Références http://www-poleia.lip6.fr/~guessoum/dima.html Z. Guessoum. «Environnement de développement et de conception de systèmes multi-agents». Thèse, Université Paris 6, 1996. Z. Guessoum. DIMA: Une plate-forme multi-agents en Smalltalk. Revue Objet, Volume 3 No 4, pp. 393-410, 1998. Z. Guessoum. «Modèles et architecturs d'agents et de systèmes multi-agents adaptatifs». HDR, Université Pierre et Marie Curie, Paris 6, Décembre 200? Dossier contenant les infos sur DIMA.
Compléments MétaGen (http://www-poleia.lip6.fr/~fortame) Outil pour décrire un système Description ensuite transformée en un système multi-agents implémentée avec DIMA. Version répartie de DIMA : DARX (Dima Agent Replication Extension)