Système multi-agents 46366 31434688 2008-07-09T12:48:09Z MystBot 249586 Bot : Remplacement de texte automatisé (-[[Réplicateur (Stargate)| +[[Réplicateurs (Stargate)|) Un '''système multi-agent''' ('''SMA''') est un ensemble d'[[agents]] situés dans un certain [[environnement]] et [[interaction|interagissant]] selon une certaine [[organisation]]. Un agent est une entité caractérisée par le fait qu'elle est, au moins partiellement, [[wikt:autonomie|autonome]]. Ce peut-être un [[processus informatique|processus]], un [[robot]], un être humain, etc. Objet de longue date de recherches en [[intelligence artificielle distribuée]], les systèmes multi-agents forment un type intéressant de [[Modèle mathématique|modélisation]] de [[Société (sciences sociales)|sociétés]], et ont à ce titre des champs d'application larges, allant jusqu'aux [[sociologie|sciences humaines]]. ==Origine et aspects techniques== ===Origine=== L'une des grandes sources d'inspiration pour les systèmes multi-agents a été l'étude des comportements sociaux de certaines familles d'insectes. Dans ce domaine, on se référera utilement aux articles [[Intelligence collective]] et [[Intelligence distribuée]]. Les SMA peuvent être vus comme la rencontre de divers domaines : * l'[[intelligence artificielle]] pour les aspects prise de décision de l'agent * l'[[intelligence artificielle distribuée]] pour la distribution de l'exécution * les [[Calcul réparti|systèmes distribués]] pour les interactions * le [[génie logiciel]] pour l'approche ''agents'' et l'évolution vers des composants logiciels de plus en plus autonomes * Les objets communiquants ===Les cinq problématiques des SMA=== On peut relever cinq problématiques principales lors de la création de systèmes multi-agents (SMA). * D'abord, la problématique de l'action : comment un ensemble d'[[agents]] peut agir de manière simultanée dans un [[environnement]] partagé, et comment cet environnement [[interaction|interagit]] en retour avec les agents ? Les questions sous-jacentes sont entre-autres celles de la [[représentation]] de l'environnement par les agents, de la [[collaboration]] entre agents, de la [[planification]] multi-agent. * Ensuite la problématique de l'agent et de sa relation au monde, qui est représenté par le [[modèle cognitif]] dont dispose l'agent. L'individu d'une [[Société (sciences sociales)|société]] multi-agent doit être capable de mettre en œuvre les actions qui répondent au mieux à ses objectifs. Cette capacité à la [[décision]] est liée à un "[[état mental]]" qui reflète les [[perception|perceptions]], les représentations, les [[croyance|croyances]] et un certain nombre de paramètres "[[psychisme|psychiques]]" ([[désir|désirs]], tendances...) de l'agent. La problématique de l'individu et de sa relation au monde couvre aussi la notion d'[[engagement]] de l'agent vis-à-vis d'un agent tiers. * Les systèmes multi-agents passent aussi par l'étude de la nature des interactions, comme source de possibilités d'une part et de [[contrainte|contraintes]] d'autre part. La problématique de l'interaction s'intéresse aux moyens de l'interaction (quel [[langage]] ? quel support ?), et à l'analyse et la conception des formes d'interactions entre agents. Les notions de [[collaboration]] et [[coopération]] (en prenant coopération comme collaboration + coordination d'actions + résolution de conflits) sont ici centrales. * On peut évoquer ensuite la problématique de l'[[adaptation]] en terme d'adaptation individuelle ou [[apprentissage]] d'une part et d'adaptation collective ou [[évolution]] d'autre part. * Enfin, il reste la question de la réalisation effective et de l'implémentation des SMA, en structurant notamment les [[langage de programmation|langages de programmation]] en plusieurs types allant du langage de type L5, ou langage de formalisation et de spécification, au langage de type L1 qui est le langage d'implémentation effective. Entre les deux, on retrouve le langage de communication entre agents, de description des lois de l'environnement et de représentation des connaissances. ===Architecture des systèmes multi-agents=== En reprenant les cinq problématiques précédentes, on peut décrire quelques éléments de l'architecture d'un système multi-agent. * Les agents doivent être dotés de systèmes de décisions et de [[planification]] à plusieurs. Les [[théorie de la décision|théories de la décision]] sont un domaine à part entière d'étude à ce sujet. Dans la catégorie des interactions avec l'environnement, un autre problème récurrent des systèmes d'agents est celui du [[pathfinding]] (avec son algorithme le plus connu, l'[[algorithme A*]]). * Les agents doivent être dotés d'un [[modèle cognitif]] : Là aussi, plusieurs modèles existent, l'un des plus classiques étant le [[modèle BDI]] (''Beliefs-Desires-Intentions''). Il considère d'une part l'ensemble de croyances (''Beliefs'') de l'agent sur son environnement, qui sont le résultat de ses connaissances et de ses perceptions, et d'autre part un ensemble d'objectifs (''Desires''). En croisant ces deux ensembles, on obtient un nouvel ensemble d'intentions (''Intentions'') qui peuvent ensuite se traduire directement en actions. * Les agents doivent être dotés d'un système de [[communication]]. Plusieurs [[langage|langages]] spécialisés ont vu le jour à cette fin : le ''Knowledge Query and Manipulation Language'' ([[KQML]]), et plus récemment, le [[standard]] [[FIPA-ACL]] (ACL pour ''Agent Communication Language'') créée par la ''Foundation for Intelligent Physical Agents'' [http://www.fipa.org/ FIPA]. Ce dernier standard repose en particulier sur la [[Acte de langage|théorie des actes de langage]], chère à [[John Searle]]. * La problématique de l'adaptation est un sujet épineux, objet de recherches nombreuses à l'heure actuelle. On pourrait toutefois citer l'exemple de certains [[virus]], aussi bien biologiques qu'informatiques, capable de s'adapter à leur environnement en [[Mutation (génétique)|mutant]]. * Enfin, l'implémentation effective du système multi-agent, si elle ne fait pas à proprement parler partie de l'architecture du système, mérite d'être évoquée à travers l'exemple des nombreux [[langage de programmation|langages de programmation]] qui ont été développé à des fins de recherche en [[intelligence artificielle]]. On citera en particulier le langage [[LISP]]. Ces éléments d'architectures s'appliquent plutôt à un système composé d'agents cognitifs. ===Des catégories ou modèles d'agents=== On peut établir une classification des agents selon deux critères : agents [[cognition|cognitifs]] ou [[réaction|réactifs]] d'une part ; comportement [[téléonomique]] ou [[réflexe]] d'autre part. La distinction que l'on peut faire entre cognitif et réactif tient essentiellement de la représentation du monde dont dispose l'agent. Si l'individu est doté d'une [[représentation symbolique]] du monde à partir de laquelle il est capable de formuler des raisonnements, on parlera d'agent cognitif tandis que s'il ne dispose que d'une [[représentation sub-symbolique]], c’est-à-dire limitée à ses perceptions, on parlera d'agent réactif. Cette distinction cognitif/réactif correspond à deux écoles de pensée des systèmes multi-agents. La première soutient une approche de famille d'agents "[[intelligence|intelligents]]" devant collaborer, avec une perspective plus [[Société (sciences sociales)|sociologique]]. La deuxième étudie la possibilité de l'[[émergence]] d'un comportement "intelligent" d'un ensemble d'agents non-intelligents (type [[fourmi|fourmis]]). La seconde distinction entre comportement téléonomique ou réflexe sépare les comportements intentionnels (poursuite de buts explicites) des comportements liés à des perceptions. Les tendances des agents peuvent ainsi être exprimées explicitement dans les agents ou au contraire provenir de l'environnement. On peut construire un tableau regroupant les différents types d'agents (issu de Ferber, voir bibliographie) : {| align="center" class="wikitable" |+ Catégories d'agent ! ! Agents cognitifs !! Agents réactifs |- ! Comportement téléonomique | Agents intentionnels | Agents pulsionnels |- ! Comportement réflexe | Agents "modules" | Agents tropiques |} Les agents cognitifs sont la plupart du temps '''intentionnels''', c'est-à-dire qu'ils ont des buts fixés qu'ils tentent d'accomplir. On peut cependant trouver parfois des agents dits '''modules''' qui, s'ils ont une représentation de leur [[univers]], n'ont pas de buts précis. Ils pourraient servir par exemple à répondre à des interrogations d'autres agents sur l'univers. Les agents réactifs peuvent être séparés en agents '''pulsionnels''' et '''tropiques'''. Un agent pulsionnel aura une mission fixée (par exemple, s'assurer qu'un réservoir reste toujours suffisamment rempli) et déclenchera un comportement s'il perçoit que l'environnement ne répond plus au but qui lui était affecté (le niveau du réservoir est trop bas). L'agent tropique, lui, ne réagit qu'à l'état local de l'environnement (il y a de la lumière, je fuis). La source de [[motivation]] est dans un cas interne (agents pulsionnels qui ont une "mission"), dans l'autre cas liée uniquement à l'environnement. ==Applications== ===Dans le monde de la recherche=== 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 (biologie)|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 [[agent]]s) en interaction qu'un seul gros programme monolithique. L'autonomie permet au système de s'adapter dynamiquement aux changement 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 [[Calcul réparti|systèmes distribués]]. Par rapport à un [[programmation orientée objet|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. Bien entendu, 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érateur]]s 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 [[capteur]]s 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=== * [http://cormas.cirad.fr/ CORMAS] (COmmon Resources Multi-Agent System) est un [[framework]] de développement de systèmes multi-agents, open-source et basé sur le langage [[Java_(langage)|Java]] et plus précisément le [[langage-objets]] [[SmallTalk_(langage)|SmallTalk]] . Spatialisé, il est centré sur des problématiques de recherche en sciences du développement et de négociation entre acteurs. * [http://jade.tilab.com/ JADE] (Java Agent DEvelopement) est un [[framework]] de développement de systèmes multi-agents, open-source et basé sur le langage [[Java_(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 [[Ontologie (informatique)|ontologies]]. * [http://www.madkit.org/ MadKit] est une plate-forme multi-agents modulaire écrite en Java et construite autour du modèle organisationnel Agent/Groupe/Role. C'est une plate-forme libre basée sur la licence GPL/LGPL développée au sein du [[LIRMM]]. * [http://www2.lifl.fr/SMAC/projects/magique MAGIQUE] est une plate-forme pour agents physiquement distribués écrite en Java et fournissant un modèle de communication original d'appel à la cantonnade. Dans MAGIQUE, les compétences sont dissociées des agents. L'architecture d'agents et les différentes compétences sont développées séparément, les compétences sont ensuite "plugguées" dans les agents au grès du concepteur. Cette plate-forme est développée au sein du [[LIFL]]. * [http://www.hds.utc.fr/~barthes/SMAS/ SMAS/OMAS], ''Simulation of 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]]. * [http://www.jagent.org JAgent] est un [[framework]] open source réalisé en [[Java_(langage)|Java]] dont l'objectif est de faciliter le développement et le test de systèmes multi-agents. * [http://jason.sourceforge.net/ Jason] est un environnement ''[[open source]]'' de développement d'agents dans le formalisme AgentSpeak<ref>Anand S. Rao, AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language. MAAMAW 1996, pp. 42-55</ref>, et développé en [[Java (langage)|Java]] par [[Jomi Fred Hübner]] et [[Rafael H. Bordini]]. * [http://www.agent-software.com/shared/products/index.html 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. == 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 (roman)|La Proie]] de [[Michael Crichton]] où un essaim d'entités autonomes s'échappe d'un laboratoire * Les [[Réplicateurs (Stargate)|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. == Notes et références de l'article == <references/> == Voir aussi == ===Bibliographie=== Deux ouvrages, en anglais, font référence dans le domaine des systèmes multi-agent : * {{en}}{{Ouvrage|titre=An Introduction to MultiAgent Systems|ref=Référence:An Introduction to MultiAgent Systems|auteur=[[Michael Wooldridge]]|éditeur=Wiley and Sons|année=2002}} * {{en}} [[Gerhard Weiss]], éditeur, ''Multiagent Systems, A Modern Approach to Distributed Artificial Intelligence'', MIT Press, 1999, ISBN 0-262-23203-0. Un autre ouvrage, en français cette fois, permet une bonne introduction (et a été un support utile à la rédaction de cet article) : * {{fr}} [[Jacques Ferber]], ''Les Systèmes multi-agents : Vers une intelligence collective'', InterEditions, 1995, ISBN 2-7296-0665-3. === Articles connexes === * [[Intelligence artificielle distribuée]] * [[Agent (informatique)]] * [[Cerveau artificiel]] === Liens et documents externes === {{fr}} [http://www.ledroideenchaine.com/news+index.storytopic+10.htm Actualité Robotique et systèmes multi-agents] {{Portail informatique}} [[Catégorie:Programmation informatique]] [[Catégorie:Intelligence artificielle distribuée]] [[de:Multiagentensystem]] [[en:Multi-agent system]] [[es:Sistema multi-agente]] [[fa:سامانه‌های چندعامله]] [[it:Sistema multiagente]] [[ja:マルチエージェントシステム]] [[pl:System wieloagentowy]] [[pt:Sistema multiagente]] [[ru:Многоагентная система]]