Chapitre i : La plate forme multi agents JADE
3.2.FSMBehaviour :
FSMBehaviour est une sorte de Behaviour qui
implémente un automate à états finis dont chaque
état correspond à l'exécution d'un sous-Behaviour.
3.3.ParallelBehaviour : Le
parallelBehaviour est un Behaviour qui permet d'exécuter
plusieurs Behaviours en parallèle. L'ajout de sous-Behaviour se fait par
la méthode addSubBehaviour(). Si on veut que le
parallelBehaviour termine dès qu'un de ses sous-Behaviours
termine alors on doit passer à son constructeur l'argument
WHEN_ANY et pour attendre la fin de tous les sous-Behaviours on doit
lui passer l'argument WHEN_ALL.
3.4.Combiner plusieurs Behaviours composés
: Il est possible de combiner les différents comportements
composés pour créer des comportements plus complexes.
Remarque
ü Pour Enlever un comportement on utilise la méthode
: removeBehaviour (...).
ü S'il n'existe pas un comportement donc l'agent est
Mis en veille .
ü La méthode Behaviour.block() permet de mettre
l'agent en sommeil afin de ne pas consommer de ressources systèmes en
attendant un nouvel événement (ou message), comme il pourrait le
faire avec une boucle infinie. L'agent est alors dormant jusqu'à ce
qu'il reçoive un nouveau message dans sa mailbox.
Exemple d'utilisation des Behaviours simples
[BYo09]:
Import jade.core.Agent;
Import jade.core.behaviours.Behaviour;
Import jade.core.behaviours.CyclicBehaviour;
Import jade.core.behaviours.OneShotBehaviour;
public class SimpleAgent extends Agent {
protected void setup() {
// Ajouter un OneShotBehaviour
addBehaviour(new OneShotBehaviour(this) {
Generation des diagrammes AlliviL d partir de programmes
JADE
Chapitre i : La plate forme multi agents JADE
Public void action() {
System.out.println ("***Bonjour tous le monde \n je suis
l'agent : " + getLocalName() + " ***");
}
})
// ajouter un CyclicBehaviour qui affiche chaque fois :
cyclique
addBehaviour(new CyclicBehaviour(this) {
public void action()
{
System.out.println("cyclique... ");
}
});
addBehaviour(new RandomBehaviour());
}
private class RandomBehaviour extends
Behaviour
{
private int aleatoire ;
public void action()
{
aleatoire = (int) (Math.random()*10);
System.out.println("aleatoire ="+ aleatoire);
}
public boolean done() {
Return aleatoire == 4;
}
Generation des diagrammes AllitiL dyartir de yrogrammes
JADE
Chayitre 1 : La ylate forme multi agents
JADE
public int onEnd()
{
myAgent.doDelete(); return super.onEnd();
}
}}
5. 4. Le service page jaune « DF »
Le dialogue avec l'agent DF se fait à partir d'un objet
appelé DFAgentDescription, qui donne la description (les
services) d'un agent que connaitra l'agent DF. Dans un premier temps, il faut
créer cette description :
DFAgentDescription dfd = new DFAgentDescription
()
La définition d'un service se fait à partir de la
classe ServiceDescription : ServiceDescription sd = new
ServiceDescription();
sd.setType(<nom_type_service>);
sd.setName (<nom_service>);
Lorsque le service est créé, il faut enfin
l'ajouter dans le DFAgentDescription de l'agent, puis enregistrer
cette description au DFAgent :
dfd.addServices(sd);
try
{
DFService.register(this, dfd);
}
catch (FIPAException e)
{
<code d'erreur>
}
A partir d'une certaine DFAgentDescription, recensant un ensemble
de services, il est alors possible de rechercher des agents proposant ses
services :
1. Création de la DFAgentDescription comprenant nos
services recherchés : DFAgentDescription dfd = new
DFAgentDescription();
ServiceDescription sd = new
ServiceDescription();
sd.setType( "buyer" );
Generation des diagrammes AlliviL d partir de programmes
JADE
|