Le vivant, les sociétés, la conscience, les écosystèmes semblent échapper à notre pensée linéaire, classique, issue des travaux de Newton. Ces domaines, dont la compréhension pourrait bien être fondamentale à notre survie, paraissent réfractaires à toute prévision et entrent dans le nouveau champ de la « complexité ». Cela veut-il dire qu’ils se jouent de toute tentative de codage ?
Si l’informatique « à la papa », celle des bons vieux programmes Cobol qui automatisaient les fiches de paie, semble dominée par le paradigme du contrôle, de l’absence de créativité ou de l’ambiguïté, cela fait bien longtemps maintenant que les informaticiens ont compris que le caractère rigoureux de la programmation informatique n’interdit pas pour autant la surprise ! De fait, l’ordinateur est depuis bien longtemps l’outil favori des explorateurs de la complexité.
Un article de Rémi Sussan
Illustrations © Mondocourau.com
Qu’est-ce que la complexité ?
Mais d’abord, la complexité qu’est-ce que c’est ? Difficile à dire, car il en existe plusieurs définitions, chacune liée à une théorie particulière. Si par exemple vous référez au chaos, vous définirez la complexité comme la sensibilité extrême aux conditions initiales : autrement dit, pour employer la fameuse expression, c’est ce battement d’ailes de papillon à Melbourne qui finit par déclencher un ouragan à Montréal. D’autres – en s’inspirant des mathématiques fractales – vous diront que la complexité est produite au sein de systèmes autosimilaires (composés de versions d’eux-mêmes). Les adeptes de la théorie des réseaux vous parleront des petits mondes, de l’importance des liens « faibles », de la connectivité d’un système, etc.
Mais la meilleure définition de la complexité, la plus simple, c’est peut-être de dire que le tout diffère de la somme des parties. Lorsque plusieurs éléments d’un système s’associent, des phénomènes imprévus se produisent : on parle alors d’« émergence ».
Il est difficile de prédire l’émergence, mais relativement aisé de la produire. La grande question du prochain siècle sera peut-être de savoir si générer « virtuellement » de l’émergence nous aide à mieux comprendre l’émergence dans le monde réel.
Il y a bien sûr des tas de moyens de chercher à « programmer la complexité ». On peut utiliser de complexes équations mathématiques, plonger dans les big data, etc. Tout cela demande un haut niveau de formation, l’accès à de grosses machines et de puissantes banques de données. Mais l’une des principales manières de créer de l’émergence est à la portée de tous : il s’agit des systèmes multi-agents.
Les systèmes multi-agents : faire émerger des phénomènes non programmés
Ces programmes sont employés pour simuler des « collectifs décentralisés » comme le sont la plupart des systèmes complexes. Il s’agit de « mini-mondes formels » peuplés d’acteurs : les agents. Ceux-ci sont des petits programmes informatiques dotés d’un certain nombre de propriétés et capables d’actions très simples. On peut les comparer à des fourmis ou des termites. En gros, le programme intégré à un agent ne prend que quelques lignes. Chaque simulation multi-agents comprend en général un grand nombre d’agents, et parfois des agents de plusieurs espèces (c’est-à-dire disposant de propriétés et d’actions différentes). Ces agents se déplacent dans un espace constitué par une grille composée de cases. Ces cases peuvent elles aussi posséder certaines propriétés, par exemple héberger des ressources, ou receler des dangers. Les agents peuvent donc interagir avec leur voisin ou avec le « terrain ». Tous les agents d’une même espèce ont le même programme et les mêmes propriétés ; en revanche, les paramètres sont variables. Par exemple, tous les membres d’une espèce pourront posséder une propriété « durée de vie ». Mais celle-ci variera entre un et plusieurs « tours ». Ce paramètre pourra changer en fonction de l’environnement, des interactions avec les congénères, voire être déterminé par un nombre aléatoire.
Ceux qui travaillent sur les systèmes multi-agents cherchent donc à comprendre comment se créent les systèmes complexes. Il ne s’agit pas ici de créer des simulations très élaborées. L’objectif est exactement inverse. Le but consiste à générer un système avec un minimum de règles et de données de base, et de voir ce qui, à partir de ces ensembles minimaux, est susceptible de produire de la complexité. Autrement dit, le « bon » programme multi-agents est celui, qui, au départ, en fait le moins. L’intérêt consiste à découvrir le petit nombre de règles susceptible de faire émerger des phénomènes non programmés. Si ces aspects émergents existent dans le monde réel, on dispose alors peut-être d’une piste pour comprendre un phénomène.
Copie d’écran de l’environnement Starlogo TNG © MIT Scheller Teacher Education Program
Bien sûr, on peut programmer un tel système avec n’importe quel langage, mais c’est loin d’être à la portée du premier venu. En revanche, il existe des langages déjà adaptés à ce genre de travail, et d’une syntaxe assez simple. Ainsi, le Starlogo, créé dans les années 1990 par Mitchel Resnick, du MIT. Sous sa forme originale, Starlogo n’est plus utilisé, mais il a donné naissance à deux « enfants » : Starlogo TNG et Netlogo.
La première ambition de Mitchel Resnick était éducative et épistémologique. C’est pourquoi il avait basé son langage sur le Logo, plutôt réservé aux enfants, et qu’il destinait Starlogo aux collégiens. En fait, selon lui, la compréhension même des fonctionnements des systèmes décentralisés nous est tellement étrangère qu’il nous est difficile de penser autrement qu’en termes de commandement et de hiérarchie. Resnick espérait qu’un langage comme Starlogo nous familiariserait dès notre plus jeune âge avec ce genre de phénomènes. Aujourd’hui, Starlogo TNG avec son langage visuel et son imagerie 3D incorpore des éléments de jeux vidéos et conserve le côté « langage pour djeuns » voulu par Resnick.
Netlogo a aussi des possibilités 3D, et certains éléments pouvant aider à créer des jeux vidéos. Mais soyons clairs, Netlogo, plutôt austère, s’adresse de préférence à des chercheurs ou des étudiants.
Un exemple de modèle Netlogo : la relation prédateur-proie
Jeter un coup d’oeil sur la bibliothèque de modèles de Netlogo suffit à convaincre de la large palette de phénomènes étudiés. Certains appartiennent au domaine de la physique, d’autres – peut-être les plus nombreux -, à celui de la biologie ou de l’écologie, d’autres encore aux sciences sociales ou à la psychologie. Vous n’êtes pas obligés de télécharger Netlogo pour jouer avec les modèles. Vous pouvez les visualiser dans votre navigateur.
Examinons par exemple une relation « prédateur-proie », l’un des systèmes complexes les plus simples et les plus classiques.
Copie d’écran de l’environnement Netlogo © Northwestern University
On crée deux espèces, les moutons et les loups qui se reproduisent et se nourrissent : les moutons mangent de l’herbe, les loups mangent les moutons. Les deux espèces possèdent une variable « énergie » qu’ils dépensent quand ils se déplacent et qu’ils gagnent lorsqu’ils s’alimentent. À intervalles réguliers, les animaux se reproduisent. À ce moment, la quantité d’énergie du parent est divisée par deux, et une moitié est offerte au rejeton.
Tous les agents de la simulation possèdent ces points communs, mais il existe des différences entre les loups et les agneaux : on peut leur donner un taux de reproduction spécifique, chaque espèce peut gagner plus ou moins d’énergie. La simulation permet de changer ces valeurs à l’aide de différents boutons de l’interface… Le jeu consiste à faire varier les curseurs pour obtenir un système écologique stable. Les valeurs par défaut conduisent à une triste situation : les loups finissent par exterminer les agneaux, puis meurent de faim à leur tour. Cherchez les solutions optimales ! Lorsque vous aurez épuisé tous les modèles disponibles dans la librairie, vous pourrez alors construire vos propres modèles. Apprendre le code n’est vraiment pas la mer à boire.
Sugarscape : l’économie générative !