Dans le monde merveilleux de l'intelligence artificielle, il existe une catégorie de systèmes de simulation inspirés de la nature et particulièrement adaptés à de nombreuses problématiques en biologie : les systèmes multi-agents. Ces systèmes sont composés d'entités autonomes (les agents) qui interagissent entre elles et avec un environnement dans lequel elles évoluent. Bien évidemment, l'inspiration "biologique" provient des insectes sociaux (fourmis, termites, etc.) dont le comportement individuel et les interactions mènent à l'apparition de phénomènes ou de comportements complexes. Ce phénomène est appelé émergence et représente une caractéristique fondamentale de ces systèmes.
Les systèmes multi-agents trouvent des applications dans de très nombreux domaines : objets communicants, systèmes informatiques distribués, segmentation d'images, simulations de catastrophes, d'interactions sociales, de réseau routier, de propagation d'épidémie, de réaction en chaîne, etc. En fait, toute situation dans laquelle on peut identifier des entités précises bien définies et en interaction. Mais, me direz-vous, certaines de ces situations peuvent aussi être simulées grâce aux mathématiques, avec des systèmes d'équations !? Oui, en effet, et on retrouve les mêmes résultats.
M'sieur l'agent ! Au loup !
Par exemple, le système proie-prédateur bien connu. Deux populations sont en interaction : une de proies et une de prédateurs. Les prédateurs chassent les proies, se reproduisent et meurent tandis que les proies ne font que se reproduire et mourir. On cherche alors à connaître quelle est la dynamique de ce système, soit les effectifs des deux populations au cours du temps. Dans sa forme la plus simple, la méthode mathématique qui permet de modéliser ce système comporte deux équations : une pour l'effectif des proies et l'autre pour l'effectif des prédateurs avec des taux de mortalité/reproduction pour chaque population (détails ici). L'interaction entre les deux populations se fait par deux relations :
- La dépendance du taux de mortalité des proies vis à vis du nombre de prédateurs.
- La dépendance du taux de reproduction des prédateurs vis à vis du nombre de proies.
Dans le cas de la simulation par système multi-agents, on va définir deux types d'agents : un agent proie et un agent prédateur. Ici aussi, on définira pour chaque type d'agent un taux de mortalité et de reproduction. Mais, comme ce système suppose que proies et prédateurs se déplacent dans l'environnement (sur une carte par exemple), on définira aussi un mouvement pour chaque agent. La prédation en tant que telle est définie par une action des agents prédateurs : quand un prédateur rencontre une proie, il la mange. C'est à dire qu'on fait disparaître l'agent proie de la simulation. Voici ce que peut donner une telle simulation en vidéo :
Comme vous pouvez le voir sur la vidéo, les courbes tracées au fur et à mesure de la simulation ont la même allure que celles obtenues avec le système d'équation. Un des avantages d'une simulation avec des agents est qu'on peut modifier les paramètres du système en temps réel et ainsi voir immédiatement la réponse. On a également une simulation située dans un environnement auquel on peut ajouter des contraintes (obstacles, zones sans nourriture, etc.). La diversité des paramètres peut être très importante !
Lorsqu'on construit une simulation avec des agents, on raisonne en terme d'entités, de comportements et d'interaction.
Fais commeuuh l'oiseau
Un autre système multi-agents très connu est celui des boids. La question dans ce cas est de simuler un vol d'oiseaux à partir des oiseaux eux-mêmes. Un agent est donc un oiseau qui évolue dans un environnement en 3D selon 3 règles :
- éviter les collisions (ne pas être trop proche des voisins),
- rester aligné sur ses voisins (le déplacement se fait suivant une direction donnée),
- rester proche du groupe (ne pas trop s'éloigner des voisins).
Je vous laisse apprécier le résultat :
Le phénomène qui émerge dans cette simulation est la formation et le comportement du vol d'oiseau : à aucun moment dans la définition des agents, on ne leur précise de former un vol. La seule perception qu'ils ont et les règles de comportement sont définies par rapport à leurs voisins les plus proches, donc une information locale.
Je peux sentir leur présence …
La notion de perception est fondamentale dans un système multi-agents car elle permet l'interaction agent/agent et agent/environnement. Ces interactions peuvent être réalisées de manière très différentes (transmission de message, dépôt/collecte d'information dans l'environnement, etc.) pour refléter les mécanismes réels qu'on souhaite simuler. Quand il doit prendre une décision, un agent fait appel à ses connaissances et ses mécanismes internes tout en évaluant ce que sa perception lui permet de sentir (autres agents, obstacles, signaux divers).
Pour finir, les agents que j'ai présenté ici sont des agents réactifs et sont opposés aux agents cognitifs. Les agents réactifs ne sont pas considérés comme "intelligents" car ils se contentent de répondre à des stimuli. Les agents cognitifs, quant à eux, possèdent des raisonnements internes complexes, des buts à réaliser et une certaine mémoire des événements passés. Ces deux catégories d'agents permettent de répondre à un grand nombre de problématiques très variées. Je vous invite à aller voir les exemples de systèmes multi-agents fournis par le logiciel NetLogo pour vous rendre compte des possibilités.
Merci aux agents relecteurs : Clem, nallias, ZaZo0o
A voir :
Un ancêtre des systèmes multi-agents : le jeu de la vie
chaîne YouTube de Pascal Ballet avec des exemples variés de systèmes multi-agents
Page officielle décrivant le système des boids (en anglais)
Laisser un commentaire