Académique Documents
Professionnel Documents
Culture Documents
Plan
Prsentation gnrale Les agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Prsentation gnrale
Plateforme de dveloppement et excution Multi-Agents JAVA Licence LGPL V2 Architecture distribue TILab S.p.A.(anciennement CSELT) Turin Italie Compatible avec le standard FIPA
Form en 1996 afin de construire des standards pour les agents htrognes, en interaction et les SMA Design de spcifications afin de faciliter linteroprabilit entre les diffrents SMA dvelopps par diffrentes socits et organisations Relations fortes avec dautres standard et organisations comme OMG (Object Management Group) www.fipa.org
Plan
Zeus
British Telecom Java FIPA 97-98 Emorphia (Nortel Networks) Java FIPA 2000 (?)
FIPA OS
Prsentation gnrale Les agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Cycle de vie
Conforme au standard FIPA 2002 (Jade 3) Cycle de vie Possde un ou plusieurs Comportements (Behaviours) qui dfinissent ses actions Communique et interagit avec les autres agents grce des Messages (ACLMessage) Rend des Services
Un agent possde toujours un tat (AP_ACTIVE, AP_DELETED...) Cycle de vie gr par cet tat Changement d tat possible
AP_TRANSIT doMove() AP_WAITING
) ait( doW
doSuspend()
doDelete()
AP_INITIATED
doStart()
AP_ACTIVE
do Su spe nd()
AP_DELETE D
AP_SUSPENDED
Un Comportement (Behaviour)
Un Message
Dfini une action dun agent Ordonnancement et excution de tches multiples Peut tre de plusieurs types
Behaviour
Communication entre agents Conforme au standard FIPA ACL Les messages ACL prsentent les caractristiques suivantes :
SimpleBehaviour
ReceiverBehaviour
CompositeBehaviour
CyclicBehaviour
OneShotBehaviour
WakerBehaviour
SequentialBehaviour
ParallelBehaviou r
FSMBehaviour
Typage (INFORM, QUERY) Transport possible d objets Smantique pour les donnes (Ontologies)
SenderBehaviour
Ontologies
Ontologies exemple
Concepts (Reprsentation abstraite dobjets) Prdicats (Condition binaire sur des concepts) Actions (Traitements proposs par des agents sur des concepts)
Predicat
Action
Famille
Concept
Un Service
Plan
Action enregistre et dispense par la plateforme Comportements dun ou plusieurs agents rpondant a une demande. Notion de pages jaunes Proche de la notion de WebServices
Prsentation gnrale Les Agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Prsentation de la plateforme
Une plateforme de dpart (avec ou sans GUI) 3 agents de base (Conforme FIPA)
Gestion du cycle de vie des agents Maintient une liste de tous les agents qui rsident sur la plate-forme (White pages) Contrle l'accs ainsi que l'utilisation du canal de communication des agents (ACC)
Directory Facilitator
Enregistre les descriptions des agents ainsi que les services qu'ils offrent Les agents peuvent enregistrer leurs services auprs d'un DF ou demander DF de dcouvrir les services offerts par d'autres agents (Yellow Pages)
Intra plateformes, Intra containers : Java Events Intra plateformes, Inter containers : RMI Inter Plateformes : IIOP Corba
Outils
Jade GUI
Jade GUI DF Agent GUI Dummy Agent Sniffer Agent Introspector Agent
DF Agent GUI
Dummy Agent
Sniffer Agent
Introspector Agent
Surveiller tat (cycle de vie) dun agent Ainsi que les messages reus ou mis par cet agent
API
Plan
Java Surcharge de classes de base Communication transparente Compatibilit FIPA pour la communication avec des agents non Jade Compatibilit avec Jess et Protege
Prsentation gnrale Les agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Exemple
Cration des ontologies Cration des comportements Cration et enregistrement des agents Excution
Wine shop
Red White Wine
e-shopping
CD
Track
Music shop
Single
Comportements du vendeur
Action effectue Attente dune requte de disponibilit Informe lacheteur sur la disponibilit Attente dune requte de prix Envoi du prix Attente dune demande de transaction Notification du rsultat de la transaction Nom HandleInform InformOwns HandleQuery InformCost HandleRequest InformDone Type Cyclic OneShot Cyclic OneShot Cyclic OneShot
Deux agents distincts (Vendeur et Acheteur) impliquent deux ensembles de comportements Deux types de comportements sont utiliss :
Comportements de lacheteur
Action effectue Trouver un vendeur Attente dune rponse Demander un prix Effectuer la vente Nom InformSearch HandleInform QueryPrice RequestSale Type OneShot Cyclic OneShot OneShot
DF
r po ns e
Vendeur
HandleInform HandleQuery HandleRequest
Acheteur
InformSearch HandleInform
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Vendeur
HandleInform HandleQuery HandleRequest INFORM
Acheteur
InformSearch HandleInform
Vendeur
HandleInform HandleQuery HandleRequest InformOwns
Acheteur
INFO RM
HandleInform
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Vendeur
HandleInform HandleQuery HandleRequest QUERY-REF QueryPrice
Acheteur
HandleInform
Vendeur
HandleInform HandleQuery HandleRequest InformCost INFORM
Acheteur
HandleInform
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Vendeur
HandleInform HandleQuery HandleRequest RequestSale
Acheteur
HandleInform
Vendeur
HandleInform HandleQuery HandleRequest InformDone
Acheteur
HandleInform
UEST REQ
RM INFO
Droulement de la transaction
CyclicBehaviour OneShotBehaviour ACLMessage
Plan
Vendeur
HandleInform HandleQuery HandleRequest
Acheteur
HandleInform
Prsentation gnrale Les agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Perspectives
Compatible FIPA Communaut de plus en plus importante Excution distribue Excution concurrente des agents Communication transparente par message (ACL) Notion de services LEAP Relativement facile a utiliser
Robotique Mobile
Plan
Prsentation gnrale Les agents JADE La plateforme Concrtement Les principaux intrts Implmentation dans les dtails
Installer Jade
Excuter Jade
java jade.Boot java jade.Boot gui java jade.Boot gui [nom de lagent]:[classe de lagent] java jade.Boot gui [nom de lagent]:[classe de lagent]([Paramtres])
Attention au classpath
Crer un agent
Crer un behaviour
Crer (tendre la classe behaviour ) public class myBehaviour extends SimpleBehaviour Creer le constructeur avec la super public myBehaviour(Agent agent) { super(agent);}
public class monAgent extends Agent Object[].getArguments() Enregistrer les langages de contenu Enregistrer les Ontologies Enregistrer les Services auprs du DF Dmarrer les Comportements (behaviors)
classe
Il existe diffrents types de behaviour tendre (simple, oneshot, cyclic, ) Crer la mthode action (obligatoire) qui correspond lexcution du behaviour
Dans la mthode Setup() de lagent Ajouter le behaviour Un behaviour ajout est demarr automatiquement
addBehaviour(new myBehaviour(this));
Creer une description du DF Agent Retrouver les agents dans un tableau Parcourir le tableau pour retrouver les agents
DFAgentDescription dfd = new DFAgentDescription(); DFAgentDescription[] result = DFService.search(this, dfd); for (int i=0; i<result.length; i++) { Iterator iter = result[i].getAllServices();
Crer lagent qui envoi ce message Crer une instance de la classe ACLMessage avec un template (Inform, Query,) ACLMessage msg = new ACLMessage(ACLMessage.INFORM) Remplir lensemble des agents receveurs dans linstance ACLMessage. msg.addReceiver(new AID( nom_du_receveur, AID.ISLOCALNAME) Remplir le texte du contenu du message msg.setContent( Salut a va ? ); Envoyer le message au receveur avec send(ACLMessage m);
Crer lagent receveur Crer le comportement (behaviour)de rception de message. Dclarer le ou les Templates (Inform, Query,) de message a recevoir private static final MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessag e.INFORM); Dans la mthode action()
Crer lobjet Java reprsentant le contenu du message. Crer lontologie de description reprsentant le message son nom et son vocabulaire (exemple avec la description dun objet Personne )
Crer une instance du message et le recevoir La reception peut tre bloquante, dans ce cas, utiliser
ACLMessage msg = myAgent.receive(mt); blockingReceive(mt) Ajouter le behaviour a lagent (dans setup() ) addBehaviour(new ReceiverBehaviour(this));
public class PersonOntology extends Ontology { public static final String ONTOLOGY_NAME = "Personontology"; public static final String PERSON = "Person"; public static final String PERSON_NAME = "name"; public static final String PERSON_AGE = "age";
Une instance
private static Ontology theInstance = new PersonOntology(); public static Ontology getInstance() { return theInstance;}
private static Ontology theInstance = new PersonOntology(); public static Ontology getInstance() { return theInstance;} private PersonOntology() { super(ONTOLOGY_NAME, BasicOntology.getInstance()); try { add(new PredicateSchema(PERSON), Person.class); PredicateSchema ps = (PredicateSchema) getSchema(PERSON); ps.add(PERSON_NAME,(PrimitiveSchema) getSchema(BasicOntology.STRING)); ps.add(PERSON_AGE,(PrimitiveSchema) getSchema(BasicOntology.INTEGER)); } catch (OntologyException oe) { oe.printStackTrace(); } }
Crer lontologie de message Crer lagent envoyeur Dclarer le content manager,le codec et lontologie Envoyer le message en ajoutant lontologie
ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID(<nom_receveur>",AID.ISLOCALNAME)); msg.setLanguage(codec.getName()); msg.setOntology(ontology.getName()); manager.fillContent(msg,<ontologie>); send(msg);
private ContentManager manager = (ContentManager)getContentManager(); private Codec codec = new SLCodec(); private Ontology ontology = PersonOntology.getInstance();
10
Ajouter le comportement
protected void setup() { manager.registerLanguage(codec); manager.registerOntology(ontology); addBehaviour(new ReceiverBehaviour(this));}
Behaviours
Graphe d hritage
Behaviour
Behaviour
SimpleBehaviour ReceiverBehaviour CompositeBehaviour
De nombreuses spcialisations
SenderBehaviour
Agent :
Constructeur :
void setup() void takeDown() ACLMessage receive([MessageTemplate mt]) ACLMessage blockingReceive([MessageTemplate mt[,long Timeout]]) void addBehaviour(Behaviour b)
Behaviour([Agent a]) void onStart() int onEnd() void action() boolean done()
11
Mthodes intressantes :
void block([long millisecondes]) void reset() Behaviour root() Agent myAgent CompositeBehaviour parent
Attributs:
DataStore
DataStore
Fonctionnement du DataStore
DataStore = HashMap
Mthodes :
Dans Behaviour :
Object get(Object Key) Object put(Object Key,Object Value) Object remove(Object Key) boolean containsKey(Object Key) boolean isEmpty() int size() etc...
Problme du DataStore
Pas de typage
FSMBehaviour
Finite State Machine Behaviour
mthode get retourne un Object ncessite un contrle fort sur les donnes
Enchaner squentiellement des Behaviours dans un ordre fix ou non par des transitions
12
Fonctionnement
Subtilits
Mthodes supplmentaires
registerFirstState(Behaviour b,String name) registerLastState(Behaviour b, String name) registerState(Behaviour b, String name) registerDefaultTransition(String from,String to) registerTransition(String from, String to, int event)
Crer un DataStore dans le FSMBehaviour Le partager par tous les tats ACLMessage performative = int
Protocoles
ContractNet :
ContractNetInitiator ContractNetResponder
Exemple
Initiator Responder1 Responder2 Responder3 cfp cfp cfp propose propose refuse accept-proposal reject-proposal inform
ContractNetInitiator
RECEIVE_CFP X PREPARE_PROPOSE_STATE X SEND_PROPOSE_STATE
PROPOSE
X X X RESET_STATE
REJECT_PROPOSAL TIMEOUT_EXPIRED
WAIT_ACCEPTANCE_STATE
ACCEPT_PROPOSAL
PREPARE_RESULT_NOTIFICATION_STATE X prepareResultNotification()
13
ContractNetResponder
PREPARE_CFPS X SEND_ALL X 0
prepareCfps()
A noter
DUMMY_FINAL
handleOutOfSequence () X X HANDLE_OUT_OF_SEQ
NOT_UNDERSTOOD
X CHECK_REPLY
REFUSE
Notion de Conversation Slot protocol fixer dans les messages Doit prendre en compte :
HANDLE_PROPOSE
INFORM
HANDLE_REFUSE X X X
HANDLE_NOT_UNDERSTOOD
FAILURE
handleNotUnderstood() X X
HANDLE_INFORM handleInform ()
HANDLE_FAILURE handleFailure ()
CHECK_ALL_REPLIES_RECEIVED
ALL_RESPONSES_RECEIVED ALL_RESULT_NOTIFICATION_RECEIVED
HANDLE_ALL_RESPONSES
HANDLE_ALL_RESULT_NOTIFICATIONS
Bibliographie
14