Rapport – Fishmarket

advertisement
Mathieu Castets
Master 2 TI
Année 2012-2013
Rapport – Fishmarket
UE Systèmes Multi-Agents
Introduction
Ce dossier présente le programme implémentant le protocole d’enchère au poisson
(Fishmarket) vu en cours grâce aux agents. Le code fourni en annexe ainsi que le programme
implémente le protocole dans la version la plus avancée « Plusieurs enchères, un vendeur et un
nombre quelque de preneurs par enchère »
Architecture du programme
Le projet Fishmarket a été développé sous l’IDE NetBeans. Il est
découpé en 3 paquetages comme le montre la figure ci-contre.

Package « agents »
Ce package contient les 3 agents nécessaires pour utiliser le
protocole. Chaque instance d’agent à sa propre interface
graphique.
Le fichier Buyer.java contient le code de l’agent Acheteur.
Le fichier Market.java contient le code de l’argent Marché, aussi
appelé Modérateur. Ce fichier est au centre du protocole, il gère
le protocole d’enchère et fait la liaison entre les agents
acheteurs et vendeurs.

Package « gui »
Ce package contient les interfaces graphiques pour chaque agent. On retrouve donc logiquement 3
fichiers : un fichier pour chaque agent.

Package « utils »
Ce package contient des classes utilisées pour communiquer entre les agents.
Le fichier Bid.java représente une enchère et contient forcement l’identifiant de l’agent vendeur et le
montant de son enchère et peut contenir éventuellement l’identifiant d’un agent preneur.
Le fichier Message.java représente le contenu d’un message ACL dans JADE. Cette classe est
sérializable et nous permet, de passer en paramètre d’un message ACL de nombreuses informations
(action à réaliser, enchère correspondante, …) plutôt qu’une simple chaine de caractères.
Mathieu Castets
Master 2 TI
Année 2012-2013
Ces classes servent à formaliser les paramètres que les agents doivent s’échanger. Par exemple, lors
d’une annonce, le vendeur diffusera, via un objet de notre classe Message, une enchère (= un objet
de notre classe Bid).
Choix de conception/Informations additionnelles





Lorsqu’un agent a choisi son mode de contrôle, il récupère la liste de toutes les enchères en
cours en faisant une demande de type TO_SUBSCRIBE au modérateur.
Lorsqu’un agent participe à une enchère, il doit attendre une réponse (positive s’il reçoit un
message de type TO_ATTRIBUTE ou négative) pour pouvoir participer à une autre enchère.
Deux modes de contrôle d’un agent acheteur sont proposés (automatique ou manuel), le
choix de ce mode se fait dans un 1er écran et ne peut plus être modifié par la suite comme le
montre les captures d’écrans ci-dessous.
En bas de l’interface des agents vendeurs et acheteurs se trouve un espace qui a été réservé
aux messages d’informations afin de pouvoir suivre plus aisément le déroulement des
enchères et d’avoir des retours sur ce qu’il se passe.
Lors du lancement du programme, les interfaces des agents seront à gauche, celle du
modérateur sera centrée tandis que les interfaces des vendeurs se trouveront à droite.
Cependant il se peut que les fenêtres d’une même catégorie d’un agent se superposent car
leur placement vertical est aléatoire.
Figure 1 - Initialisation et choix du mode de contrôle pour les acheteurs
2
Mathieu Castets
Master 2 TI
Année 2012-2013
Figure 2 - Capture d'écran du programme après initialisation
3
Mathieu Castets
Master 2 TI
Année 2012-2013
Directives d’exécution
Le programme a été développé avec NetBeans, il est donc facile de l’exécuter sous cet
environnement :
1. Importer le projet dans NetBeans
2. Créer une configuration de lancement spécifique comme ci-dessous :
La liste des arguments complète est :
-gui -local-host 127.0.0.1
"Victor:agents.Seller(modo);Vincent:agents.Seller(modo);Aurore:agent
s.Buyer(modo);Anne:agents.Buyer(modo);modo:agents.Market"
Il est important de préciser le nom de l’agent Marché (ici modo) en paramètre des agents vendeurs
et acheteurs. Cette liste peut être modifiée à votre convenance si vous voulez plus ou moins d’agents
vendeurs/preneurs.
3. Construire/Run le projet
Bien que la méthode NetBeans soit celle que je vous conseille le plus, il est aussi possible de se
passer de NetBeans en configurant le CLASSPATH pour les libraires de jade puis en se plaçant dans le
dossier des sources .java (Fishmarket/src) et en lançant la commande suivante :
java jade.Boot -gui -local-host 127.0.0.1
"Victor:agents.Seller(modo);Vincent:agents.Seller(modo);Aurore:agent
s.Buyer(modo);Anne:agents.Buyer(modo);modo:agents.Market"
4
Mathieu Castets
Master 2 TI
Année 2012-2013
Spécification du comportement
Vendeur
Acheteur
5
Mathieu Castets
Master 2 TI
Année 2012-2013
Spécification de modérateur
Le Réseau de Pétri est le même que celui vu en TD. Malheureusement, je n’ai pas réussi, par manque
de temps, à trouver un outil gratuit permettant de dessiner des réseaux de Pétri celui-ci sur
ordinateur, je me permets d’emprunter celui-ci.
Figure 3 - Source : http://seminaire-verif.enseeiht.fr/FAC/2000/Papiers/9sibertin.pdf
6
Téléchargement