Chapitre i : La plate forme multi agents JADE
message.setContent(«contenu_du_message
») ;
send (message);
Exemple de réception de message dans JADE
[Ben09] ACLMessagemessageRecu = receive();
Un message ACL dispose obligatoirement des champs suivants :
Performative
|
type de l'acte de communication
|
Sender
|
expéditeur du message
|
Receiver
|
destinataire du message
|
reply-to
|
participant de la communication
|
content
|
contenu du message
|
language
|
description du contenu
|
encoding
|
description du contenu
|
ontology
|
description du contenu
|
protocol
|
contrôle de la communication
|
conversation-id
|
contrôle de la communication
|
reply-with
|
contrôle de la communication
|
in-reply-to
|
contrôle de la communication
|
reply-by
|
contrôle de la communication
|
|
Tab 1.2 : les champs d'un message ACL en JADE
[Fer05]
Remarque
ü C'est très souvent le Behaviour qui crée le
message, mais il délègue à l'agent l'envoi
(Agent.send()), et la réception (Agent.receive()).
ü l'une des forces de la POA par rapport à la
POO, est l'aptitude d'un agent à refuser de considérer, de
traiter des messages. Dans Jade cela se fait au moyen d'une instance de la
classe jade.lang.acl.TemplateMessage que l'on passe en
paramètre à la méthode Agent.receive().
ü Il n'y a pas de dépendance temporelle entre les
agents communicants.
ü L'émetteur et le récepteur peuvent ne
pas être joignables en même temps.
ü Le récepteur peut même ne pas exister ou
ne pas être directement connu de l'émetteur, par exemple: «
tous les agents intéressés par la musique » comme
destination [Zac09].
ü la Communication est Peer-to-Peer
[5].
Chapitre i : La plate forme multi agents JADE
5. 3. Les comportements « Behaviours » en
JADE
L'une des propriétés importante d'un agent est
son autonomie : un agent ne doit pas se limiter à réagir aux
événements externes, mais il doit être aussi capable de
prendre l'initiative de nouveaux actes communicatifs d'une façon
autonome et doit être capable de gérer plusieurs tâches de
manière concurrente en réponse à différents
évènements extérieurs. Afin de rendre efficace cette
gestion chaque agent de JADE est composé d'un seul thread et non un
thread par comportement. Cela signifié qu'un agent exécute un
Behaviour à la fois mais l'agent peut exécuter plusieurs
Behaviours simultanément en choisissant un bon mécanisme de
passation d'un Behaviour à un autre (c'est à la charge du
programmeur et non pas à la charge du JADE) [BYo09].
Un agent JADE utilise l'abstraction Comportement pour
modéliser les tâches qu'un agent peut exécuter et les
agents instancient leurs comportements selon leurs besoins et leurs
capacités. Cependant, Les comportement d'un agents JADE sont des
instances de la classe jade.core.behaviours et pour qu'un agent
exécute une tâche on doit le lui attribuer par la méthode
addBehaviour(Behaviour b) de la classe jade.core.Agent. Donc
un comportement d'un agent est la conséquence:
ü De ses observations de l'environnement.
ü De ses connaissances.
ü De ses interactions avec les autres agents.
Pour implémenter un comportement, le développeur
doit définir un ou plusieurs objets de la classe Behaviour, les
instancier et les ajouter à la file des tâches de l'agent. Il est
à noter qu'il est possible d'ajouter des comportements et
sous-comportements à un agent ailleurs que dans la méthode setup
().
Tout objet de type Behaviour dispose :
1. d'une méthode action () (qui constitue le
traitement à effectuer par celui-ci)
2. d'une méthode done() (qui vérifie si
le traitement est terminé).
Il existe également quelques méthodes
supplémentaires afin de gérer les objets Behaviour:
1. reset () qui permet de réinitialiser le
comportement;
2. onStart () qui définit des opérations
à effectuer avant d'exécuter la méthode action();
Generation des diagrammes AlliviL d partir de programmes
JADE
|