Planification et coordination multiagents sous incertitude - JADE

Transcription

Planification et coordination multiagents sous incertitude - JADE
Planification et coordination multiagents sous incertitude
Planification et coordination multiagents sous
incertitude
JADE
Aurélie 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ées sur les
systèmes à base d’agents.
Permettre le déploiement de ces applications sur différents
systèmes, réseaux de communication...
Assurer la gestion d’opérations telles que la migration des
agents ou la communication.
Permettre l’intégration des systèmes développés avec d’autres
technologies
Planification et coordination multiagents sous incertitude
JADE
JADE : Présentation
Plateforme pour le développement d’applications à base
d’agents
API Java
Développée depuis 1998 par Telecom Italia (Open Source
depuis 2000, licence LGPL)
Basée sur les spécifications FIPA
JADE fournit des fonctionnalités, indépendantes d’une
application spécifique, afin de simplifier la réalisation
d’applications distribuées à base d’agents (gestion des envois
de messages entre agents, de la mobilité des agents, etc.)
Planification et coordination multiagents sous incertitude
JADE
Paradigmes
Un agent est autonome et proactif : chaque agent s’exécute
sur un thread qui lui est propre. Il contrôle son cycle de vie et
décide de manière autonome comment agir.
Les agents peuvent communiquer : La communication est
basée sur des envois de messages asynchrones. Il n’y a pas de
dépendances temporelles entre les agents. Les destinataires
peuvent choisir de traiter certains messages et pas d’autres. Il
n’y pas de blocage du côté de l’expéditeur.
Planification et coordination multiagents sous incertitude
JADE
Paradigmes (2)
Système pair à pair :
Chaque agent est identifié par un nom unique (Agent
Identifier, AID).
Il peut entrer ou quitter la plateforme n’importe quand.
Il est possible de découvrir de nouveau agent grâce à un
système de pages blanches (AMS) et de pages jaunes (DF).
Chaque agent peut émettre ou recevoir des messages à
n’importe quel moment.
Planification et coordination multiagents sous incertitude
JADE
Architecture
Une plateforme JADE est composée de ”containers ” pouvant
être distribués sur un réseau.
Un container contient des agents et procure tous les services
nécessaires à l’exécution des agents.
Plusieurs containers peuvent être créés sur une même
machine.
Chaque container correspond à un processus JAVA (une
JVM).
1 agent correspond à un thread Java.
Il est possible de faire communiquer des agents appartenant à
des containers différents.
Planification et coordination multiagents sous incertitude
JADE
Architecture (2)
Le main container est créé lors du lancement de la
plateforme.
Tous les autres containers sont lancés à partir de celui-ci.
Il gère la table des containers (CT) à laquelle s’enregistre
chaque container lorsqu’il est créé.
Il gère la table des descripteurs des agents (GADT, Global
Agent Descriptor Table) : enregistre chaque agent présent
dans la plateforme, leur localisation et leur état.
Il gère 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ès de l’AMS afin d’obtenir
un AID valide (géré par la plateforme)
DF : Directory Facilitator
”Pages jaunes ”
Chaque agent peut enregistrer les services qu’il propose auprès
du DF.
Un agent peut également demander à être informé lorsque
certaines modifications sont réalisées (ajout ou suppression
d’un certain service par exemple).
L’AMS et le DF sont implémentés par des agents.
Planification et coordination multiagents sous incertitude
JADE
Création d’agents
Afin de créer un nouveau type d’agents, il est nécessaire de
définir une classe héritant de la classe Agent de JADE.
Cette classe doit implémenter la méthode setup() qui
contient l’initialisation de l’agent.
Il est possible de spécifier des arguments lors de la création de
l’agent. Ces arguments peuvent être obtenus dans la classe
Agent à l’aide de la méthode getArguments
Les arguments doivent alors être spécifiés lors de la création
de l’agent
En ligne de commande : séparés par des espaces et entourés
de parenthèses
Avec GUI : dans le textArea prévu à cet effet.
Planification et coordination multiagents sous incertitude
JADE
Création 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éer un agent dans JADE avec
cette classe.
Planification et coordination multiagents sous incertitude
JADE
Création d’agents (3)
JADE propose différents agents prédéfinis :
DUMMY AGENT :
Permet l’envoi de messages à des agents.
Utile lors de la conception afin de vérifier la réaction d’un
agent à la réception d’un message.
SNIFFER AGENT :
Permet de visualiser l’enchaı̂nement des messages entre les
agents.
Représentation graphique de l’échange des messages.
Les agents à ”sniffer ” peuvent être sélectionnés.
INTROSPECTOR AGENT :
Permet de débugger le comportement d’un agent
Permet de savoir quels comportements d’un agent sont
exécutés, 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écute qu’un seul comportement à la fois. C’est
au concepteur de gérer l’alternance des comportements des
agents.
Pour ajouter un comportement à un agent :
addBehaviour()
Pour définir un comportement : Étendre 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érite, il faut implémenter les
méthodes :
public void action()
public boolean done()
Lorsque le comportement d’un agent est exécuté, la méthode
action() de son comportement est exécutée jusqu’à ce
qu’elle se termine (elle ne s’interrompt pas pour laisser
l’exécution à un autre comportement) → attention aux
boucles infinies dans la méthode action().
La méthode done() indique si le comportement s’est exécuté
complètement et peut être retiré de l’ensemble des
comportements que l’agent exécute.
Planification et coordination multiagents sous incertitude
JADE
Ajout de comportements (3)
Tout comportement hérite des méthodes onStart() et
onEnd() de la classe Behaviour.
La méthode onStart() est appelée avant l’exécution de la
méthode action().
La méthode onEnd() est appelée après la méthode done()
lorsque celle-ci retourne true.
Les classes WakerBehaviour et TickerBehaviour
permettent d’implémenter des comportements qui se
produisent à certains moments (par exemple, 10 secondes
après la création 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écutés dans
l’ordre de leur ajout
FSMBehaviour : définition d’une machine à états finis où les
états sont des comportements, les transitions dépendents des
valeurs de terminaison des comportements
ParallelBehaviour : comportements fils exécutés en
parallèle
Planification et coordination multiagents sous incertitude
JADE
Communication entre agents
Messages FIPA-ACL :
émetteur du message (AID)
liste des destinataires {AID}
performatif (REQUEST, INFORM, QUERY IF,...)
contenu,
langage,
ontologie,
éventuelles 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érer eux-mêmes 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 à un comportement d’être suspendu
jusqu’à l’arrive d’un message
public void action(){
ACLMessage msg = myAgent.receive();
if(msg != null){
// comportement à exécuter
}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éation d’un runtime
Lancement de la plateforme
Création des agents
Planification et coordination multiagents sous incertitude
JADE
Lancer JADE
/* Création 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élécharger et décompresser la dernière version de JADE
(http://jade.tilab.com/)
Modifier votre CLASSPATH
Tutorial :
http://jade.tilab.com/doc/tutorials/JADEProgramming
-Tutorial-for-beginners.pdf

Documents pareils