Vous êtes sur la page 1sur 23

Systmes Multi-Agents : Plateforme JADE O.

Boissier G2I/ENSM Saint-Etienne


Systmes Multi-Agents
JADE
Environnement pour la
programmation multi-agent
Olivier Boissier
Olivier.Boissier@emse.fr
05 Janvier 2010
MASTER WEB INTELLIGENCE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Plan
I. Vue densemble
II. Caractristiques
III. Plateforme JADE
IV. Architecture
Principes et architecture de JADE
Utilisation de la plateforme JADE
Programmation avec JADE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
JADE
(Java Agent DEvelopment Framework)
Intergiciel pour le dveloppement dapplications
pair pair dagents intelligents
Sur des plateformes fixes, tlphones mobiles,
Deux produits principaux :
Plateforme agent satisfaisant aux
spcifications de la FIPA
API pour dvelopper des agents en Java
Projet Open Source, LGPL License
Contrle par Telecom Italia Lab, qui reste propritaire du projet
Rsultat des efforts conjoints de diffrents acteurs runis au sein du JADE Board
(fond en 2003) dont les missions sont la promotion, la gouvernance et
limplmentation des volutions de JADE
Portail du projet : http://jade.tilab.com
Vue densemble
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Caractristiques
Support lenvoi de messages, transparent et multi-protocoles
Diffusion dvnements en local
Java RMI pour la diffusion interne une plateforme
FIPA 2000 Message Transport Protocol
Protocole IIOP pour la diffusion inter-plateforme
Protocole HTTP et encodage des ACL en XML
Modle de concurrence deux niveaux
Entre agents (pre-emptif, Threads Java)
Interne aux agents (co-opratif, classes de comportements behaviour)
Mobilit des agents
entre plateforme, mobilit faible
Framework orient objet implmentant en Java les spcifications FIPA
Plateforme agent
Langage de communication agent
Ontologie de management des agents
Protocoles dinteraction standards
Langages dfinis par les utilisateurs et les ontologies
Caractristiques
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Caractristiques
JADE encapsule les spcifications de la FIPA :
La plateforme fournit : AMS, DF, MTS et ACC
agent-management-ontology, contructeur dun agent lenregistre dans la plateforme
(nom, adresse), classe DFService permet un accs au DF
Transport et traitement des messages
Extension des protocoles standards dinteraction par les mthodes handle
Systme de gestion dvnements dans le noyau de la plateforme
Permet lobservation de la plateforme, des messages, du transport des messages,
des agents
Outils de gestion bass sur des agents
Agents spciaux (RMA, Sniffer, Introspector) qui communiquent avec FIPA ACL
Extensions lontologie fipa-management-ontology pour y inclure des actions
spcifiques
Ontologie particulire pour lobservation
jade-introspection
Agents utilitaires
DummyAgent tool permet des utilisateurs dinteragir avec les agents dploys sur la
plateforme
Sniffer Agent agent utilis pour observer les messages
Caractristiques
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Plateforme JADE
Une application JADE est une plateforme dploye sur une ou plusieurs machines
La plateforme hberge un ensemble dagents, identifis de manire unique, pouvant
communiquer de manire bidirectionnelle avec les autres agents
Chaque agent sexcute dans un conteneur (container) qui lui fournit son environnement
dexcution ; il peut migrer lintrieur de la plateforme
Toute plateforme doit avoir un conteneur principal qui enregistre les autres conteneurs
Une plateforme est un ensemble de conteneurs actifs
Main
container
Container Container
J2SE J2EE
J2ME
Platform
Java
Application
Agent A
Agent B
Agent C
Agent D
Plateforme JADE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Conteneurs
AMS : Agent Management
System
DF : Directory Facilitator
Un conteneur est un environnement
dexcution JADE :
Environnement complet dexcution pour un
agent
Excution concurrente de plusieurs agents
Contrle le cycle de vie des agents
Assure la communication entre agents
Un seul conteneur hberge lAMS,
le DF, cest le conteneur principal
(main container)
AMS (Agent Management System)
! Service de Pages Blanches : rfrence
automatiquement les agents suivant
leur nom ds leur entre dans le systme.
DF (Directory Facilitator)
! Service de Pages Jaunes : rfrence leur
demande les agents suivant leur(s) service(s).
Le conteneur principal peut tre rpliqu via
des services de rplication
Plateforme JADE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent et Communication
1 agent = 1 thread implment en JAVA selon API JADE
Excute un ensemble dactions. Les actions sont regroupes en comportements
(behaviour)
Diffrents types de comportements : parallle, composite, cyclique
Interaction entre agents par envoi de messages dont le contenu est exprim en
ACL selon diffrents langages de contenu via diffrents mcanismes :
Au sein dune plateforme les communications se font par RMI
Entre plateformes les communications se font par HTTP, IIOP, JMS, selon la
configuration de la plateforme au lancement
Plate forme Conteneur Message Agent
Plateforme JADE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils utiles au dbogage
Dummy Agent
Visualisation des messages
Envoie des messages aux agents prsents sur
la plateforme et rceptionne leur rponse,
Sniffer Agent
Visualisation de lenchanement des messages
et des messages eux mme.
Vrification interactive de la correction des
protocoles.
Introspector Agent
Visualisation des messages envoys/reus,
Visualisation des Behaviours actifs et non-
actifs,
Contrle de ltat de lagent.
Plateforme JADE
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Architecture de la plateforme Jade
Conteneur
Service2
Service1
Noeud2
S
e
r
v
i
c
e

M
a
n
a
g
e
r

Conteneur
Service3
Service1
Noeud3
S
e
r
v
i
c
e

M
a
n
a
g
e
r

Conteneur
Service2
Service1
Noeud1
S
e
r
v
i
c
e

M
a
n
a
g
e
r

Conteneur principal
Service3
Proxies vers le
Gestionnaire rel
de services
agents
agents
agents
AMS DF
MTP
Architecture
Serveur
RMI
Liste de conteneurs
Carte des services
Global Agent
Descriptor Table
Liste des nuds mtp
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Services Automatiques
Messaging : change des messages en ACL et gestion du
Message Transfert Protocol
jade.core.messaging.MessagingService
Agent-Management : gestion du cycle de vie de lagent, support
au RMA, arrt plateforme et conteneur
jade.core.management.AgentManagementService
Agent-Mobility : support la mobilit des agents
jade.core.mobility.AgentMobilityService
Notification : notifications dvnements du niveau plateforme
(requis pour le Sniffer et lIntrospector)
jade.core.event.NotificationService
Remarques : par dfaut ces services sont activs, si dautres
services sont activs, alors Agent-Mobility et Notification doivent
tre activs explicitement.
Architecture
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Services optionnels
Persistent-Delivery : stockage persistent des messages ACL non
transmis
jade.core.messaging.PersistentDeliveryService
Main-Replication : rpliquer le conteneur principal pour des soucis de
tolrance aux pannes. Ce service doit tre activ sur chacun des
htes hbergeant un conteneur principal
jade.core.replication.MainReplicationService
Address-Notification : service dcoute des notifications dactivation
ou de suppression de copies de conteneurs principaux
jade.core.replication.AddressNotificationService
UDPNodeMonitoring : service support au monitoring de plateforme
par UDP
jade.core.nodeMonitoring.UDPNodeMonitoringService
Architecture
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agents donnant accs aux services
AMS: Agent Management System
Gestion des pages blanches
Gestion du cycle de vie des agents sur la plateforme
DF: Directory Facilitator
Gestion des pages jaunes
Association entre description de services proposs et
agents
Gestion des descriptions de services proposs par les
agents
Outils de dbugage
Introspector, Sniffer, Dummy Agent
Architecture
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Principes et architecture de JADE
Utilisation de la plateforme JADE
I. Installation et lancement de la plateforme JADE
II. Outils de la plateforme JADE
III. Aspects avancs de lancement de la plateforme
Programmation avec JADE
Plan
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
I. Installation et lancement de la plateforme JADE
I.1. Installation et configuration
I.2. Lancement de la Plateforme
I.3. Lancement dagents
II. Outils de la plateforme JADE
III. Aspects avancs du lancement de la plateforme
Plan
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Installation et configuration
Installation
Sources disponibles http://jade.tilab.com
Configuration
Ajouter dans le classpath les archives java (.jar) se
trouvant dans le rpertoire lib
Archives ncessaires
jade.jar
jadeTools.jar
Archives optionnelles en fonction du type de
communication inter-plateformes
http.jar
iiop.jar
Installation et configuration
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lancement de la plateforme
Lancement de base :
java jade.Boot [liste agents]
! Lancement avec interface graphique
java jade.Boot -gui [liste agents]
Note : linterface graphique est reprsente par le Remote
Monitoring Agent (RMA)
Installation et configuration
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lancement dun agent :
java jade.Boot
myAgt:myPackage.myAgent
Note : il est ncessaire de prfixer le nom de la classe
de lagent par un nom
Installation et configuration
Lancement d'agents
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
I. Installation et lancement de la plateforme JADE
II. Outils de la plateforme JADE
II.1. Remote Monitoring Agent
II.2. Dummy Agent
II.3. Directory Facilitator Agent
II.4. Sniffer
II.5. Introspector
II.6. Agent Gestionnaire de logs
III. Aspects avancs du lancement de la plateforme
Plan
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Exemple
Illustration du fonctionnement de la plate forme et des diffrents
outils qui laccompagnent par un exemple simplifi lextrme,
Contexte :
achat et vente de livres par des agents Vendeurs et agents Acheteurs
Les agents vendeurs ont une liste de livres leur disposition ainsi que leur
prix
Les agents acheteurs ont pour objectif de trouver un livre et de l'acheter
Procdure dachat :
Pour acheter un livre, lagent acheteur doit envoyer un message au DF pour
lui demander la liste des vendeurs prsents sur la plate forme
Une fois la liste obtenue, il envoie une demande de proposition aux
vendeurs (cfp)
L'agent vendeur qui possde le livre rpond par une proposition (propose)
en indiquant le prix du livre
L'agent acheteur rpond par une acceptation (accept-proposal)
L'agent vendeur repond par une notification (inform) vide.
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Remote Monitoring Agent
Lancement :
par l'option -gui en ligne de commande
ou
java jade.Boot monInterface:jade.tools.rma.rma
Visualisation et gestion (ajout, supression ..) de :
l'ensemble des conteneurs dploys au sein d'une plateforme
JADE
des agents prsents au sein de la plateforme (inscrits ou non
dans le DF), par accs lAMS
Possibilit d'avoir plusieurs RMA au sein dune plateforme
mais un seul par conteneur.
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Remote Monitoring Agent
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Dmarrer un agent au sein du RMA (1/3)
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Dmarrer un agent au sein du RMA (2/3)
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Dmarrer un agent au sein du RMA (3/3)
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Envoi de messages via le RMA
RMA
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Dummy Agent
Lancement :
java jade.Boot
monDummy:jade.tools.DummyAgent.DummyAgent
Ou
Par lintermdiaire du GUI du RMA
Agent "vide" permettant l'utilisateur d'interagir avec les
agents de la plateforme
Interaction avec les autres agents par envoi de messages
dfinis par l'utilisateur,
les messages sont historiss et permettent de voir si les agents
du systme ont le comportement prvu
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
seller@G2I-PCP-DUMONT:1099/JADE
cfp
Oliver_Twist
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Messages envoys
Messages reus
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Directory Facilitator Agent
Lancement :
Le DF est automatiquement lanc au dmarrage de la plateforme
Lancement de linterface DF GUI par lintermdiaire du RMA
Lancement par envoi de message au DF :
(request :content (action DFName (SHOWGUI)) :ontology
JADE-Agent-Management :protocol fipa-request)
Le DF nest disponible quau sein du conteneur principal de la
plateforme.
Gestion des services proposs par les agents:
Consultation des services mis disposition par les agents qui se sont
inscrits auprs du DF
Inscription et dsinscription des services mis disposition par un agent
Recherche dagents qui fournissent un service particulier.
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Sniffer Agent
Lancement :
java jade.Boot
monSniffer:jade.tools.sniffer.Sniffer
Ou
Par lintermdiaire du GUI du RMA
Visualisation des entres ou sorties dagents de la
plateforme (lorsque utilisation du fichier de configuration)
Visualisation des messages changs entre des agents
Slection possible des agents surveiller
Slection possible des types de messages (performatif)
surveiller pour un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Sniffer Agent
Echanges entre le seller et le buyer
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Utilisation dun fichier de proprits sniffer.properties est
possible pour contrler le comportement du Sniffer
preload : liste de descriptions spares par point-virgule
Une description est un nom dagent et une liste de performatifs spars par
des espaces. Si aucune liste, le Sniffer affichera tous les messages
Exemple :
preload=da0;da1 inform propose
preload=agent?? inform
preload=*
clip : une liste de prfixes de noms dagent spars par un point-
virgule qui seront retirs de laffichage des noms dagents
Exemple :
clip=com.hp.palo-alto.;helper
Sniffer Agent : fichier de proprits
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Introspector Agent
Lancement :
java jade.Boot
monIntrospector:jade.tools.introspector.Introspector
Ou
Par lintermdiaire du GUI du RMA
Contrle du cycle de vie d'un agent
Visualisation de ltat dun agent
Changement de ltat dun agent (note: il faut que lagent
implmente les mthodes correspondantes
takedown (), cf. suite du cours)
Visualisation des messages reus, des messages emis
mais aussi des messages en attente
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Introspector Agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Outils : Agent Gestionnaire de Logs
Modification en
cours
dexcution du
comportement
de logging
(java.util.logging
)
Permet :
Parcours des
diffrents logs
sur le
conteneur
Modification
du niveau de
logging
Ajouter de
nouveaux
fichiers de
logs
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
I. Installation et lancement de la plateforme JADE
II. Outils de la plateforme JADE
III. Aspects avancs du lancement de la
plateforme
III.1. Lancement de conteneurs, options
III.2. Options avances du Directory Facilitator
Plan
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Rgle : tout conteneur simple doit se rattacher un
conteneur principal
Noms des conteneurs :
-name spcification du nom du conteneur principal.
Note : utiliser avec prcaution afin d'assurer un nom unique
[par dfaut est nomMachine:1099/JADE]
-container-name spcification du nom d'un conteneur simple
[par dfaut Container-X (X nombre gnr automatiquement].
Distinction conteneur principal / conteneur simple :
-container permet de spcifier que l'instance de JADE
lance est un conteneur simple et doit par consquent rejoindre
le conteneur principal [par dfaut : conteneur principal]
Lancement de conteneurs
Un ou plusieurs conteneurs
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lancement dun conteneur simple
Lancement dun conteneur simple sur une machine et
rattachement de ce conteneur au conteneur principal
situ sur la machine2
java jade.Boot -container -host machine2
-port 1000 [Liste dagents]
Prcisions sur le conteneur principal auquel le conteneur
simple se rattache
-host pour spcifier le nom de la machine o se trouve le
conteneur principal [par dfaut localhost].
Note : utiliser cette option si lon veut que la plateforme
soit accessible de l'extrieur.
-port pour spcifier le port d'accs du conteneur
principal [par dfaut : 1099].
Lancement de conteneurs
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lancement dun conteneur
sur une machine autre
Lancement dun conteneur (simple ou principal) sur
une machine et dploiement de ce conteneur sur une
autre machine.
java jade.Boot -container -local-host
machine2 -local-port 1000 -host machine1
[Liste dagents]
Prcisions sur les machines sur lesquelles lancer le
conteneur :
-local-host spcification de l'hte o doit se trouver le
conteneur lanc [par dfaut localhost].
-local-port spcification du port d'accs du conteneur
lanc [par dfaut 1099].
Lancement de conteneurs
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
I. Agents JADE
II. Messages ACL
III. Description dun agent
IV. Comportements
V. API Jade
Principes et architecture de JADE
Utilisation de la plateforme JADE
Programmation avec JADE
Plan
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
La classe Agent reprsente la classe de base commune tous les
agents dfinis par lutilisateur jade.core.Agent
Un agent JADE est une instance dune classe dfinie par lutilisateur qui
hrite de cette classe Agent
Par hritage, il a la possibilit :
Dinteragir avec la plateforme : enregistrement, configuration, gestion distance,

Dutiliser un ensemble de mthodes qui peuvent tre appeles pour implmenter
des comportements particuliers de lagent (envoi/rception de messages,
utilisation de protocoles dinteraction standard, )
Le modle dexcution dun agent est multi-tches dans lequel les
comportements (behaviour) dun agent sont excuts en parallle
Le comportement dun agent est implment par une classe
drivant de la classe Behaviour
Un ordonnanceur, interne la classe Agent, ordonnance ces
comportements
Classe agent
Structure d'un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Dfinition dune classe dagent par hritage de la classe jade.core.Agent,
Implmenter la mthode setup() [obligatoire]
Invoque au lancement de lagent,
Utilise pour :
ajouter des comportements lagent addBehaviour()
linscrire auprs du DF DFService.register()
dclarer les ontologies utilises, le langage de contenu,
traiter les paramtres passs en arguments getArguments()
...
Implmenter la mthode takeDown() [optionnel]
Invoque lors de la fin dexcution de lagent,
Inclue des oprations de finalisation :
Demander au DF de supprimer les services qui ont t inscrits par lagent,
Finir de traiter les messages reus
Cration dun agent
Cration d'un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Exemple : Cration dun agent
import jade.core.Agent;
public class SimpleAgent extends Agent {
protected void setup(){
// Initialisation de lagent
System.out.println("SimpleAgent ready");
}
protected void takeDown(){
// Traitement de fin
System.out.println("SimpleAgent done");
}
}
Cration dun agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Modle dexcution dun agent
setup()
Agent actif ?
doDelete() ?
Slection et excution du Behaviour b dans
la liste des comportements actifs de lagent
b.action()
b.done() ?
Retirer b de la liste des comportements actifs
takeDown()
Non
Oui
Non
Oui
Initialisation
Addition de
comportements
initiaux.
Modle dexcution dun agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Durant lexcution dun agent, son tat peut tre modifi
INITIATED : lagent est lanc mais non enregistr auprs de lAMS, aucun
nom, aucune adresse
ACTIVE : lagent est rpertori auprs de lAMS et peut accder aux
services.
SUSPENDED : tous les behaviours de lagent sont suspendus.
TRANSIT : lagent migre vers une autre plateforme.
WAITING : tous les behaviours de lagent sont temporairement interrompus.
DELETED : lexcution de lagent est termine et nest plus rpertori au sein
de lAMS
JADE permet de contrler le passage dun agent dun tat lautre
avec les mthodes doXXX
setup() INITIATED
doSuspend() ! doActivate() SUSPENDED ! ACTIVE
doMove() ACTIVE ! TRANSIT
doWait() ! doWake() WAITING ! ACTIVE
Modle dexcution dun agent
Cycle de vie d'un agent (1/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
doActivate()
doSuspend()
doWait()
doWake()
doMove(Location)
setup()
doDelete()
Modle dexcution dun agent
Cycle de vie d'un agent (2/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lagent est identifi auprs de lAMS par un identifiant unique, appel GUID
(Global Unique Identifier)
Cet identifiant est un objet de type jade.core.AID
AID(java.lang.String name, boolean isGUID)
AID id = new AID(localname, AID.ISLOCALNAME);
AID id = new AID(name, AID.ISGUID);
Les attributs de cet objet sont :
name : <nickname>@<plateforme> [getLocalName(), getName()]
addresses : adresses de la plateforme [getAllAddresses()]
resolvers : services de page blanche [getAllResolvers()]
Ces informations sont accessibles par les mthodes de la classe
jade.core.Agent
getAID() : retourne lidentifiant unique de lagent,
getName() : retourne le nom de lagent, i.e. <nickname>@<plateforme>
getLocalName() : retourne uniquement le nickname (nom local),
getHap() : retourne ladresse de la plateforme.
getAMS() : retourne lAID de lAMS de la plateforme sur laquelle lagent est situ.
Identification dun agent
Identification d'un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Exemple : Identification dun agent
import jade.core.Agent;
public class SimpleAgent extends Agent {
protected void setup(){
// Initialisation de lagent
System.out.println(this.getName().getAID()+
"ready");
}
protected void takeDown(){
// Traitement de fin
System.out.println(this.getName().getAID()+
"done");
}
}
Identification dun agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Une liste darguments peut tre passe un agent lors
de son lancement
Les arguments peuvent tre rcuprs par la mthode
getArguments() de la classe Agent
Note: les arguments sont temporaires et ne migrent pas
avec lagent et ne sont pas non plus clons
> java jade.Boot [options] myAgt:myPackage.MyAgent(arg1 arg2)
protected void setup() {

Object[] args = getArguments();
if (args != null) {
for (int i=0; i.args.length; i++) { }
}}
Arguments dun agent
Passage d'arguments un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Aide au dveloppement
Pour dvelopper des agents JADE :
utiliser votre diteur de texte prfr pour crer le code source de lagent.
Compiler et excuter cet agent dans le conteneur principal de JADE en
chargeant cette classe dans le conteneur.
Pour dvelopper et amliorer le code dagents JADE :
En r-ditant et en recompilant, on ne peut pas recharger lagent dans la
plateforme. En effet, en gardant le nom local de lagent, il y a un conflit de
nom. Mme en changeant de nom, le chargeur de classe Java ne permet
pas le remplacement de classes et entrane donc lexcution de lancienne
version de la classe de lagent. Une solution est alors de relancer la
plateforme !!!
Cest bien, mais cest lourd surtout lorsque lon a beaucoup dagents. Le
moyen de sen sortir est de charger lagent en dveloppement dans un
conteneur simple qui se connecte au conteneur principal dans lequel
sexcutent les autres agents. Il suffit ensuite de killer le conteneur simple
avec lagent en dveloppement.
Aide au dveloppement
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Driver la classe de lagent de la classe
jade.core.Agent,
Dans la mthode obligatoire setup()
Utiliser la mthode getArguments() pour rcuprer les
arguments
Enregistrer les langages de contenu, les ontologies
(voir plus loin)
Initier les comportements (voir plus loin)
Rsum de la construction d'un agent
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Un message est une instance de la classe ACLMessage
appartenant au package jade.lang.acl
La dfinition dun ACLMessage vrifie les spcifications FIPA.
Il est compos au minimum :
dun performatif,
dun ensemble de destinataires,
et contient de prfrence :
un contenu,
un expditeur,
un protocole dinteraction,
une id de conversation,
Il peut spcifier un langage de contenu et/ou une ontologie.
Structure de message ACL
Structure d'un message ACL (1/3)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Les valeurs des diffrents attributs dun ACLMessage sont
accessibles par les mthodes getXXX / setXXX / addXXX
correspondantes
Performatif getPerformative() setPerformative()
Destinataire addReceiver() removeReceiver()
Contenu getContent() ou
getContentObject() ou
getByteSequenceContent()
setContent() ou
setContentObject() ou
setByteSequenceContent()
Expditeur getSender() setSender()
Protocole getProtocol() setProtocol()
Id de conversation getConversationId() setConversationId()
Langage getLanguage() setLanguage()
Ontologie getOntology() setOntology()

Structure de message ACL
Structure d'un message ACL (2/3)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Les performatifs dfinissent le type daction souhait par lagent qui
expdie le message.
Les performatifs sont des variables statiques de la classe
ACLMessage
Exemples :
INFORM : envoi dinformation/croyance,
FAILURE : action non ralisable,
REQUEST : demande dinformation,
SUBSCRIBE : souscription une source dinformation,
Les performatifs disponibles sous Jade, sont ceux dfinis par la FIPA, pour
plus dinformation :
http://www.fipa.org/specs/fipa00061/SC00061G.html
http://www.fipa.org/specs/fipa00037/SC00037J.html
Le performatif est spcifi en argument du constructeur de
lACLMessage
Exemple : inform = new ACLMessage(ACLMessage.INFORM)
Structure de message ACL
Structure d'un message ACL (3/3)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Un message est cr comme instance de la classe
ACLMessage.
ACLMessage inform = new ACLMessage(ACLMessage.INFORM);
inform.setContent("contenu");
inform.setProtocol("information");
Suite la rception dun message, il peut galement tre
cr en utilisant la mthode createReply()
remplir le contenu et dclarer le performatif,
Les autres champs sont instancis automatiquement partir du
message reu.
Cration et envoi de message
reply = msg.createReply();
Cration et envoi d'un message (1/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Ajouter les destinataires, en utilisant la mthode
addReceiver()
Envoi du message par appel de la mthode
send() de la classe Agent.
inform.addReceiver(new AID("destinataire", AID.ISLOCALNAME));
inform.addReceiver(new AID("destinataire2", AID.ISLOCALNAME));
send(inform);
Cration et envoi de message
Cration et envoi d'un message (2/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Rception de messages (1/5)
MTS JADE

.

Prparation
du message
Envoi du message Bob
Alice Bob
Mise en file dattente dans la
bote de rception de Bob
Lecture et traitement
du message
Rception de messages
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Rception bloquante dun message :
La mthode ACLMessage m = blockingReceive()se
bloque jusqu ce quun message arrive. Lagent passe dans
ltat Waiting jusqu rception dun nouveau message.
TOUS les comportement seront arrts jusqu la rception dun
nouveau message.
Rception non-bloquante dun message :
La mthode ACLMessage m = receive()retourne null si la
file de message est vide
Lagent reste dans ltat Active
SON comportement reste activ, et sera excut de faon cyclique,
mme si aucun message na t reu
La solution : utiliser la mthode block(), qui suspend LE comportement
jusqu la rception dun nouveau message.
Rception de messages
Rception de messages (2/5)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Utiliser blockingReceive() dans les mthodes setup() et
takeDown()
Utiliser receive() / block() dans le corps des Behaviours
Rception de messages (3/5)
ACLMessage receive = receive();
if(receive != null){
// Traitement du message
}
else{
block();
}
ACLMessage receive = blockingReceive();
// Traitement du message
Rception de messages
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Par dfaut, les mthodes blockingReceive() et receive()
rcuprent tous les messages prsents dans la bote de rception
Rception slective de messages
Utilisation de la classe MessageTemplate dfinie au sein du package
jade.lang.acl,
La classe MessageTemplate permet de crer des filtres sur chaque attribut du
message : MessageTemplate.Match<Attribute>()
Ces diffrentes conditions peuvent tre combines par les mthodes not(),
or() et and().
Lenvoi et la rception de messages peuvent tre mis en place au
sein de comportements de lagent
Rception de messages
Rception de messages (4/5)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Exemple : Rception de messages (5/5)
MessageTemplate perfmt =
MessageTemplate.MatchPerformative(ACLMessage.INFORM);
MessageTemplate protmt = MessageTemplate.MatchProtocol("ping");
MessageTemplate template = MessageTemplate.and(perfmt, protmt);
ACLMessage receive = receive(template);
if(receive != null){
ACLMessage inform = receive.createReply();
inform.setPerformative(ACLMessage.INFORM);
inform.setContent("pong");
send(inform);
}
else {
block();
}
Rception de messages
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Lenvoie dun message ncessite de connatre lAID du/des
destinataire(s)
Dans JADE, les inscriptions des agents ne sont pas simultanes.
Les rfrencements possibles sont :
Soit par leur nom au sein du service de pages blanches (AMS)
Soit par le(s) service(s) propos(s) enregistrs au sein du service de pages
jaunes (DF) : jade.domain.DFService
Contrairement lAMS ce rfrencement nest pas automatique
Chaque agent doit sinscrire auprs du DF : DFService.register()
Chaque agent doit se dsinscrire du DF : DFService.deregister()
Le DF permet de rechercher les agents offrant un type de service
dsir : DFService.search()
Services du DF
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Pour se rfrencer, lagent doit dcrire:
Les services quil fournit
Type, nom, langage(s), ontologie(s), protocole(s), proprit(s),
Classe jade.domain.FIPAAgentManagement.ServiceDescription
Classe jade.domain.FIPAAgentManagement.DFAgentDescription
Il est recommand de se rfrencer lentre dans le systme
// Enregistrement aupres du directory facilitator
try {
DFAgentDescription dfd = new DFAgentDescription();
dfd.setName(this.getAID());
ServiceDescription sd = new ServiceDescription();
sd.setType("participant");
dfd.addServices(sd);
DFService.register(this, dfd);
}
catch (FIPAException fe) {fe.printStackTrace();}
Rfrencement auprs du DF (1/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Inversement, lagent doit se dsinscrire du DF
sa sortie du systme :
Mthode deregister()
try{
DFService.deregister(myAgent);
}
catch(FipaException fe){
fe.printStackTrace();
}
Rfrencement auprs du DF (2/2)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Recherche de la description dagents fournissant un
service particulier
// Description du service des experts
DFAgentDescription participants = new DFAgentDescription();
ServiceDescription sde = new ServiceDescription();
sde.setType("participant");
participants.addServices(sde);
try{
ACLMessage reply = msg.createReply();
reply.setPerformative(ACLMessage.INFORM);
DFAgentDescription[] results = DFService.search(agent, participants);
for (int i = 0; i < results.length; ++i){
reply.addReceiver(results[i].getName());
}
agent.send(reply);
}
catch (FIPAException e) {e.printStackTrace();}
Recherche au sein du DF
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Protocoles dinteraction
Les protocoles spcifient lenchanement des messages entre les
agents.
Ils dfinissent les messages envoyer en prcisant :
" Le performatif
" Le contenu
" Le(s) destinataire(s)
et tablissent les rponses ses messages.
Jade propose des protocoles prdfinis disponibles dans le
package jade.proto
" Ce package contient des protocoles cl en main
" rpondant aux spcifications qui ont t tablies par la FIPA
Pour plus dinformations : http://www.fipa.org/repository/ips.php3
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Appartient aux protocoles du package
jade.proto
Dvelopper des agents utilisant le CNP,
ncessite de dfinir les
comportements :
De lInitiateur de linteraction
jade.proto.ContractNetInitiator
Du Participant linteraction
jade.proto.ContractNetResponder
et de surcharger les mthodes :
handle<Performatif>
registerHandle<Performatif>
Dtails du Contract Net Protocol
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Initiateur :
1. Recherche un bien dont le prix ne dpasse pas une valeur seuil donne (CFP),
2. Accepte la proposition qui maximise lcart entre le seuil et les prix proposs par les
diffrents participants puis prvient le vainqueur (accept-proposal).
3. Refuse les autres propositions en prvenant les participants vaincus (reject-
proposal).
Participant :
1. Rpond la demande de lInitiateur
" propose sil possde le bien en spcifiant le prix demand,
" refuse sinon.
2. Informe lInitiateur du rsultat de lexcution.
" inform si lexcution est russie,
" failure sinon.
Dtails du Contract Net Protocol
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Initiateur : Initialisation de lagent
import jade.core.Agent;
import jade.core.AID;
...
public class Initiateur extends Agent {
private double prix;
protected void setup(){
Object[] args = getArguments();
if (args != null && args.length == 2) {
prix = Double.parseDouble((String)args[1]);
ACLMessage cfp = new ACLMessage(ACLMessage.CFP);
cfp.setProtocol(FIPANames.InteractionProtocol.FIPA_CONTRACT_NET);
cfp.setReplyByDate(new Date(System.currentTimeMillis() + 10000));
cfp.addReceiver(new AID("participant", AID.ISLOCALNAME));
cfp.setContent((String)args[0]);
addBehaviour(new ContractNetInitiator(this, cfp) {
// Traitement des messages : surcharge des mthodes handle });
} else {System.out.println("Usage : <titre> <seuil>");}
} }
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Initiateur : Traitement des
messages (1/3)
Rception dun message PROPOSE
protected void handlePropose(ACLMessage propose, Vector v) {
System.out.println("Info : L'agent
"+propose.getSender().getName()+" propose
"+propose.getContent());
}

Rception dun message REFUSE
protected void handleRefuse(ACLMessage refuse) {
System.out.println("Info : L'agent
"+refuse.getSender().getName()+" ne possde pas l'objet
dsir");
}
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Initiateur : Traitement des
messages (2/3)
Rception dun message FAILURE
protected void handleFailure(ACLMessage failure) {
if (failure.getSender().equals(myAgent.getAMS())) {
System.out.println("Le destinataire n'existe pas");
}
else {
System.out.println("Erreur : Action non ralise"
+failure.getSender().getName()+")");
}
}

Rception dun message INFORM
protected void handleInform(ACLMessage inform) {
System.out.println("Succes : Achat ralis avec succs
auprs de l'agent "+inform.getSender().getName());
}
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Initiateur : Traitement des
messages (3/3)
Prparation des rponses
protected void handleAllResponses(Vector reponses, Vector acceptes) {
double bestPrice = 0;
ACLMessage accept = null;
for(Enumeration e = reponses.elements(); e.hasMoreElements();){
ACLMessage msg = (ACLMessage) e.nextElement();
if (msg.getPerformative() == ACLMessage.PROPOSE) {
ACLMessage reply = msg.createReply();
reply.setPerformative(ACLMessage.REJECT_PROPOSAL);
acceptes.addElement(reply);
double price = Double.parseDouble(msg.getContent()) - prix;
if (price < bestPrice) {
bestPrice = price;
accept = reply;
}
}
}
if (accept != null)
accept.setPerformative(ACLMessage.ACCEPT_PROPOSAL);
}
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Participant : Initialisation de lagent
import jade.core.Agent;
import jade.core.AID;
...
public class Participant extends Agent {
private Hashtable have;
protected void setup() {
MessageTemplate template = MessageTemplate.and(
MessageTemplate.MatchProtocol(FIPANames.InteractionProtocol.FIPA_CONTRACT_NET),
MessageTemplate.MatchPerformative(ACLMessage.CFP));
have = new Hashtable();
Object [] args = getArguments();
int i = 0;
while(i<args.length){
have.put(args[i++], args[i++]);
}
addBehaviour(new ContractNetResponder(this, template) {
// Traitement de messages : surcharge des mthodes handle } );
} }
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Participant : Traitement des
messages (1/2)
Rception dun message CFP
protected ACLMessage handleCfp(ACLMessage cfp)
throws RefuseException, FailureException,
NotUnderstoodException {
String title = cfp.getContent();
if(have.containsKey(title)){
double price = Double.parseDouble((String) have.get(title));
ACLMessage propose = cfp.createReply();
propose.setPerformative(ACLMessage.PROPOSE);
propose.setContent((new Double(price)).toString());
return propose;
} else {
throw new RefuseException("Objet non disponible");
} }
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Agent Participant : Traitement des
messages (2/2)
Rception dun message Accept-Proposal

protected ACLMessage handleAcceptProposal(ACLMessage cfp,
ACLMessage propose, ACLMessage accept)
throws FailureException {
String title = cfp.getContent();
if (have.containsKey(title)) {
ACLMessage inform = accept.createReply();
inform.setPerformative(ACLMessage.INFORM);
have.remove(title);
return inform;
}
else {throw new FailureException("Vente impossible")}
}
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Les comportements sont dfinis par drivation
de la classe jade.core.behaviours.Behaviour
ou dune de ses classes drives
Les mthodes suivantes doivent tre surcharges :
void action()
La fonctionnalit du comportement !
Doit tre rapide !!
boolean done ()
Retourne vrai lorsque la tche implmente par le comportement est
termine
Attribut manipulable : myAgent
Utilis pour envoyer/recevoir des messages et ajouter des
comportements
Comportements
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Les comportements behaviours dfinissent le comportement de
lagent.
Lajout dun comportement est ralis par la mthode
addBehaviour()
Utilis dans la mthode setup()
ou dans un autre comportement de lagent
Lordonnanceur interne dun agent excute un comportement, action
par action jusqu ce que la condition de fin done() du
comportement soit satisfaite
Gestion dune liste de comportements actifs,
Choix dun comportement
Excution de la mthode action()du comportement
Excution de la mthode done() du comportement pour tester la fin du
comportement
Si le comportement est termin, retrait de la liste de comportements actifs,
sinon insertion du comportement dans la liste des comportements actifs
Comportements
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Ajout/Suppression dun comportement
addBehaviour()
removeBehaviour()
Actions excutes au lancement/terminaison du
comportement
onStart()
onEnd()
Suspension de lexcution du comportement
block(), block(long milliseconds),
Reprise de lexcution du comportement
restart()
Rinitialisation du comportement
reset(), reset():
Mthodes d'un comportement
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
public class BehaviourExampleAgent extends Agent {
protected void setup () {
addBehaviour(new TrivialBehaviour());
}
public class TrivialBehaviour extends Behaviour {

public action() {
System.out.println(exemple de comportement);
}
public boolean done() {
return true;
}
}
}
Exemple de comportement
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Behaviour
CyclicBehaviour OneShotBehaviour
Excution ?
unique cyclique
Tche ?
SimpleBehaviour
simples
CompositeBehaviour
composes
Ordonnancement ?
FSMBehaviour
SequentialBehaviour
ParallelBehaviour
parallle
automate
s

q
u
e
n
t
i
e
l

Types de comportements
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
import jade.core.behaviours.SimpleBehaviours;
public class InitiateurBehaviour extends SimpleBehaviour {
private boolean finished = false;
private Initiateur init;
public InitiateurBehaviour(Initiateur agent){
// Constructeur
}
pulic void action(){
// Description du comportement de lagent
}
public boolean done(){
// Renvoie true ssi la mthode action ne doit plus tre invoque
return finished;
}
}
Behaviour pour CNET
Initiateur : behaviour (1/3)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
public InitiateurBehaviour(Initiateur agent){
init = agent;

// Cration du CFP
ACLMessage cfp = new ACLMessage(ACLMessage.CFP);
cfp.setProtocol(FIPANames.InteractionProtocol.FIPA_CONTRACT
_NET);
cfp.addReceiver(new AID("participant", AID.ISLOCALNAME));
cfp.setContent(init.titre);

// Envoi du message
init.send(cfp);
}
Envoi du Call For Proposal lagent Participant
Behaviour pour CNET
Initiateur : behaviour (2/3)
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Initiateur (3/3) : behaviour de traitement de
messages
public void action(){
ACLMessage receive =
init.receive(MessageTemplate.MatchProtocol(FIPANames.Interaction
Protocol.FIPA_CONTRACT_NET));
if(receive != null){
if(receive.getPerformative() == ACLMessage.REFUSE);
if(receive.getPerformative() == ACLMessage.FAILURE);
if(receive.getPerformative() == ACLMessage.INFORM);
if(receive.getPerformative() == ACLMessage.PROPOSE){
// Evaluer la propositions
ACLMessage reply = receive.createReply();
if(ok){
reply.setPerformative(ACLMessage.ACCEPT_PROPOSAL);
finished = true;
}
else {reply.setPerformative(ACLMessage.REJECT_PROPOSAL);}
init.send(reply); }
else{block();} }
Behaviour pour CNET
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Les comportements complexes sont des drivations de
la classe CompositeBehaviour :
SequentialBehaviour et ParallelBehaviour
" Excution en squentiel :
! Arrt lorsque tous les sub-behaviours sont termins
" Excution en parallle
! Arrt lorsque un ou plusieurs comportement sont termins,
! Arrt conditionn par le programmeur.
" Ajout de sous-comportements : addSubBehaviour()
" Suppression : removeSubBehaviour()
Avantages :
Dcomposition de tches complexes,
Simplification de la programmation.
Composite Behaviour
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
FSM Behaviour
Enchanement des sous-comportement la manire
dun automate
A
C
B
D
1
2
FSMBehaviour fsm = new FSMBehaviour(this);

fsm.registerFirstState(new behaviourA(), "A");
fsm.registerState(new behaviourB(), "B");
fsm.registerState(new behaviourC(), "C");
fsm.registerLastState(new behaviourD(), "D");
fsm.registerTransition("A", "B", 1);
fsm.registerTransition("A", "C", 2);
fsm.registerDefaultTransition("B", "D");
fsm.registerDefaultTransition("C", "D");

addBehaviour(fsm);
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
OneShotBehaviour
A
C
B
D
1
2
public class behaviourA extends OneShotBehaviour {
private Agent agent;
private int exit;
public A(Agent agent){
this.agent = agent;
}
public void action(){
if(agent.getLocalName().equals("A")){
exit = 1;
}
else {
exit = 2;
}
}
public int onEnd() {
return exit;
}
}
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Jade propose deux autres behaviours :
TickerBehaviour
- Hrite de SimpleBehaviour
- Excution rgulire dune action :
" Implmentation de la mthode onTick()
WakerBehaviour
- Excution unique de laction un temps T :
" Implmentation de la mthode handleElapsedTimeOut()
Utilit : sauvegarde, ping, automatisation de tches,
Ticker/Waker Behaviour
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Aperu de JADE API
jade.core :
Implmentation du noyau de la plateforme JADE
Classe Agent qui doit tre spcialises par les programmeurs dapplication.
jade.core.behaviours : classe de comportements Behaviours qui implmentent les tches ou
les intentions dun agent.
jade.content :
ensemble de classes support aux ontologies dfinies par les utilisateurs et les langages de
contenu.
jade.content.lang.sl : SL codec2, parser et encodeur.
jade.lang.acl :
traitement du Agent Communication Language selon les spcifications de la FIPA.
jade.proto :
Classes pour la modlisation des protocoles dinteraction standard (fipa-request, fipa-query, fipa-
contract-net, fipa-subscribe, ), ainsi que les classes pour aider les programmeurs dapplication
crer leurs propres protocoles.
jade.FIPA :
Module IDL dfini par la FIPA pour le transport de message respectant le protocole IIOP.
jade.wrapper :
wrappers des fonctionnalits de haut niveau de JADE permettant dutiliser JADE comme une
bibliothque, o des applications Java externes lancent des agents et des conteneurs.
API
Systmes Multi-Agents : Plateforme JADE O. Boissier G2I/ENSM Saint-Etienne
Aperu de JADE API
jade.domain package :
Ensembe des classes qui reprsentent les entits de gestion des agents dfinies par la FIPA, en
particulier lAMS, le DF, ainsi que toutes les constantes dfinies par la FIPA
jade.domain.FIPAAgentManagement : Ontologie FIPA-Agent-Management et toutes les
classes reprsentant ses concepts.
jade.domain.JADEAgentManagement : Extensions JADE pour la gestion des agents
(espionnage des messages, contrle du cycle de vie des agents, ), incluant lontologie
correspondante et toutes les classes correspondantes.
jade.domain.introspection : Concepts utiliss pour les communications entre outils JADE
(Sniffer et Introspector par exemple) et le noyau JADE.
jade.domain.mobility : Ensemble des concepts utiliss pour la communication sur la mobilit.
jade.gui :
Ensemble de classes gnriques pour la cration dinterfaces graphiques pour afficher et diter
des Agent-Identifiers, Agent Descriptions, ACLMessages,
jade.mtp :
Interface Java que tout protocole de transport de message doit implmenter pour tre intgr
dans le framework JADE, implmentation de lensemble de ces protocoles.
jade.tools :
Classes implmentant des outils pour simplifier ladministration et le dveloppement
dapplications
jade.util (resp. jade.util.leap) :
Classes utilitaires pour la gestion des proprits notamment (resp. remplacement des collections
pour J2ME)
API

Vous aimerez peut-être aussi