La plate-forme DIMA - Université de La Rochelle

publicité
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)
Téléchargement