Conception de Simulations Multi-Agents

Conception de Simulations Multi-Agents

Pratique du processus de conception de simulations 

Le processus de conception de simulations peut être pratiqué selon des approches très différentes nécessitant des degrés d’expertise en informatique variables. Nous en distinguons trois grandes familles : – les approches ouvertes qui reposent sur des langages permettant de spécifier librement presque n’importe quel type de simulations. Cette famille d’approche comprend les langages de programmation, les plateformes multi-agents ouvertes, les plateformes multi-agents dédiées aux experts du domaine et les plateformes de simulation multi-agents ouvertes ; – les approches dirigées par la structure du modèle qui aident la spécification des simulations en fournissant une architecture spécifique et précise au modèle et à l’implémentation ; – les approches transversales qui décrivent non seulement un modèle formel et une architecture d’implémentation, mais fournissent aussi une méthodologie de conception. Cette dernière décrit explicitement comment construire le modèle et comment aboutir à son implémentation. 

Langages de programmation 

Le choix de la plateforme à utiliser pour implémenter une simulation est loin d’être évidente pour plusieurs raisons. La première raison est qu’il existe un très grand nombre de plateformes multi-agents : Nikolai [NM09] en compte plus de 50 et sa liste n’est pas exhaustive. Certains travaux tels que Masev [GGB08] établissent des critères de comparaison inter-plateformes pour aider ce choix. Il reste toutefois nécessaire de comparer les plateformes deux à deux pour trouver la plus appropriée à la simulation réalisée. Ces critères sont donc peu utilisés. La seconde raison est liée à l’opacité des plateformes et leur manque de documentation. En effet, en l’absence de connaissances précises sur le fonctionnement interne de la plateforme et des choix d’implémentation lui tant sous-jacents, des résultats erronés peuvent être obtenus avec un modèle pourtant correct. Afin d’éviter ces problèmes, une première approche de l’implémentation d’un simulation consiste à implémenter intégralement le modèle dans un langage de programmation tel que C, C++, Java ou Fortran [Axe97, Sha98]. Les choix d’implémentation du simulateur sont pleinement contrôlés, évitant ainsi les erreurs liées à l’opacité ou le manque de documentation des plateformes existantes. Toutefois, ce gain est obtenu au détriment de deux problèmes majeurs du processus de simulation. D’une part, la réduction des efforts d’implémentation lors des révisions du modèle dépend uniquement des compétences du programmeur. D’autre part, la validité des choix d’implémentation repose uniquement sur l’expérience du programmeur concernant la simulation et le langage utilisés. De nos jours, ce type d’approche n’est donc que très peu utilisé [Sha98]. 

Plateformes multi-agents ouvertes 

Comme nous l’avons mentionné dans le chapitre 1, le paradigme multi-agents est particulièrement adapté pour implémenter les simulations. La spécification d’une simulation pourrait donc s’appuyer sur des plateformes ouvertes dédiées à la conception de systèmes multi-agents telles que Cougaar [HTW04], JADE [BPR99], Madkit [FG98] ou MAGIQUE [BM97]. En effet, ces plateformes implémentent de manière concrète le concept d’agent et d’ordonnanceur de l’activité des agents. De plus elles s’appuient pour la plupart sur un modèle formel qui peut être utilisé pour représenter le modèle de la simulation. Par exemple, JADE repose sur les spécifications de la FIPA [FIP10b] et Madkit [FG98] sur le modèle AGR. Exemple : la plateforme Madkit Madkit est une plateforme écrite en Java permettant d’implémenter des systèmes multi-agents reposant sur le modèle Agent/Groupe/Role [FG98]. Cette approche vise principalement à concevoir des applications hétérogènes et réparties. Elle se focalise donc sur des problématiques d’interopérabilité entre agents hétérogènes. La spécification et l’implémentation est centrée sur l’organisation du système multiagents et se base sur trois concepts fondamentaux : les agents, les groupes et les rôles. Un agent est une entité autonome et communicante pouvant jouer des rôles dans des groupes. Un groupe est un regroupement d’agents représentant un sous-système du système multi-agents. Un agent peut appartenir à plusieurs groupes. Un rôle est une représentation abstraite d’une fonction, d’un service ou sert à identifier un agent au sein de son groupe. Chaque groupe spécifie l’ensemble des rôles qu’il peut contenir et chaque agent présent dans un groupe spécifie le ou les rôles qu’il peut y jouer. Pour compléter ces notions et permettre l’implémentation d’un système multi-agents, s’ajoutent au modèle les notions de structure de groupe et de structure organisationnelle. Une structure de groupe décrit les interactions 8 pouvant avoir lieu entre agents dans un groupe en fonction des rôle qu’ils peuvent y jouer. Elle est représentée sous la forme d’un graphe dirigé où les nœuds sont les identifiants des différents rôles du groupe et où les arcs connectent les rôles pouvant interagir. La structure organisationnelle décrit de manière macroscopique le système multi-agents. Elle est constituée de l’ensemble des structures de groupe composant le mas et identifie les agents dits représentants qui servent d’interface entre des groupes différents. L’architecture comportementale des agents ne faisant pas partie des problématiques fondamentales de cette approche, sa spécification est délaissée et doit être intégralement réalisée lors de l’implémentation. Il en va de même pour la notion d’environnement, limitée dans ce cas à un environnement social (le groupe). Malgré ces difficultés, il est toutefois possible d’implémenter des simulations sur ces plateformes. Par exemple, la plateforme Madkit a été utilisée pour implémenter la librairie Turtlekit [Mic00]. Cette dernière permet d’implémenter des simulations ayant lieu dans un environnement en deux dimensions. Une extension du modèle AGR appelée AGRE [JFB05] réduit partiellement les problèmes liés à l’implémentation de simulations en intégrant à son modèle le concept d’environnement. Une généralisation récente du modèle AGR nommée MASQ [SFT09] fait de même en ajoutant de plus des concepts sociaux tels que les institutions ou les normes.

Plateformes multi-agents dédiées aux experts du domaine 

Plutôt que d’utiliser des langages complexes tels que JAVA ou C, certaines plateformes reposent sur des langages de programmation plus intuitifs à utiliser. La conception du comportement des agents reste libre et non guidée, mais peut être faite par des experts du domaine. Ces plateformes reposent sur des langages de programmation expressifs tels que Netlogo [WC99] ou sur des langages de programmation graphique que l’on retrouve dans Repast Simphony [NTCO07] ou dans SeSam [KHF06]. Exemple : la plateforme Netlogo Netlogo [WC99] est une plateforme multi-agents basée sur le langage de programmation Logo. Elle permet de spécifier des simulations dans lesquelles des agents évoluent dans un espace en deux dimensions. Une simulation y consiste à contrôler le comportement d’un ensemble de tortues 9 similaires à des agents. Le comportement de chaque tortue y est décrit à l’aide de commandes simples et intuitives telles que forward 5 pour faire avancer la tortue de 5 unités ou right 90 pour faire tourner la tortue de 90 degrés sur sa droite. Il est aussi possible d’utiliser des commandes, des procédures et des fonctions plus évoluées permettant de spécifier des comportements complexes. Ces commandes incluent la manipulation d’ensembles d’agents, la perception dans l’environnement, l’ordonnancement de l’activité des agents ou la définition de races 10 de tortues (i.e. des « types » de tortues). Cette plateforme fournit de plus des outils graphiques très simples permettant de paramétrer, exécuter et analyser la simulation sans passer par une phase de compilation. Discussion Les plateformes s’appuyant sur des langages de spécification simples favorisent l’implication de personnes n’ayant pas des compétences poussées en informatique lors de l’implémentation. Elles réduisent donc les erreurs d’interprétation du modèle lors de l’implémentation. Les simulations ou les agents sont toutefois définis en un seul bloc de code peu réutilisable ne facilitant pas les révisions du modèle. Ces approches sont donc adéquates pour construire des prototypes de simulation ou construire des simulations contenant un nombre restreint d’agents au comportement peu varié. Elles ne sont par contre pas adaptées pour construire des simulations à plus grande échelle [Axe97], i.e. contenant une grande variété d’agents et de comportements. 

Plateformes de simulation multi-agents ouvertes

 Pour faciliter la conception du comportement des agents, une approche basée sur les librairies de simulation peut être envisagée. Cette approche se retrouve au sein de plateformes de simulation multiagents ouvertes telles qu’Ascape [Par01] et Swarm [MBLA96] ou Opensteer [Rey02]. Exemple : Swarm Swarm est une librairie de programmation écrite dans le langage orienté-objet Objective-C, permettant d’implémenter des simulations multi-agents. Elle est générique et ouverte et repose sur les concepts fondamentaux d’agent, de swarm et d’ordonnanceur. Un swarm est objet (au sens de la programmation orientée-objet) composé d’une collection d’agents et d’un ordonnanceur régulant l’activité de ces agents. Il constitue donc un système multi-agents. Chaque agent est un objet (au sens de la programmation orientée-objet) qui peut aussi être un swarm. Cette structuration permet ainsi de construire une hiérarchie d’agents. Cette hiérarchie est particulièrement utile pour spécifier des phénomènes ayant lieu à des échelles différentes. Par exemple, modéliser le comportement de cellules dans un organisme, lui-même le fruit du comportement de protéines dans les cellules. La spécification du comportement des agents est libre et laissée à la discrétion du programmeur. Cette librairie unifie la spécification du simulateur utilisé : les interfaces graphiques et de contrôle de la simulation sont aussi représentés par des agents dans un swarm (voir figure 2.2). Outre son modèle hiérarchique, l’intérêt de swarm réside dans sa communauté. Non seulement Swarm est une plateforme ouverte et générique, mais sa communauté est très active, comme en témoigne les différentes éditions de la conférence Swarmfest 11 . Au fil de son utilisation par la communauté, des ensembles de librairies spécifiques aux domaines d’application ont été développées, telles que les swarms représentant un environnement en deux dimensions, les agents basés sur des réseaux de neurones, etc. Ces librairies permettent de réutiliser différentes architectures d’agents et d’environnement, réduisant ainsi les efforts d’implémentation d’une simulation à une autre.

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *