« Programmer la complexité : vivant, sociétés, conscience, écosystèmes »

Rémi Sussan
1,6K vues

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 !

Sugarscape est le cas le plus connu d’application des systèmes multiagents aux sciences sociales. Les deux économistes qui en sont à l’origine, Robert Axtell et Joshua Epstein, ont imaginé un « minimonde » peuplé d’agents susceptibles d’accomplir des actes économiques simples. Dans la première version, les « habitants » de ce petit univers se contentaient de ramasser la ressource principale, le sucre, afin d’augmenter leur durée de vie. Puis Axtell et Epstein ont commencé à complexifier leur programme : ils ont ajouté une longévité maximale, des capacités de reproduction et enfin, une seconde ressource, l’épice. Les créatures de Sugarscape avaient besoin des deux aliments pour vivre et se reproduire, mais chaque agent disposait, en fonction de son « ADN », de « préférences » : certains avaient besoin de plus de sucre, d’autres d’épice. Chaque agent pouvait alors troquer avec ses voisins. Axtell et Epstein ont aussi ajouté un mécanisme représentant la culture (les agents préfèrent marchander avec les voisins possédant la même culture, une simple variable numérique qu’ils possèdent en commun). Les résultats obtenus ont été étonnants. Par bien des côtés, ils ont reproduit certains des phénomènes de « l’économie réelle » : des riches s’enrichissent, tandis que les pauvres s’appauvrissent. Et les « prix » n’atteignent jamais l’équilibre, contrairement à ce qu’une vision traditionnelle de l’économie pourrait laisser croire. Comme le dit Eric Beinhocker dans son livre L’Origine de la richesse : « Au sein de Sugarscape s’est développé spontanément un ordre complexe, une diversité, une structure incluant ce qui pourrait être interprété (avec un peu d’imagination) comme des tribus, des villes commerçantes, des routes marchandes et des marchés, rien de tout cela n’ayant été programmé. » Pour Axtell et Epstein, un programme comme Sugarscape nous ouvre sur une nouvelle conception de la méthode scientifique : la « science générative ». Pour comprendre un phénomène, expliquent-ils, « faites le pousser » !
 
Vous trouverez plusieurs versions de Sugarscape dans la bibliothèque de modèles de Netlogo, malheureusement limitées aux premières phases du programme (avec le sucre uniquement). Il existe aussi un modèle « non officiel » plus complet, qui utilise toutes les règles, sauf le combat.
 
Les automates cellulaires, une alternative
 
Un système multi-agents tel qu’implémenté par Netlogo est donc quelque chose d’extrêmement formel. Il est pourtant possible de travailler de manière encore plus abstraite avec les automates cellulaires. Ici, il n’y a plus d’agents se déplaçant dans un espace, il ne reste plus que l’espace lui-même. Celui-ci est divisé en plusieurs « cellules » qui peuvent prendre un aspect ou un autre (en fait, changer de couleur) selon « l’état » de leur voisin. Contrairement aux agents, les « cellules » n’ont donc aucun programme, aucune variable interne, aucune « mémoire ». Pourtant, il est possible là aussi de voir émerger des structures très complexes.
 
Le plus connu des automates cellulaires est le Jeu de la vie de John Conway. Les règles sont très simples : les cellules peuvent être mortes ou vivantes, c’est à dire éteintes ou allumées. Une cellule « nait » si elle possède trois voisines vivantes. Elle meurt si elle a plus de trois voisines « allumées » ou si elle en possède moins de deux.
 
Lorsqu’on lance le Jeu de la vie, on « allume » aléatoirement certaines cellules de la grille, et on laisse tourner pour voir ce qui se passe. Malgré la simplicité apparente de ce programme, une véritable ménagerie ne tarde pas à apparaître : par exemple des planeurs, structures qui se déplacent dans l’espace du jeu. Ou des « canons à planeurs » qui créent ces mêmes planeurs… Le Jeu de la vie intéresse les mathématiciens depuis sa création en 1970. Il est la démonstration qu’un univers très complexe (et donc des phénomènes du monde réel comme la vie) peut-être généré à partir de règles très simples. Cette vidéo nous montre quelques exemples de la faune susceptible d’apparaître dans le jeu de la vie.
John Conway, en 1993 dans son bureau de l’université de Princeton © Dith Pran/The New York Times
Les automates cellulaires, une alternative
 
Un système multi-agents tel qu’implémenté par Netlogo est donc quelque chose d’extrêmement formel. Il est pourtant possible de travailler de manière encore plus abstraite avec les automates cellulaires. Ici, il n’y a plus d’agents se déplaçant dans un espace, il ne reste plus que l’espace lui-même. Celui-ci est divisé en plusieurs « cellules » qui peuvent prendre un aspect ou un autre (en fait, changer de couleur) selon « l’état » de leur voisin. Contrairement aux agents, les « cellules » n’ont donc aucun programme, aucune variable interne, aucune « mémoire ». Pourtant, il est possible là aussi de voir émerger des structures très complexes.
 
Le plus connu des automates cellulaires est le Jeu de la vie de John Conway. Les règles sont très simples : les cellules peuvent être mortes ou vivantes, c’est à dire éteintes ou allumées. Une cellule « nait » si elle possède trois voisines vivantes. Elle meurt si elle a plus de trois voisines « allumées » ou si elle en possède moins de deux.
 
Lorsqu’on lance le Jeu de la vie, on « allume » aléatoirement certaines cellules de la grille, et on laisse tourner pour voir ce qui se passe. Malgré la simplicité apparente de ce programme, une véritable ménagerie ne tarde pas à apparaître : par exemple des planeurs, structures qui se déplacent dans l’espace du jeu. Ou des « canons à planeurs » qui créent ces mêmes planeurs… Le Jeu de la vie intéresse les mathématiciens depuis sa création en 1970. Il est la démonstration qu’un univers très complexe (et donc des phénomènes du monde réel comme la vie) peut-être généré à partir de règles très simples.

Related Articles