# Intelligence distribuée

L'intelligence distribuée, appelée aussi intelligence en essaim, désigne l'apparition de phénomènes cohérents à l'échelle d'une population dont les individus agissent selon des règles simples. L'interaction ou la synergie entre actions individuelles simples peut de façons variées permettre l'émergence de formes, organisations, ou comportements collectifs, complexes ou cohérents, tandis que les individus eux se comportent à leur échelle indépendamment de toute règle globale.
C'est l'indépendance entre d'une part les actions et règles qui régissent les individus et de l'autre la forme ou la dynamique collective, qui est au cœur du concept d'intelligence distribuée : comment cette cohérence globale apparaît-elle alors qu'elle n'est ni inscrite au niveau de l'individu, ni le résultat de "décisions communes", ni encore "commandée" par une "intelligence" centrale?
Un cas flagrant est le fonctionnement collectif d'une colonie de fourmis, par exemple dans le cas de la découverte d'une source de nourriture : lorsque des individus trouvent cette nourriture, ils laissent sur le chemin du retour un marqueur odorant, en l'occurrence des phéromones$^,$. La présence de cette odeur incite d'autres fourmis à emprunter le même chemin, qui laisseront elles-mêmes des phéromones, ce qui amplifie le phénomène : il y a ainsi une boucle de rétroaction positive, qui engendre un phénomène de stigmergie$^,$. Lorsque la source de nourriture se tarit, le dépôt de phéromones cesse et finit par s'effacer dans le temps, ce qui annule la rétroaction.
Les lois et phénomènes qui peuvent régir ou expliquer l'intelligence distribuée sont l'objet d'une recherche active au croisement de disciplines qui l'étudient en systémique, écologie, et « intelligence artificielle », notamment. Le concept est né en zoologie de l'observation de colonies d'insectes eusociaux. Adopté par l'"intelligence" artificielle, il y occupe une place importante dans la recherche$^,$.

## Intelligence collective d'agents simples

Ce concept n'est pas né de l'intelligence artificielle, malgré la part qu'il joue dans ce domaine. Les programmes informatiques à intelligence artificielle distribuée existent, mais ils doivent leur existence à un concept similaire de la nature. Le terme « intelligence en essaim » (en anglais « swarm intelligence »), a été énoncé dans le contexte de systèmes artificiels par Gerardo Beni en 1989 (Proceedings of the Seventh Annual Meeting of the Robotics Society of Japan).
Le concept était alors défini de la manière suivante :
   « Swarm Intelligence is a property of systems of non-intelligent robots exhibiting collectively intelligent behavior. »
(L'intelligence en essaim est une propriété de systèmes de robots non-intelligents qui montrent collectivement un comportement intelligent)$^,$$^,$.

## Du contrôle central à l’intelligence en essaim

Dans un réseau ambiant, les processeurs et leurs logiciels se diffusent dans les objets au-delà de la notion conventionnelle de nos ordinateurs actuels. Ces objets potentiellement minuscules devront être capables d’exploiter de grandes quantités de données, peu structurées et tout cela dans un contexte de connexions de moins en moins figées - hyper-mobilité oblige - voire peu sûres.
Ces systèmes d’information exigent une nouvelle approche de la production du code informatique sur laquelle pèsent de nouvelles contraintes (extrême variété des équipements, mobilité, format de données radicalement nouveaux, fonctionnements dégradés des connexions, obligation de certification du logiciel...). Les fondements de ces codes, c'est-à-dire les programmes des applications d'intelligence distribuée, reposent sur trois principes :
* le « couplage » ou l'interaction réciproque entre les codes de deux objets est d’autant plus lâche que le nombre d’objets est élevé, le mode de communication asynchrone est donc vraisemblablement le futur de logiciels en essaim ;
* la notion de micro-composants exécutables, indissociable de cette propagation ordonnée à très grande échelle du code ;
* dans une phase ultime, les algorithmes devraient s'adapter aux problèmes posés, c'est-à-dire développer d’eux-mêmes de nouvelles méthodes pour les résoudre : les futurs logiciels évolueront en fonction de leur environnement. C’est le concept exploratoire d’application mutante$^,$.