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 Noyau hérite Agent Librairies utilise Schéma d'utilisation de DIMA SMA à réaliser = Code JAVA DIMA = Bibliothèque JAVA utilise Noyau Est exécuté Librairies Machine virtuelle JAVA Schéma d'utilisation Définit les modèles d'agent SMA à réaliser = Code JAVA DIMA = Bibliothèque JAVA utilise Noyau Est exécuté Librairies Machine virtuelle JAVA Schéma d'utilisation Définit les modèles d'agent DIMA = Bibliothèque JAVA Est exécuté SMA à réaliser = utilise Code JAVA Définit les notions nécessaires pour le fonctionnement des modèles d'agent Machine virtuelle JAVA Noyau Librairies 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 Noyau Exemple ● hérite Agent Librairies 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();...} ... } Noyau Exemple ● ● ● ● hérite Agent Librairies 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 Agent Librairies 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 Noyau DIMA hérite Agent Librairies 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 Agent Librairies 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 Agent Librairies utilise Différents modèles d'agents : – Agents réactifs : ● ● – Agents cognitifs : ● ● – décrits par des comportements réactifs Ex : package Gdima.kernel.BasicAgents.* 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 Agent Librairies 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) Noyau DIMA propose ... ● hérite Agent Librairies utilise Différents frameworks : – Correspondent à différents paradigmes pour définir des comportements (ATN-Based, RuleBased, Case-Based, Classifier-Based) – Exemple de l'ATN-based framework (illustré sur l'exemple examples.lg.LoneDomain.java et examples.lg.LoneATNAgent.java) Classes définies pour implémenter l'ATN framework Noyau DIMA propose ... ● ● Agent La gestion de la communication : – Package basiccommunicationcomponents – Package basicFIPAACLMessages – Package basicKQMLMessages La gestion des interactions : – ● hérite ... Package INAF2 Librairies utilise 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 : ● ● ● DIMA.jar dans c:\Program Files\java ( ! ce jar ne contient que les fichiers compilés !) Classapth modifié en conséquence Autres : – 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)