• Aucun résultat trouvé

La simulation orientée agent est un domaine en perpétuelle évolution, tant au niveau concep- tuel, dans le domaine par exemple de l’intelligence artificielle, qu’en termes d’implémentation, avec l’arrivée de nouvelles architectures matérielles et de nouveaux modèles de programmation. Ce dynamisme et cette flexibilité expliquent la popularité de cette approche de modélisation pour la résolution de nombreux problèmes, mais soulignent également l’importance de proposer des solutions modulaires et si possible génériques. Les avantages de cette modularité sont illustrés par le succès des nombreuses plates-formes agents traditionnelles, fournissant un vaste ensemble de fonctionnalités indépendantes pouvant être ou non exploitées par un modèle particulier : c’est ainsi le cas de plates-formes comme D-MASON ou NetLogo [Skl11], qui proposent un découpage des structures de données implicite, de JADE, avec la possibilité d’ajouter de nouveaux composants de manière dynamique au système, ou encore de MadKit qui permet la surcharge de nombreux comportements de la plate-forme. La généricité est également présente dans ces plates-formes sous forme de cadre de modélisation et d’opérations facilitant la conception de nouveaux modèles agents. Ce cadre peut être très souple, dans le cas par exemple de Madkit, ou beaucoup plus strict, dans le cas des plates-formes FLAME ou FLAME-GPU.

Notre solution doit donc, au-delà de la flexibilité d’utilisation, permettre l’ajout aisé de fonc- tionnalités et d’extensions sans remettre en cause son architecture fondamentale, de manière à pouvoir traiter de nouveaux problèmes agents sur GPU.

4.5

Synthèse

Dans notre présentation du contexte, nous avons eu l’occasion d’évoquer le besoin en res- sources toujours plus important rencontré par les simulations en général et en particulier par les simulations multi-agents. S’il est en effet courant de commencer par valider un système à petites échelles, l’observation de certains comportements émergents requiert parfois un nombre minimal d’individus [SN09]. L’amélioration des résultats obtenus par la simulation agent implique, de ma- nière plus générale, une augmentation en taille des modèles, que ce soit en termes de dimension de l’environnement ou de nombres d’agents, et des comportements toujours plus complexes.

La parallélisation de l’exécution en mémoire partagée ou en mémoire distribuée est une réponse à ce besoin toujours croissant en ressources mémoires et de calcul. Les architectures many-core et GPU en particulier offrent l’accès à plusieurs centaines de coeurs d’exécution à des tarifs com- parables à ceux d’une machine de bureau, via des modèles de programmation comme CUDA et OpenCL.

L’utilisation de ces architectures pour la simulation multi-agents n’est pas une idée nouvelle et a déjà été explorée pour de nombreux modèles, sous forme de développement de nouvelles implémentations complètes. Ces adaptations requièrent cependant une connaissance approfondie des modèles de programmation et d’exécution GPU pour permettre l’obtention de programmes efficaces. De nombreux concepteurs agents, théoriciens, n’ont pas le temps d’acquérir ces compé- tences pour la réalisation de nouveaux modèles.

FLAME-GPU permet, a contrario, la génération de modèles agents basés sur CUDA sans connaissance de ce modèle de programmation à partir de modèles FLAME. Cette solution im- pose cependant l’utilisation du formalisme strict de cette plate-forme, et n’est donc pas accessible à des modèles basés sur d’autres plates-formes agents parallèles ou séquentielles telles que Madkit, NetLogo ou GAMA sans un redéveloppement complet.

Notre thèse est de montrer qu’une bibliothèque de ce type peut être développée de manière in- dépendante et générique par rapport à ces plates-formes d’exécution multi-agents, pour permettre son utilisation dans un large nombre d’environnements et de modèles existants.

Dans la suite de ce mémoire, nous présentons la démarche qui nous a mené à la conception de MCMAS, une bibliothèque permettant de réaliser tout ou partie d’une simulation multi-agents sur GPU. L’objectif de cette bibliothèque est de permettre une utilisation de cette nouvelle archi- tecture d’exécution de manière indépendante ou en complément de plates-formes de conception et d’exécution multi-agents existantes. Elle reprend en compte, pour cela, les problématiques de portabilité, de réutilisation, d’intégration et d’extensibilité évoquées dans ce chapitre dans un tout cohérent, proposant deux niveaux d’utilisation, l’un adapté à son utilisation sans connaissances GPU, l’autre à une extension aisée des fonctionnalités offertes par la bibliothèque.

Adaptation d’un mod`ele multi-agents sur

GPU : Proie-Pr´edateur

Le modèle proie-prédateur est un modèle multi-agents inclus à titre de démonstration dans de très nombreuses plates-formes agents. Il présente l’intérêt d’offrir un grand choix de niveaux de représentation, mais également de nombreuses implémentations possibles. Dans ce chapitre, nous l’utilisons comme illustration des types de problématiques agents devant être traitées pour une adaptation sur GPU, tant en termes de mémoire que d’exécution.

5.1

Présentation du modèle

Le modèle proie-prédateur a été pour la première fois décrit de manière indépendante par Alfred James Lotka en 1925 et par Vito Volterra en 1926 sous la forme d’un couple d’équations différen- tielles. Ces équations, basées sur des observations effectuées au 19me siècle sur des populations

d’animaux sauvages, permettent d’estimer l’évolution en fonction du temps de deux populations, carnivore et herbivore, en fonction des paramètres définis pour la simulation du modèle :

           dx(t) dt = x(t)(α − βy(t)) dy(t) dt = −y(t)(δ − γx(t)) où — t est le temps ;

— x(t) est le nombre de proies en fonction du temps ; — y(t) est le nombre des prédateurs en fonction du temps ;

— les dérivées dx(t)/dt et dy(t)/dt représentent la variation des populations au cours du temps. Les paramètres suivants décrivent les interactions entre les deux espèces :

— α le taux de reproduction des proies ;

— β le taux de mortalité des proies dû aux prédateurs ; — γ le taux de mortalité des prédateurs ;

— δ le taux de reproduction des prédateurs.

Pour des paramètres d’entrée évitant la disparition totale de l’une ou l’autre des populations, l’évolution du nombre d’individus de chaque type tend alors rapidement à osciller de manière régulière entre périodes de faste et de famine. La Figure 5.1 illustre ces oscillations dans le temps.

               α = 2 β = 0.5 γ = 0.2 δ = 6 0 20 40 60 80 100 0 5 10 15 20 Temps Nombre d'individus Proies Prédateurs

Figure 5.1 – Exemple de courbes obtenues par l’application des équations de Lotka-Volterra

Cette première approche, mathématique, ne considère que les nombres d’individus du modèle et des paramètres synthétisant leur évolution générale. Une autre approche de modélisation, orien- tée agent, reproduit ces tendances en décrivant le comportement des individus mis en présence au moyen d’actions élémentaires de bas niveau décrites sous forme d’algorithme.

Une approche agent possible est ainsi d’isoler trois niveaux d’évolution dans le modèle proie- prédateur :

— L’environnement, modélisant les ressources consommées par les proies (végétation). Il s’agit d’un agent passif, modifié par les autres agents du système. Le seul traitement propre lui étant associé est l’augmentation des ressources d’un facteur fixé entre chaque pas de simulation, de manière à refléter la croissance et le remplacement des végétaux dans le temps.

— Les proies, capables de se déplacer et de se reproduire. Lors de ce second processus, la proie modifie l’environnement, pour répercuter la nourriture consommée.

— Les prédateurs, capables de se déplacer, de consommer des proies et de se reproduire. Ces agents n’interviennent que sur les proies, et ne modifient pas directement l’environnement. L’ajout d’un environnement basé sur les ressources en végétation s’inscrit dans l’optique de décrire le système selon une approche montante, comme nous l’avons vu dans notre présentation des approches de modélisation, plutôt que de se baser sur une observation de haut niveau pour extrapoler le comportement de chaque individu, avec une approche descendante.

Ce modèle agent se caractérise par une relation stricte entre les populations, à sens unique. Seuls les prédateurs sont à même d’influer sur les proies, qui sont seules à pouvoir influer sur l’environnement. Par rapport à la modélisation mathématique du modèle proie-prédateur, cette re-

présentation agent introduit aussi une prise en compte de l’accès aux ressources de chaque agent, en introduisant une répartition géographique des différentes entités du système. Cet aspect sup- plémentaire permet non seulement d’obtenir des valeurs de population, comme le modèle mathé- matique, mais ouvre également l’accès à des résultats plus précis, permettant de mettre en avant l’influence de la répartition des ressources sur la position des agents dans l’environnement.