Aspects culturels
Systèmes multi-agents et fiction
Les concepts des systèmes multi-agents ont été repris dans différentes œuvres de fiction. Le plus souvent on retrouve la peur classique de l'invention qui échappe à son concepteur (référence à la notion d'émergence), mais le phénomène est amplifié par le nombre et l'intelligence collective des agents.
- Dans La Révolution des fourmis, de Bernard Werber les adolescents rebelles dans leur lycée créent sur ordinateur une société où les entités sont des humains qui finalement se rebellent.
- Dans La Proie de Michael Crichton où un essaim d'entités autonomes s'échappe d'un laboratoire.
- Les réplicateurs de la série Stargate SG-1 qui forment au départ de simples jouets et qui évoluent jusqu'à devenir une menace pour l'univers.
- Dans Code Lyoko, XANA est un programme multi-agents créé par Franz Hopper. Il accomplira sa tâche, à savoir détruire le projet cartage avant de s’en prendre à l’humanité.
- Dans Matrix, les programmes sont indépendants et hiérarchisés, on peut donc les qualifier d'agents. Dans la trilogie ce terme est utilisé pour nommer une partie d'entre eux, en fait les plus visibles. (Il était en effet invraisemblable que les machines aient évolué au point de simuler le comportement humain.) Néo est le premier à avoir découvert toute la complexité de la matrice, notamment lors de son combat avec Séraphin. Mais la confirmation ne viendra que dans Matrix Revolutions quand un "programme" lui parlera d'amour.
Applications
On distingue généralement trois types d'utilisation : la simulation de phénomènes complexes, la résolution de problème, et la conception de programmes.
On utilise les systèmes multi-agents pour simuler des interactions existants entre agents autonomes. On cherche à déterminer l'évolution de ce système afin de prévoir l'organisation qui en résulte. Par exemple, en sociologie, on peut paramétrer les différents agents composant une communauté. En ajoutant des contraintes, on peut essayer de comprendre quelle sera la composante la plus efficace pour parvenir à un résultat attendu (construction d'un pont). Ce qui importe c'est le comportement d'ensemble et non pas le comportement individuel. Des applications existent en physique des particules (agent = particule élémentaire), en chimie (agent = molécule), en biologie cellulaire (agent = cellule), en éthologie (agent = animal), en sociologie et en ethnologie (agent = être humain). L'autonomie permet ici de simuler le comportement exact d'une entité.
L'intelligence artificielle distribuée est née pour résoudre les problèmes de complexité des gros programmes monolithiques de l'intelligence artificielle : l'exécution est alors distribuée, mais le contrôle reste centralisé. Au contraire, dans les SMA, chaque agent possède un contrôle total sur son comportement. Pour résoudre un problème complexe, il est en effet parfois plus simple de concevoir des programmes relativement petits (les agents) en interaction qu'un seul gros programme monolithique. L'autonomie permet au système de s'adapter dynamiquement aux changements imprévus qui interviennent dans l'environnement.
Dans le même temps, le génie logiciel a évolué vers des composants de plus en plus autonomes. Les SMA peuvent être vus comme la rencontre du génie logiciel et de l'intelligence artificielle distribuée, avec un apport très important des systèmes distribués. Par rapport à un objet, un agent peut prendre des initiatives, peut refuser d'obéir à une requête, peut se déplacer ... L'autonomie permet au concepteur de se concentrer sur une partie humainement appréhendable du logiciel.
La métaphore des jeux vidéo
On peut représenter un SMA par une de ces communautés virtuelles que l'on trouve de plus en plus dans les jeux vidéo actuels. Prenons l'exemple d'un jeu qui simulerait la vie d'une famille. Le SMA se décompose selon plusieurs dimensions. Tout d'abord, un environnement disposant d'une métrique. On peut considérer qu'il s'agit de la maison et du jardin où vit notre petite famille. Ensuite le SMA peut disposer d'un ensemble d'objets passifs sur lesquels peuvent intervenir nos agents. Il s'agira de tous les objets qui équipent la maison, mais également de la nourriture. Un SMA se compose d'agents. Ceux-ci, actifs et autonomes, interagissent avec leur entourage (environnement, objets et autres agents). On identifie ces agents aux membres de la famille (sans oublier le chien). Ensuite, on ajoute un ensemble de relations entre les objets et les agents, ce qui définit une organisation. On pourra par exemple exprimer les liens familiaux entre les différents individus, mais également traiter des notions de propriétés (quel objet appartient à qui ?). Enfin, on intègre un ensemble d'opérateurs qui permettent aux agents d'agir sur les objets ou sur les autres agents (le fils peut manger un yaourt ou promener son chien ou parler à sa sœur), et de capteurs qui permettent aux agents de connaître les changements de l'environnement et des autres agents (le yaourt est tombé par terre, papa m'a demandé de sortir le chien). Voici donc ce que l'on peut appeler un SMA. En informatique, l'agent sera un programme autonome possédant un ensemble de connaissances et agissant selon des règles qui lui sont propres.
Plate-formes de développement de systèmes multi-agents
- AnyLogic - Logiciel de simulation multi-agents et multi-méthode
- CORMAS (COmmon Resources Multi-Agent System) est un framework de développement de systèmes multi-agents, open-source et basé sur le langage de programmation orientée objet SmallTalk . Spatialisé, il est centré sur des problématiques de recherche en sciences du développement et de négociation entre acteurs.
- DoMIS est un outil permettant la conception de Systèmes Multi-agents (orientés "pilotage opérationnel de systèmes complexes") et basé sur la méthode de conception B-ADSc. Axé sur la conception, DoMIS permet l'établissement de spécifications utilisables par toute plateforme de développement capable de simuler, au mieux, le temps réel.
- JACK est un langage de programmation et un environnement de développement pour agents cognitifs, développé par la société Agent Oriented Software comme une extension orientée agent du langage Java.
- JADE (Java Agent DEvelopment) est un framework de développement de systèmes multi-agents, open-source et basé sur le langage Java. Il offre en particulier un support avancé de la norme FIPA-ACL, ainsi que des outils de validation syntaxique des messages entre agents basé sur les ontologies.
- Jadex, est une plate-forme agent développée en JAVA par l'université de Hambourg qui se veut modulaire, compatible avec de nombreux standards et capable de développer des agents suivant le modèle BDI.
- JAgent est un framework open source réalisé en Java dont l'objectif est de faciliter le développement et le test de systèmes multi-agents.
- Janus est une plateforme multi-agents modulaire écrite en Java. Elle permet de créer des systèmes multi-agents avec ou sans une approche organisationnelle basée sur le modèle (en) Capacité-Rôle-Interaction-Organisation (CRIO). Janus propose également un modèle de simulation de système holonique assimilant les agents à des holons (ou agents récursifs). Janus est extensible grâce à son utilisation de modules OSGi et propose le support réseau via la biliothèque JXTA. Une méthodologie nommée (en) ASPECS peut être associée à Janus. Cette plateforme est développé conjointement par (en) ICAP-SeT-UTBM en France et le (es) CITAT en Argentine.
- Jason est un environnement open source de développement d'agents dans le formalisme AgentSpeak, et développé en Java par Jomi Fred Hübner et Rafael H. Bordini.
- MadKit est une plate-forme multi-agents modulaire écrite en Java et construite autour du modèle organisationnel Agent/Groupe/Rôle. C'est une plate-forme libre basée sur la licence GPL/LGPL développée au sein du LIRMM.
- MAGIQUE est une plate-forme pour agents physiquement distribués écrite en Java et fournissant un modèle de communication original d'appel à la cantonade. Dans MAGIQUE, les compétences sont dissociées des agents. L'architecture des agents et les différentes compétences sont développées séparément. Les compétences sont ensuite greffées comme plugin dans les agents au gré du concepteur. Cette plate-forme est développée au sein du LIFL.
- OMAS, Open Multi-Agent Asynchronous Systems est une plate-forme de recherche développée par l'équipe d'intelligence artificielle de l'Université de technologie de Compiègne, sous la direction de Jean-Paul Barthès.
- SemanticAgent est basé sur JADE et permet le développement d'agents dont le comportement est représenté en SWRL. SemanticAgent est développé au sein du LIRIS, il est open-source et sous licence GPL V3.
- SPADE est un environnement de développement d'organisations multi-agents basé sur le protocole XMPP et est écrit en Python.
Un comparatif des platforme et d'outils de modélisation orientés-agent est disponible : (en) Comparison of agent-based modeling software.