WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception et réalisation d'un système multi-agents pour les enchères en ligne

( Télécharger le fichier original )
par Chouchane Sahraoui Yacine Med Redha
Université Larbi Ben M'Hidi Algérie - Ingénieur d'état en informatique 2009
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Annexe A.

~ Le progres technologique n'abolitpas les obstacles; il en change simplement la nature o - Huxley, Aldous

La plate~~orme Jade

Java Agent DEvelopment Framework

1. Introduction

Pour construire un système multi-agent (SMA) on utilise une plate-forme multi-agent. Une plate-forme multi-agent est un ensemble d'outils nécessaire a la construction et a la mise en service d'agents au sein d'un environnement spéci fique. Ces outils peuvent servir également ' l'analyse et au test du SMA ainsi créé. Ces outils peuvent etre sous la forme d'environnement de programmation (API) et d'applications permettant d'aider le développeur. Nous allons étudier dans cette partie la plate-forme JADE(Java Agent DEvelopment framework).

2. Bref description de JADE

JADE (Java Agent DEvelopement framework) est une plate-forme multi-agent créé par le laboratoire TILAB et décrite par Belli femine et al. Dans [BEL 99], [BEL 00]. Elle permet le développement de systèmes multi-agents et d'applications con formes aux normes FIPA. Elle est implémentée en JAVA et fourni des classes qui implémentent o JESS » pour la dé finition du comportement des agents. JADE possède trois modules principaux (nécessaire aux normes FIPA).

· DF « Director Facilitor » ;

· ACC «Agent Communication Channel »;

· AMS « Agent Management System ».

Ces trois modules sont activés à chaque démarrage de la plate-forme.

3. Architecture logiciel de la plate-forme JADE

Chaque instance de l'environnement d'exécution de JADE s'appelle un conteneur (container) car il peut contenir plusieurs agents. L'ensemble des conteneurs acti fs s'appelle une plate forme. Dans une plate forme, un conteneur spécial appelé conteneur principal (Main-container) doit toujours etre en activité, les autres conteneurs s'enregistrent auprès de celui-ci des qu'ils démarrent. Le conteneur principal héberge les agents techniques de Jade (DF, AMS, RMA, DummyAgent, ...).

La figure suivante représente des modules sous forme des services de base qui sont le Directory Facilitator (DF) et l'Agent Management System (AMS), mais le service (MTS) sera chargé a la demande, L'AMS est un autre composant important car ce service e ffectue la correspondance entre l'agent et leur identi ficateur (AID), Il n'y a qu'un AMS par plate-forme.

Fig.1 : Architecture logiciel de La plate-forme JADE.

4. Architecture de la bibliotheque des classes

JADE est compose des packages suivantes :

- JADE.CORE : implante le noyau du systeme et possede les classes 'Agent' et'behaviours' - Le package JADE.LANG : contient un sous package' JADE.LANG.ACL' pour chaque langage de communication utilise jade.

- JADE.CONTENT : contient l'ensemble du classes qui definissent les ontologie.

- JADE.DOMAIN : contient toutes les classes java qui representent les entites agent management definies par FIPA particulierement AMS, DF.

- JADE.GUI : contient les classes utiles pour creer des GUIs,l'edition des messages et la description des agents.

- JADE.MTP : contient une interface java que chaque MIP (MESSAGE TRANSPORT PROTOCOL) doit implementer.

- JADE.PROTO : contient les classes qui modelisent les protocoles standards d'interaction, et permettre aux programmeurs d'ajouter d'autres protocoles.

5. Outils de debogage de JADE

Pour supporter la tâche difficile du débogage des applications multi-agents, des outils ont été développés dans la plate-forme JADE. Chaque outil est empaqueté comme un agent, obéissant aux mêmes règles, aux mêmes possibilités de communication et aux mêmes cycles de vie d'un agent générique (agentification de service).

5.1. Agent RMA (Remote Management Agent) :

Le RMA permet de contrôler le cycle de vie de la plate-forme et tous les agents la composant. L'architecture répartie de JADE permet le contrôle a distance d'une autre plate-forme. Plusieurs RMA peuvent etre lances sur la meme plate-forme du moment qu'ils ont des noms distincts.

Figure 2 : L'interface de l'agent RMA

5.2. Agent Dammy

Cette interface permet la composition et l'envoi de messages ACL et maintient une liste de messages ACL envoyés et recus. Cette liste peut etre examinée par l'utilisateur et chaque message peut etre vu en détail ou meme édité.ou bien le sauvegardé sur le disque et renvoyé plus tard.

Figure 3 : L'interface de l'agent Dammy.

5.3. Agent Direcory Facilitator

L'inter face du DF peut etre lancée a partir du menu du RMA .Cette action est en fait implantée par l'envoi d'un message ACL au DF lui demandant de charger son interface graphique. L'inter face peut etre juste vue sur l'hOte oil la plate-forme est exécutée. En utilisant cette interface, l'utilisateur peut interagir avec le DF.

Figure 4 : L'interface de l'agent DF.

5.4 Agent Sniffer

Quand un utilisateur décide d'épier un agent ou un groupe d'agents, il utilise un agent sniffer. Chaque message partant ou allant vers ce groupe est capté et affiché sur l'interface du sniffer.

Figure 5 : L'interface de l'agent Sniffer

5.5 Agent Inspector

Cet agent permet de gérer et de contrôler le cycle de vie d'un agent s'exécutant et la file de ses messages envoyés et reçus.

Figure 6 : L'interface de l'agent Inspector.

6. Cycle de vie d'un agent

Figure7 : Le cycle de vie d'un agent.

Voici la description des di fférents états d'un agent en accord avec la spéci fication de la FIPA :

-Initiated : l'objet agent est créé mais n'est pas encore enregistré aupres du service de nommage (AMS).

- Active : l'objet agent est enregistré aupres du service de nommage (AMS), il possède désormais une adresse unique et peut donc communiquer avec les autres agents.

- Suspended : l'exécution de l'agent est suspendu.

- Waiting : l'agent est bloqué et doit attendre un événement comme un message par exemple. -Transit : l'agent rentre dans cet état lorsqu'il migre dans un autre conteneur.

-Deleted : l'agent est détruit et supprimé du service de nommage (AMS).

7. Les Behaviours (Comportements)

Un comportement dé finie les taches qu'e ffectue un agent. Quelque soit le type du Behaviour, il doit implémenter la méthode action() qui dé finit la séquence des instructions a exécuter et lorsque la méthode done() retourne true elle s'arrete.

La méthode block() d'un comportement permet de bloquer ce dernier. Suite a l'arrivée d'un

nouveau message.

Pour ajouter un comportement a la file des comportements de l'agent, on utilise la méthode addBehaviour(new BehaviourClass(Parametres)) de la classe 'agent'.

On distingue plusieurs types de comportement, les plus utilisés sont:

- Classe o Behaviour o : c'est la classe de base a partir de laquelle sont dérivés les autres classes de Behaviours.

Exemple :

public class MonBehaviour extends Behaviour{

// Ici vous pouvez declarer des variables

// Un Behaviour possède un constructeur

public MonBehaviour(/*paraml, param2,...*/){

// Initialisation du Behaviour.

}

public void action(){

// Traitement

// cette méthode est exécutée jusqu'a ce que la méthode done() retourne true.

}

public boolean done() {

return valeurBooleenne;

}
}

- Classe OneShotBehaviour : c'est une spécialisation de la précédente, la méthode action() est exécutée une seule fois (par dé faut, la méthode done() retourne true). Donc vous n'avez pas a redé finir la méthode done().

- Classe CyclicBehaviour : la méthode action() est exécutée en répétition, la méthode done() retourne false. N'oublier pas de bloquer le Behaviour a la fin de la méthode action(), car il fait une boucle infinie (gaspillage de CPU). Le Behaviour sera débloqué quand un nouveau message est inséré dans la file de l'agent.

- Classe WakerBehaviour: la méthode action() est exécutée apres un temps donne en parametre (exprime en millisecondes) et une seule fois.

- Classe TickerBehaviour : la méthode action() est exécutée chaque t milliseconde (t est donne en parametre a la creation du Behaviour).

8. Communication entre agents

La communication entre agents se fait par un langage qui est FIPA-ACL(Agent Communication language). La classe ACLMessage représente les messages qui peuvent être échangés par les agents. La communication de messages se fait en mode asynchrone. Lorsqu'un agent souhaite envoyer un message, il doit créer un nouvel objet ACLMessage, compléter ces champs avec des valeurs appropriées et enfin appeler la méthode send(). Lorsqu'un agent souhaite recevoir un message, il doit employer la méthode receive() ou la méthode blockingReceive().

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 :Les champs d'un message ACL.

Tous les attributs de la classe ACLMessage peuvent etre obtenus et modi fies par les methodes set/get(). Le contenu des messages peut etre aussi bien du texte que des objets car la serialisation Java est supportee.

8.1. Envoi d'un message

Exemple : Le code suivant correspond a l'envoi d'un message a l'agent « Yacine » dans le but de l'in former que (Le match de football est termine)

ACLMessage msg = new ACLMessage (ACLMessage.INFORM); msg.addReceiver (new AID ("Yacine", AID.ISLOCALNAME)); msg.setLanguage (" Francais ");

msg.setOntology (" match");

msg.setContent ("le match de football est terminé ");

send (msg);

8.2. Reception d'un message.

Exemple : on bloque le comportement jusqu'a l'arrive du msg.

ACLMessage msg = receive (); I f (msg! = null) {

// traiter le message

}Else { Block ();

}

. Conclusion

Le rôle de la plate-forme JADE est de réaliser la couche communication inter-agents de façon à pouvoir faire une argumentation sans l'intervention de l'humain et donc dans cette optique de les rendre autonome. On se sert pour cela du langage ACL pour que les agents s'échangent leurs messages.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"En amour, en art, en politique, il faut nous arranger pour que notre légèreté pèse lourd dans la balance."   Sacha Guitry