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

 > 

La génération des diagrammes UML à  partir de programme jade

( Télécharger le fichier original )
par Zina MECIBAH
Université l'Arbi Ben Mhidi d'Oum el Bouaghi -Algérie- - master informatique -Systèmes distribués- 2012
  

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

Chapitre i : La plate forme multi agents JADE

l'agent qui a fait la meilleure proposition. Ensuite, le gestionnaire et les contractants échangent les informations nécessaires durant l'accomplissement des tâches.

Figure 1.2: Etapes du protocole réseau contractuel [14]

L'avantage de ce protocole est que les rôles des agents ne sont pas spécifiés d'avance. Donc n'importe quel agent peut agir comme un gestionnaire ou bien comme un contractant. Cette flexibilité permet de nouvelles décompositions des tâches: un contractant pour une tâche spécifique peut agir comme un gestionnaire en décomposant sa tâche et en annonçant les sous-tâches à d'autres agents. Cependant, Un problème qui peut survenir avec le réseau contractuel est qu'une tâche puisse être attribuée à un contractant moins qualifié pour la résoudre si un contractant plus qualifié est occupé au moment de l'annonce des tâches.

Figure 1.3 : le protocole FIPA-Contract-net [4]

Generation des diagrammes AlliviL d _partir de _programmes JADE

Cha_pitre 1 : La _plate forme multi agents JADE

4. L'architecture logicielle de JADE

JADE fournit une couche homogène qui cache complètement la complexité et la diversité du réseau des agents et possède une architecture très précise permettant la construction dite « normalisée » d'agents (reprend l'architecture de l'Agent Management

) [Fer05] et

Reference Model proposé par FIPA inclut tous les composants obligatoires qui

contrôlent un SMA. Ces composants sont l'AMS, le DF et MTS.

Figure 1.4 : Architecture logicielle de la plate-forme JADE [Fer05]

1. AMS « Agent Management System » : dans JADE, il y a une méthode fournie par la classe Agent permet d'obtenir l'identifiant de l'agent AMS : getAMS().

2. DF « Directory Facilitator » : dans JADE, On a un DF par défaut dans le conteneur principal et pour obtenir l'identifiant de l'agent DF, la classe Agent fournie la méthode : getDefaultDF() .

Dans JADE, il faut utiliser le jade.domain.DFService pour chercher et/ou publier des services dans un DF [10] . Cependant, l e service DF propose quatre méthodes afin de pouvoir :

ü Enregistrer un agent dans les pages jaunes (register). « il est recommandé de faire le registre dans setup » [Fer05].

ü Supprimer un agent des pages jaunes (deregister) [Fer05]. « il est recommandé de faire le deregister dans takeDown» [Oli04].

ü Modifier le nom d'un service fourni par un agent (modify) [Fer05].

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

5. 2. La communication entre les agents JADE

Pour parler d'un véritable système multi-agents et non pas d'un ensemble d'agents agissant d'une manière individuelle, il est nécessaire de voir comment les agents communiquent et s'échangent les messages.

Chaque agent JADE possède une sorte de boite aux lettres sous forme d'une liste qui contient les messages « conformes aux spécifications de la FIPA (FIPA-ACL)» qui lui sont envoyés par les autres agents selon l'ordre chronologique de leur arrivée.

La classe ACLMessage du package jade.lang.acl de JADE représente les messages qui peuvent être échangés par les agents. Cependant, les informations nécessaires pour envoyer un message JADE sont: l'ensemble des récepteurs du message, le contenu du message et l'acte de communication. Cependant, 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() et lorsqu'un agent souhaite recevoir un message « La réception d'un message JADE est aussi simple que l'envoi » il suffit d'appeler la méthode reveive() ou la méthode blockingReceive() de la classe Agent pour récupérer le première message non encore lu de l'agent. Cependant, Tous les attributs de la classe ACLMessage peuvent être obtenus et modifiés par les méthodes set/get (). Le contenu des messages peut être aussi bien du texte que des objets car la sérialisation Java est supportée [Fer05].

Les messages JADE sont composés en général de :

ü L'émetteur du message : un champ rempli automatiquement lors de l'envoi d'un message.

ü L'ensemble des récepteurs du message : un message peut être envoyé à plusieurs agents simultanément.

ü L'acte de communication : qui représente le but de l'envoi du message en cours (informer l'agent récepteur, appel d'offre, réponse à une requête,...)

ü Le contenu du message.

ü Un ensemble de champs facultatifs : la langue utilisée, l'ontologie, le timeOut,

l'adresse de réponse...

Exemple d'envoi de message dans JADE [Ben09] ACLMessage message = new ACLMessage

(ACLMessage.« nom_de_acte_de_communication »); message.addReceiver(«nom_du_recepteur » );

Generation des diagrammes AlliviL d partir de programmes JADE

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








"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"   Milan Kundera