IFT6802 -- Travail pratique #3 -> Competition

version 1.1 - 16 mars. 2003

TP3 - a remettre le 23 mars avant 17h00.

Approvisionnement de restaurants

Vu la complexite apparente de Jade, j'ai decide de vous faire faire un TP3 qui servira de base a la competition de fin de cours.

Il s'agit de concevoir deux sortes d'agents: des Grossistes et des Restaurants. Chaque jour les Restaurants doivent s'approvisionner en achetant 10 caisses de viande, 10 caisses de fruits et 10 caisses de legumes au meilleur prix possible.

Les Grossistes fournissent un seul type de produit qu'ils achetent au debut de la journee a $10/caisse. Les Restaurants peuvent acheter directement des Coop et des Abattoirs; mais ca leur coutent $30/caisse. La competition portera sur la performance economique des Grossistes et des Restaurants

Pour le TP3, il s'agit de debuter avec des interactions simples entre des agents de votre conception puis de progresser vers des interactions plus generales entre vos agents et ceux des autres participants. On vous demande de realiser les trois etapes suivantes. Pour le TP3 vous utilisez votre propre plateforme ET PAS VELES.

Partie 1

Faire un Restaurant et un Grossiste avec des noms connus (y compris vos initiales), pe: JV_Resto & JV_Metro. Avec des messages comme query-ref et inform, le restaurant contacte le grossiste, qui lui dit ce qu'il vend: produit, categorie, prix. Le resto passe une commande avec "request" sur produit et quantite et recoit un "agree". Dans ce cas le "content" des messages est du texte:

	query-ref: "catalogue"
	inform:  categorie,produit,prix    ex:  legume,carottes,11.50
	request: "buy",produit,#caisses,prix    ex:  "buy",carottes,5,11.50
	agree:
Les classes seront "Resto1.java" et "Metro1.java" avec language "UM_Resto1"

Partie 2 (Modification)

Les choses se corsent. On vous demande d'employer le DF pour decouvrir les grossistes et de faire une premiere experience de marchandage. Pour cela vous allez traiter l'approvisionnement pour UNE SEULE categorie de nourriture, disons la Viande. Pour qu'il y aie un marche, ca prend plusieurs vendeurs et plusieurs acheteurs, donc vous devez prevoir 2 Grossistes (de Viande) et 2 Restaurants (les classes seront Viande2.java et Resto2.java). Ces agents parlent "UM_Resto2".

Vous devez aussi prevoir un agent Controlleur qui INFORM tous les participants du DEBUT et de la FIN de la journee apres un intervalle approprie (p.e. 1 minute).

Arrangez vous pour qu'il y aie du marchandage entre votre acheteur et ses fournisseurs. L'acheteur pouvant proposer d'acheter a un prix moindre que celui initiallement offert. Ceci devrait apparaitre dans vos traces [ A vous de trouver un juste equilibre dans le volume d'information imprimee ].

Une fois le message de FIN de journee recu, le Resto doit completer ses achats (au gros prix directement des Producteurs) et imprimer un mini rapport de ses depenses. Les grossistes font aussi leur bilan puis tous les agents quittent le systeme.

Partie 3: Ontologies et Protocoles

Experimenter avec l'emploi d'ontologies ainsi que des protocoles de negociation appropries pour le domaine et plus particulierement la competition decrite au debut. Publier vos propositions sous forme de RFC (request for Comment) expedie a la liste gift6802. Expediez vos propositions a partir du 14 mars. Voici les domaines a traiter:
	- Ontologie des objets
	- Forme des questions
	- Protocoles
	- Deroulement de la competition & criteres d'evaluation

Remise:

Pour la partie 3, expediez a gift6802. Pour les parties 1 et 2, utilisez "remise":

	% remise ift6802 tp3 

Le cadre d'execution pour les agents des parties 1 et 2 sera UN seul programme (main container) sur la machine locale ET pas de PACKAGE. La commande pourrait etre:

  %java jade.Boot  JV_Resto:resto1 JV_Metro:metro1

En tous cas, il est recommande d'avoir un fichier README avec des exemples des commande a faire qu'on peut essayer avec un simple COUPER/COLLER.


Note1: Pour le TP3, il ne sera pas necessaire d'interagir avec de agents des autres equipes

Note2: Vous devez prevoir des traces (ou une interface) qui demontrent le fonctionnement correcte de vos agents

PS: ce TP est inspire du Assignment #2 de D. Grimshaw (Ryerson). Voir: http://www.ryerson.ca/~dgrimsha/courses/cps720_02/assignments/ cps720a2_02.html