Chapitre i : La plate forme multi agents JADE
ü Rechercher un service (search)
[Fer05].
Donc les deux agents DF et AMS permettent de maintenir une
liste des services et des adresses de tous les autres agents de la
plate-forme.
3. MTS: MTS est un service permet la
communication entre plusieurs plates-formes mais MTS sera chargé
à la demande pour ne conserver par défaut que les
fonctionnalités utiles à tout type d'utilisation
[Fer05].
La plate-forme multi agent JADE peut être
distribué sur plusieurs machine « les machines pas
nécessairement possèdent le même système
d'exploitation » et les configurations peuvent être modifié
au démarrage des agents en les déplaçant d'une machine
à une autre, ce qui permet une très grande portabilité des
agents [9].
5. Les agents JADE
De point de vue de la programmation concurrente, un agent est
un objet actif, ayant un thread de contrôle. Ainsi que JADE
utilise un modèle de programmation concurrente "un thread-par-agent" au
lieu d'un modèle "un thread-par-comportement" pour éviter une
augmentation du nombre de threads d'exécution exigés sur la
plate-forme d'agents.
L'agent Jade est conforme au standard FIPA 2002 et il
possède toujours un état (APACTIVE, AP-DELETED...).
Dans JADE : Tout est objet : un agent est constitué de
plusieurs classes, dont certaines
clefs :
ü Tout agent hérite de la classe :
jade.core.Agent. « La classe Agent représente une
super-classe commune pour tous les agents définis par l'utilisateur
».
ü L'identifiant d'un agent est une instance de la classe :
jade.core.AID.
Les agents JADE sont actifs (ils peuvent dire Non et ils sont
faiblement couplés), communiquent et interagissent avec les autres
agents grâce à des messages et rend des services.
D'un point de vue plus technique, Jade est orienté
vers une programmation concurrente où chaque agent est en «
compétition ». Les concepteurs de Jade ont ainsi fait le choix de
créer un thread (code parallelisable) par agent plutôt qu'un
thread par comportement. Néanmoins, via le planificateur de
tâches, un comportement peut se bloquer lui même pour éviter
de gaspiller du CPU (Ex : pendant qu'il attend des messages).
Un agent se défini en étendant la classe
jade.core.Agent :
Generation des diagrammes AlliviL d _partir de
_programmes JADE
Cha_pitre i : La _plate forme multi agents
JADE
import jade.core.agent;
public class monAgent extends Agent;
Chaque agent est identifié par un AID qui est
récupérable via la méthode getAID(). Enfin pour
personnaliser l'agent, il est obligatoire dans la méthode
setup():
ü Enregistrer les langages de contenu.
ü Enregistrer les Ontologies.
ü Enregistrer les Services auprès du DF.
ü Démarrer les Comportements (behaviors).
Le nom d'un agent est défini sous la forme :
<nom-agent>@<nom-plate-forme> et il doit être globalement
unique (sur toutes les plateformes).
Les principales méthodes de la classe agent sont
les suivantes :
ü getArguments() : pour obtenir les arguments d'un
agent.
ü doDelete() : pour tuer un agent.
ü takeDown() : appelée quand un agent meurt
.
Exemple d'agent JADE:
package firstAgent; import jade.core.Agent;
/** This example shows a minimal agent that just prints
"Hello World!" and then terminates. */
public class HelloWorldAgent extends Agent {
protected void setup()
{
System.out.println("Hello World! My name is
"+getLocalName()); // Make this agent terminate
doDelete();
}
}
5. 1. Le cycle de vie d'un agent JADE
Un agent JADE peut être dans l'une des
différents états de son cycle de vie définis par les
spécifications FIPA. Ces états sont représentés par
des constantes dans la classe Agent qui figure dans les packages
fournis avec la plateforme JADE :
Generation des diagrammes AllitiL d _partir de
_programmes JADE
Cha_pitre i : La _plate forme multi agents
JADE
Figure 1.5: Le cycle de vie d'un agent JADE
[4]
ü AP INITIATED : l'objet Agent est construit, mais
il n'est pas encore enregistré dans _
l'AMS, il ne possède ni un identificateur ni une adresse
et ne peut pas communiquer avec d'autres agents.
ü AP_ACTIVE : l'objet Agent est enregistré
avec l'AMS, il possède un nom correct et peut accéder à
toutes les caractéristiques du JADE.
ü AP_SUSPENDED : l'objet Agent est actuellement
stoppé. Son thread interne est suspendu et aucun comportement ne peut
s'exécuter.
ü AP WAITING : l'objet Agent est bloqué.
Son thread interne est en sommeil. Il peut se _
réveiller quand une condition est vérifiée
(typiquement quand un message arrive).
ü AP_DELETED : l'exécution du thread
interne de l'agent est terminée. L'agent n'est plus enregistré
avec l'AMS.
ü AP_TRANSIT : un agent mobile entre dans cet
état quand il migre à un nouvel emplacement. Le système
continue à mémoriser les messages afin de les lui envoyer au
nouvel emplacement.
ü AP COPY : cet état est utilisé
intérieurement par le JADE pour cloner un agent. _
ü AP_GONE : cet état est utilisé
intérieurement par le JADE quand un agent mobile a migré vers un
nouvel emplacement et a pris un état stable.
La classe Agent fournit avec JADE possède des
méthodes publiques qui permettent de changer l'état d'un objet
Agent. Par exemple, la méthode doWait () permet de
passer un agent de l'état AP_ACTIVE à l'état
AP_WAITING.
Generation des diagrammes A11.7v1L d _partir de
_programmes JADE
Cha_pitre 1 : La _plate forme multi agents
JADE
|