Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 91 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
91
Dung lượng
1,11 MB
Nội dung
L’Institut de la Francophonie pour l’Informatique L’unité de recherche Geodes, Institut de Recherche pour le Développement (UR079, IRD) Master INTELLIGENCE ARTIFICIELLE ET MULTIMEDIA, 2ème année, Spécialité RECHERCHE Année universitaire 2006 – 2008 Implantation des protocoles de communication FIPA dans la plate-forme GAMA Mémoire présenté par VO Duc An Stage effectué l’UR079, IRD Bondy et au laboratoire MSI, IFI Directeur : Alexis DROGOUL – Directeur de Recherche, UR079, IRD HaNoi, Septembre 2008 L’Institut de l’Informatique la Francophonie pour L’unité de recherche Geodes, Institut de Recherche pour le Développement (UR079, IRD) Master INTELLIGENCE ARTIFICIELLE ET MULTIMEDIA, 2ème année, Spécialité RECHERCHE Année universitaire 2006 – 2008 Implantation des protocoles de communication FIPA dans la plate-forme GAMA Mémoire présenté par VO Duc An Stage effectué l’UR079, IRD Bondy et au laboratoire MSI, IFI Directeur : Alexis DROGOUL – Directeur de Recherche, UR079, IRD HaNoi, Septembre 2008 Remerciements Je tiens remercier tout particulièrement Alexis DROGOUL pour m’avoir encadré ces six mois En fait, j’ai de la chance de travailler sous la direction de Alexis DROGOUL dans le projet GAMA depuis plus d’un an Il est un professeur extraordinaire Je le remercie pour son amitié, sa patience avec mes questions souvent stupides, son encouragement, son soutien, et la liberté de recherche qu’il a bien voulu me laisser Les moments où il m’a aidé faire le debug sur Eclipse sont des moments inoubliables pour moi Je remercie Quang de son amitié, son encouragement et son soutien tout au long de ce travail Je le remercie pour son aide Bondy ainsi qu’à MSI Je lui souhaite tout le succès pour sa thèse Je remercie François Sempé d’avoir accepté de rapporter sur ce travail Je remercie Minh Thu, Khanh, Edouard et Doanh pour leur amitié, leur aide pour le temps MSI Je remercie chaleureusement mes camarades de la promotion XII pour leur amitié sans faille et leur souhaite bonne chance pour la soutenance Je remercie les professeurs de l’IFI pour leurs aides pendant ces derniers trois ans IFI Enfin, je remercie mes parents pour leur soutien et leur encouragement tout instant Je leurs dédie ce travail Tableaux des matières I Introduction II Problème actuel et les protocoles d’interaction de FIPA II.1 Problème actuel de la communication dans GAMA II.2 Les protocoles d’interaction de FIPA II.2.1 Message FIPA ACL II.2.2 Protocole d’interaction « FIPA Request » III L’implémentation des protocoles d’interaction de FIPA dans GAMA 11 III.1 Diagramme de classe 11 III.2 Structure d’un « Message » 12 III.3 Abstraction des protocoles d’interaction 13 III.4 Mécanisme d’envoi et de réception d’un message 16 III.5 Vérification d’un message avec le protocole d’interaction employé 17 III.6 Langage GAML 18 III.6.1 Les primitifs, les variables, les objets d’un agent communicant 18 III.6.2 Exemple de GAML 21 IV Validation dans le modèle « fourmis » 25 IV.1 Le modèle « fourmis » original 25 IV.2 Le modèle « fourmis » avec la communication 27 IV.2.1 Fonctionnement du modèle 27 IV.2.2 La communication entre les agents 29 IV.2.3 Le fonctionnement du nouveau modèle dans GAMA 31 IV.3 Commentaire sur le fonctionnement de deux versions de « fourmis » 31 V Validation dans le modèle « AROUND » 33 V.1 Modèle AROUND original 33 V.2 Modèle AROUND avec la communication 35 V.3 Commentaire sur le fonctionnement de deux versions de « AROUND » 43 VI Conclusion et perspectives 48 Bibliographie 50 Annexe 51 Annexe A – Code source du modèle « fourmis » avec la communication 51 Annexe B – Code source du modèle AROUND avec la communication 59 Tableau des figures Figure - L’architecture d’une plate-forme d’agent proposée par FIPA Figure - Protocole d’interaction « FIPA Request » 10 Figure - Les classes principales de l’implémentation 11 Figure - Structure d’un message 12 Figure - Les protocoles d’interaction de FIPA implémentés dans GAMA 13 Figure - Modélisation d’un protocole d’interaction 13 Figure - Protocole d’interaction FIPA Request 15 Figure - Itinéraire d’un message de l’envoyeur au récepteur 16 Figure - Un message respecte le protocole d’interaction employé 17 Figure 10 - Un message ne respecte pas le protocole d’interaction employé 18 Figure 11 - Protocole d’interaction FIPA Request 22 Figure 12 - Le comportement d’une fourmi dans le modèle « fourmis » original 25 Figure 13 - Le modèle « fourmis » original 26 Figure 14 - Le comportement d’un « foodFinder » 28 Figure 15 - Le comportement d’un « foodCarrier » 28 Figure 16 - Protocole « FIPA Contract Net » dans le modèle « fourmis » 29 Figure 17 - Protocole « No Protocol » entre foodCarrier et foodFinder 30 Figure 18 - Modèle « fourmis » avec la communication dans GAMA 31 Figure 19 - Deux ambulances vont prendre une même victime 34 Figure 20 - Relation entre military et explorer 36 Figure 21 - Procotole d’Interaction FIPA Request entre military et explorer 36 Figure 22 - Protocole d’Interaction « No Protocol » entre explorer et military 37 Figure 23 - Relation entre military et fireman 37 Figure 24 - Protocole d’Interaction FIPA Request entre military et fireman 38 Figure 25 - Protocole d’Interaction FIPA Request entre military et hospital 39 Figure 26 - Protocole d’Interaction « No Protocol » entre military et hospital 39 Figure 27 - Relation entre hospital et ambulance 40 Figure 28 - Protocole d’Interaction FIPA Request entre ambulance et hospital 40 Figure 29 - Protocole d’Interaction « No Protocol » entre les hôpitaux 41 Figure 30 - Protocole d’Interaction « No Protocol » entre hospital et ambulance 41 Figure 31 - Protocole d’Interaction FIPA Request entre hospital et ambulance 42 Figure 32 - Protocole d’Interaction FIPA Request When entre hospital et ambulance 43 Figure 33 – Repartition des ambulances dans la version originale 44 Figure 34 – Repartition des ambulances dans la nouvelle version 45 Figure 35 - Repartition des voitures des pompiers dans la version originale 46 Figure 36 - Repartition des voitures des pompiers dans la nouvelle version 47 I Introduction GAMA (GIS & Agent-based Modelling Architecture) est une plateforme générique pour la modélisation et simulation orientée agent GAMA est actuellement développée au sein du laboratoire MSI et est financée principalement par l’IRD Ce projet regroupe plusieurs partenaires : IFI, IRD, CIRAD, EDF Le développement de cette plateforme est en parallèle avec l’implémentation de plusieurs modèles complexes qui appartiennent différents domaines La diversité des modèles développés nous aide vérifier la généralité de la plateforme et l’assurer d’une part Elle sert également découvrir les fonctionnalités manquantes de la plateforme d’autre part En observant le déroulement de la simulation de quelques modèles, nous avons fait le constat qu’il n’existe pas encore actuellement de mécanisme de communication standardisé entre les agents dans GAMA En raison de cette absence, le fonctionnement de ces modèles peut ne pas être réaliste, n’est pas efficace et parfois n’est pas correct Sans un mécanisme de communication, il n’est par exemple pas possible ou difficile pour les modélisateurs d’implémenter de mécanismes de coordination entre les agents Ce stage de fin d’étude a donc pour but d’implémenter des protocoles de communication dans GAMA et de valider le fonctionnement de ces protocoles en les utilisant dans quelques modèles existants Ce rapport présente le travail réalisé au cours du stage Il se compose de six parties Cette première partie donne une présentation générale du stage La deuxième partie introduit le problématique : la nécessité d’introduire des protocoles d’interaction dans GAMA Dans la troisième partie, l’implémentation de ces protocoles dans GAMA est détaillée Les quatrième et cinqième parties présentent la validation du travail réalisé Dans la quatrième partie, une implémentation des protocoles d’interaction dans un modèle simple est présentée Puis une implémentation de ces protocoles d’interaction dans un modèle complexe est le contenu de la cinqième partie Ce rapport se termine avec une partie de conclusion et perspectives II Problème actuel et les protocoles d’interaction de FIPA II.1 Problème actuel de la communication dans GAMA Comme nous l’avons souligné au-dessus, actuellement, GAMA ne fournit pas encore de capacité pour modéliser une « vraie » communication entre des agents Les deux mécanismes existants, la communication par signal et la commande « ask », sont en effet très limités Avec la communication par signal, un agent est capable de transférer des informations dans son environnement Après quoi, d’autres agents peuvent les lire puis réagir de façon appropriée Comme un signal est transféré par l’environnement, tous les autres agents peuvent le percevoir Dans le cas où un agent A veut communiquer seulement avec un agent B, cela peut poser un problème : si A veut que les informations transférées ne soient visibles que par B, il n’y a aucun moyen pour lui de le préciser L’utilisation du signal n’est pas donc convenable dans ce cas De plus, la communication par signal est couteuse en temps de calcul quand le rayon du signal est grand Dans GAMA, on peut également utiliser l’appel « ask » pour demander un agent (ou des agents) d’exécuter du code Cette commande est équivalente l’envoi de messages entre objets On peut donc l’utiliser pour simuler le processus de l’envoi et de la réception de messages entre les agents Mais il n’est pas possible de modéliser un processus de négociation avec la commande « ask » Plus précisément, l’agent A peut utiliser un « ask » pour demander l’agent B faire quelque chose, mais il n’y a aucune possibilité pour l’agent B de refuser de le faire, et, de plus, aucune possibilité pour B d’informer A de ce refus Et si B exécute la demande de A, rien n’est prévu dans le langage GAML (langage de modélisation de GAMA) pour que B informe A du résultat Enfin, si B exécute l’action demandée par A, mais que l’exécution de cette action n’est pas réussie, aucun mécanisme n’est disponible pour prévenir A Une autre nécessité est la capacité de coordination et de négociation entre des agents Considérons un exemple inspiré par le protocole Contract Net Supposons que l’on a deux types d’agent Un agent qui joue le rôle d’un gestionnaire Plusieurs autres agents qui jouent le rôle des participants Le gestionnaire souhaite faire effectuer une certaine tâche par un des participants Le gestionnaire sollicite des propositions de m autres participants en publiant un appel d’offres (call for proposals, ou cfp en anglais) Cet appel spécifie la tâche, ainsi que toutes les condition que le gestionnaire souhaite placer sur l’exécution de cette tâche (temps minimum d’exécution, qualité de la réalisation, etc.) Les participants recevant cet appel d’offres sont considérés comme des « entrepreneurs » Parmi les m participants, j participants (j on receiving the "request" messages from my ambulances, pick up the victims at the entrance > build the a list of victims waiting to be loaded > update the "freeAmbulances" list > 77 not yet take into account the capacity of the hospital!!!!!! > in a condition after an earthquake, the hospital should accept all the victims > the inform messages (of the 'no-protocol' protocol) sent from the militaries informing the places of victims > end the conversations > the request messages sent from the militaries to ask for the available places of this hospital > calculate the available places > 78 the hospital has no more places then refuse the rested requests > military.xml built-in variables > 1200 m > GIS related informations > 79 'inform' messages (of the 'no-protocol' protocol) sent from the explorers > 'inform' messages (of the 'fipa-request' Protocol) sent from the explorers > 'inform' messages (of the 'fipa-request' Protocol) sent from the hospitals > 'refuse' messages (of the 'fipa-request' protocol) sent from firemen > 'inform' messages (of the 'fipa-request' protocol) sent from firemen > 'inform' messages (of the 'no-protocol' protocol) sent from firemen > 'inform' messages (of the 'no-protocol' protocol' sent from others militaries > 80 the 'inform' messages (of the 'fipa-request' protocol) sent from the firemen informing some fires have just been extinguished > update internal lists > inform other militaries that some fires have just been extinguished > 81 inform my firemen that some fires have just been extinguished > the 'inform' messages (of the 'no-protocol) sent from the fireman informing a fireman is free > the fireman informs that it is free > the fireman informs that the fire being taken care of by it has just been extinguished > end the conversations > 82 update internal lists > inform other militaries that some fires have just been extinguished > inform others firemen that some fires have just been extinguished > the 'inform' messages sent from others militaries informing some fires have just been extinguished > update internal lists > 83 inform my firemen of that some fires have just been extinguished > end the conversations > the Explorers inform the military the positions of victims and of fires > this is a list of fires > 84 end the conversations with explorers > request the free hospitals > how many places I need? > read inform messages from hospitals > the military informs the hospitals of the victims' informations > sort the list of available hospitals by distance (from this military to each hospital) 85 we would like to consider the nearer hospitals first > > var="victimNumber" value="length victims"/> var="numberOfVictimsAccepted" value="0"/> var="numberOfHospital" value="0"/> var="i" value="1"/> var="loopTimes" value="(length availableHospitals)/2"/> send the information of victims to the hospitals > 86 > workaround > if no more partitions then request the explorer to go home > 87 update the "alreadySentRequestFires" and "fires" lists > 88 'refuse' messages (of the 'fipa-request' protocol) sent from firemen > > victim.xml GIS related informations > built-in variables > variables > 89 reflexes > world.xml built-in variables > variables > name="totalVictim" init="100" min="0" max="100" parameter="true"/> name="ambulanceCapacity" init="10" min="1" max="20" name="numberOfAmbulancePerHospital" init="8" min="1" max="10" name="numberOfExplorerPerMilitary" init="4" min="1" max="10" name="totalFire" init="0" min="0" max="100" parameter="true"/> name="numberOfFiremanPerMilitary" init="5" min="1" max="20" 90 91 [...]... contient pas de la nourriture de nourriture Une des places voisine de la fourmi a Une des places voisine de la fourmi n’a pas un signal de nourriture de signal de nourriture La fourmi est en train de prendre la La fourmi n’est pas en train de prendre la nourriture nourriture La fourmi est au nid La fourmi n’est pas au nid 25 L’explication de ce diagramme est donc comme suit : • Tant que [(placeActuelleAvoirNourriture... de fourmi Nous venons de présenter deux versions du modèle « fourmis » La première version utilise le signal comme mécanisme de communication La deuxième version emploie deux protocoles d’interactions FIPA Contract Net et « No Protocol » pour échanger des messages L’intérêt de la deuxième version est de montrer le fonctionnement des protocoles d’interaction de FIPA dans GAMA dans un modèle simple Dans. .. déclare que son agent est capable de faire la communication, son agent est automatiquement doté des primitifs, des variables et des objets dans la classe CommunicationSkill Concernant la syntaxe détaillée de GAML pour la déclaration de la 18 compétence de communication des agents, vous pouvez regarder le tutoriel en ligne qui se trouve sur le site web de GAMA III.6.1.1 Les primitifs En ce qui concerne... « No Protocol » des foodFinders, le foodCarrier fait une mise à jours de la liste des foodFinders libres Parce qu’il envoie des messages « cfp » seulement aux foodFinders qu’il considère comme libres 30 IV.2.3 Le fonctionnement du nouveau modèle dans GAMA Figure 18 - Modèle « fourmis » avec la communication dans GAMA Dans la figure ci-dessus, on voit les deux types de fourmi : foodFinder et foodCarrier...III L’implémentation des protocoles d’interaction de FIPA dans GAMA Comme nous l’avons présenté dans l’introduction, le travail de ce stage se divise en deux parties principales La première partie a consisté à implémenter les protocoles d’interaction de FIPA dans GAMA Puis, dans la deuxième partie, la validation du fonctionnement de ces protocoles d’interaction a été réalisée Plus... on a la classe CarryingSkill pour implémenter la compétence de porter des agents, la classe MovingSkill pour les compétences de déplacement, etc La classe CommunicatingSkill est donc développée pour la compétence de l’envoi et de la réception des messages Le modélisateur a besoin seulement de déclarer cette compétence pour les agents dans son modèle, et ses agents seront automatiquement dotés de tous... Abstraction des protocoles d’interaction Figure 5 - Les protocoles d’interaction de FIPA implémentés dans GAMA La classe abstraite FIPAProtocol définit une méthode qui sert à vérifier si un message échangé respecte un protocole d’interaction ou pas FIPA fournit les protocoles d’interaction comme : FIPA Request, FIPA Query, FIPA Request When, FIPA Contract Net, FIPA Interated Contract Net, FIPA Brokering, FIPA. .. foodFinder » Selon la figure ci-dessus, à chaque cycle de la simulation, un foodFinder fait donc deux tâches suivantes : • « communiquer avec les foodCarriers » : cette tâche sera détaillée dans la section qui suit • « se déplacer aléatoirement pour chercher la nourriture » : à chaque cycle de la simulation, la foodFinder choisit au hasard une case parmi ses huit cases voisins et se déplace dessus... début de la simulation, les voitures des pompiers sont distribuées actuellement partout dans le plan Dès le commencement de la simulation, chaque voiture des pompiers ira chercher l’incendie qui est le plus proche d’elle Dans la réalité, les voitures des pompiers sont normalement gérées par des casernes Et avant un 34 tremblement de terre, elles se trouvent dans les casernes Dès qu’un tremblement de terre... utilisons le travail de la première partie pour faire communiquer (et coordonner) des agents dans différents modèles Dans cette partie, nous présentons l’implémentation des protocoles d’interaction de FIPA dans GAMA III.1 Diagramme de classe Premièrement, nous présentons les classes principales de cette implémentation Figure 3 - Les classes principales de l’implémentation • Agent : Cette classe est utilisée