JADE - DESIR

Download Report

Transcript JADE - DESIR

Planification et coordination multiagents sous incertitude
Planification et coordination multiagents sous
incertitude
JADE
Aur´elie Beynier
CoCoMa, Master 2 ANDROIDE
4 novembre 2014
Planification et coordination multiagents sous incertitude
JADE
Les plateformes agents
Faciliter la mise en place d’applications bas´ees sur les
syst`emes `a base d’agents.
Permettre le d´eploiement de ces applications sur diff´erents
syst`emes, r´eseaux de communication...
Assurer la gestion d’op´erations telles que la migration des
agents ou la communication.
Permettre l’int´egration des syst`emes d´evelopp´es avec d’autres
technologies
Planification et coordination multiagents sous incertitude
JADE
JADE : Pr´esentation
Plateforme pour le d´eveloppement d’applications `a base
d’agents
API Java
D´evelopp´ee depuis 1998 par Telecom Italia (Open Source
depuis 2000, licence LGPL)
Bas´ee sur les sp´ecifications FIPA
JADE fournit des fonctionnalit´es, ind´ependantes d’une
application sp´ecifique, afin de simplifier la r´ealisation
d’applications distribu´ees `a base d’agents (gestion des envois
de messages entre agents, de la mobilit´e des agents, etc.)
Planification et coordination multiagents sous incertitude
JADE
Paradigmes
Un agent est autonome et proactif : chaque agent s’ex´ecute
sur un thread qui lui est propre. Il contrˆ
ole son cycle de vie et
d´ecide de mani`ere autonome comment agir.
Les agents peuvent communiquer : La communication est
bas´ee sur des envois de messages asynchrones. Il n’y a pas de
d´ependances temporelles entre les agents. Les destinataires
peuvent choisir de traiter certains messages et pas d’autres. Il
n’y pas de blocage du cˆ
ot´e de l’exp´editeur.
Planification et coordination multiagents sous incertitude
JADE
Paradigmes (2)
Syst`eme pair `a pair :
Chaque agent est identifi´e par un nom unique (Agent
Identifier, AID).
Il peut entrer ou quitter la plateforme n’importe quand.
Il est possible de d´ecouvrir de nouveau agent grˆace `a un
syst`eme de pages blanches (AMS) et de pages jaunes (DF).
Chaque agent peut ´emettre ou recevoir des messages `a
n’importe quel moment.
Planification et coordination multiagents sous incertitude
JADE
Architecture
Une plateforme JADE est compos´ee de ”containers ” pouvant
ˆetre distribu´es sur un r´eseau.
Un container contient des agents et procure tous les services
n´ecessaires `a l’ex´ecution des agents.
Plusieurs containers peuvent ˆetre cr´e´es sur une mˆeme
machine.
Chaque container correspond `a un processus JAVA (une
JVM).
1 agent correspond `a un thread Java.
Il est possible de faire communiquer des agents appartenant `a
des containers diff´erents.
Planification et coordination multiagents sous incertitude
JADE
Architecture (2)
Le main container est cr´e´e lors du lancement de la
plateforme.
Tous les autres containers sont lanc´es `a partir de celui-ci.
Il g`ere la table des containers (CT) `a laquelle s’enregistre
chaque container lorsqu’il est cr´e´e.
Il g`ere la table des descripteurs des agents (GADT, Global
Agent Descriptor Table) : enregistre chaque agent pr´esent
dans la plateforme, leur localisation et leur ´etat.
Il g`ere les pages blanches et les pages jaunes.
Planification et coordination multiagents sous incertitude
JADE
Architecture (3)
AMS : Agent Management System
”Pages blanches ”
Chaque agent doit s’enregistrer aupr`es de l’AMS afin d’obtenir
un AID valide (g´er´e par la plateforme)
DF : Directory Facilitator
”Pages jaunes ”
Chaque agent peut enregistrer les services qu’il propose aupr`es
du DF.
Un agent peut ´egalement demander `a ˆetre inform´e lorsque
certaines modifications sont r´ealis´ees (ajout ou suppression
d’un certain service par exemple).
L’AMS et le DF sont impl´ement´es par des agents.
Planification et coordination multiagents sous incertitude
JADE
Cr´eation d’agents
Afin de cr´eer un nouveau type d’agents, il est n´ecessaire de
d´efinir une classe h´eritant de la classe Agent de JADE.
Cette classe doit impl´ementer la m´ethode setup() qui
contient l’initialisation de l’agent.
Il est possible de sp´ecifier des arguments lors de la cr´eation de
l’agent. Ces arguments peuvent ˆetre obtenus dans la classe
Agent `a l’aide de la m´ethode getArguments
Les arguments doivent alors ˆetre sp´ecifi´es lors de la cr´eation
de l’agent
En ligne de commande : s´epar´es par des espaces et entour´es
de parenth`eses
Avec GUI : dans le textArea pr´evu `a cet effet.
Planification et coordination multiagents sous incertitude
JADE
Cr´eation d’agents (2)
import jade.core.AID;
import jade.core.Agent;
public class HelloWorldAgent extends Agent {
public void setup(){
System.out.println("Hello, my name is "+ getLocalName());
}
}
Compiler la classe avec Java puis cr´eer un agent dans JADE avec
cette classe.
Planification et coordination multiagents sous incertitude
JADE
Cr´eation d’agents (3)
JADE propose diff´erents agents pr´ed´efinis :
DUMMY AGENT :
Permet l’envoi de messages `a des agents.
Utile lors de la conception afin de v´erifier la r´eaction d’un
agent `a la r´eception d’un message.
SNIFFER AGENT :
Permet de visualiser l’enchaˆınement des messages entre les
agents.
Repr´esentation graphique de l’´echange des messages.
Les agents `a ”sniffer ” peuvent ˆetre s´electionn´es.
INTROSPECTOR AGENT :
Permet de d´ebugger le comportement d’un agent
Permet de savoir quels comportements d’un agent sont
ex´ecut´es, dans quel ordre, quand?
Planification et coordination multiagents sous incertitude
JADE
Ajout de comportements
Un agent peut avoir un ou plusieurs comportements.
Un agent n’ex´ecute qu’un seul comportement `a la fois. C’est
au concepteur de g´erer l’alternance des comportements des
agents.
Pour ajouter un comportement `a un agent :
addBehaviour()
´
Pour d´efinir un comportement : Etendre
une des classes de
jade.core.behaviour :
Behaviour
OneShotBehaviour
CyclicBehaviour
Planification et coordination multiagents sous incertitude
JADE
Ajout de comportements (2)
Quelle que soit la classe dont on h´erite, il faut impl´ementer les
m´ethodes :
public void action()
public boolean done()
Lorsque le comportement d’un agent est ex´ecut´e, la m´ethode
action() de son comportement est ex´ecut´ee jusqu’`a ce
qu’elle se termine (elle ne s’interrompt pas pour laisser
l’ex´ecution `a un autre comportement) → attention aux
boucles infinies dans la m´ethode action().
La m´ethode done() indique si le comportement s’est ex´ecut´e
compl`etement et peut ˆetre retir´e de l’ensemble des
comportements que l’agent ex´ecute.
Planification et coordination multiagents sous incertitude
JADE
Ajout de comportements (3)
Tout comportement h´erite des m´ethodes onStart() et
onEnd() de la classe Behaviour.
La m´ethode onStart() est appel´ee avant l’ex´ecution de la
m´ethode action().
La m´ethode onEnd() est appel´ee apr`es la m´ethode done()
lorsque celle-ci retourne true.
Les classes WakerBehaviour et TickerBehaviour
permettent d’impl´ementer des comportements qui se
produisent `a certains moments (par exemple, 10 secondes
apr`es la cr´eation de l’agent ou toutes les 10 secondes).
Planification et coordination multiagents sous incertitude
JADE
Ajout de comportements (4)
Il est possible de composer des comportements :
SequentialBehaviour : comportements fils ex´ecut´es dans
l’ordre de leur ajout
FSMBehaviour : d´efinition d’une machine `a ´etats finis o`
u les
´etats sont des comportements, les transitions d´ependents des
valeurs de terminaison des comportements
ParallelBehaviour : comportements fils ex´ecut´es en
parall`ele
Planification et coordination multiagents sous incertitude
JADE
Communication entre agents
Messages FIPA-ACL :
´emetteur du message (AID)
liste des destinataires {AID}
performatif (REQUEST, INFORM, QUERY IF,...)
contenu,
langage,
ontologie,
´eventuelles informations additionnelles (id de conversation,
reply-with, ...)
Planification et coordination multiagents sous incertitude
JADE
Communication entre agents (2)
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));
msg.setLanguage("Francais");
msg.setOntology("Conversation");
msg.setContent("Bonjour, comment ca va ?");
send(msg);
Planification et coordination multiagents sous incertitude
JADE
Communication entre agents (3)
Les agents doivent g´erer eux-mˆemes leur boˆıte aux lettres
Relever la boˆıte aux lettres avec receive()
Gestion FIFO
ACLMessage msg = receive();
if(msg != NULL){
// Traiter le message
}
Planification et coordination multiagents sous incertitude
JADE
Communication entre agents (4)
Message bloquant : permet `a un comportement d’ˆetre suspendu
jusqu’`a l’arrive d’un message
public void action(){
ACLMessage msg = myAgent.receive();
if(msg != null){
// comportement `
a ex´
ecuter
}else{
block();
}
}
Planification et coordination multiagents sous incertitude
JADE
Lancer JADE
Depuis un terminal :
java -cp jade.jar:. jade.Boot -gui -host localhost
-port 8888 Peter:HelloWorldAgent
Depuis un programme Java :
Cr´eation d’un runtime
Lancement de la plateforme
Cr´eation des agents
Planification et coordination multiagents sous incertitude
JADE
Lancer JADE
/* Cr´
eation du runtime*/
Runtime rt = Runtime.instance();
/*Lancement de la plateforme*/
Profile pMain = new ProfileImpl("localhost", 8888, null);
AgentContainer mc = rt.createMainContainer(pMain);
/* Lancement d’un agent */
AgentController ac = mc.createNewAgent("Peter",
HelloWorld.class.getName(), null);
ac.start();
Planification et coordination multiagents sous incertitude
JADE
Utilisation de JADE
Installation
Installer Java
T´el´echarger et d´ecompresser la derni`ere version de JADE
(http://jade.tilab.com/)
Modifier votre CLASSPATH
Tutorial :
http://jade.tilab.com/doc/tutorials/JADEProgramming
-Tutorial-for-beginners.pdf