Un vol qui s'ordonne : la polarisation depuis le chaos
En 1987, Craig Reynolds voulait animer des nuées d’oiseaux sans les chorégraphier un par un. Son idée, restée célèbre sous le nom de boids, tenait en trois règles que chaque oiseau — chaque boid — applique tout seul, en ne regardant que ses voisins immédiats. Aucun plan de vol, aucun chef, aucune vue d’ensemble. Et pourtant, à l’écran, la nuée se met à tourner, à onduler, à se scinder et se recomposer comme un vrai vol d’étourneaux. C’est la sixième expérience de LifeLabs, et elle pose une question simple : combien faut-il de règles locales pour qu’un « groupe » apparaisse là où il n’y en avait pas ? La réponse de Reynolds — trois — se vérifie ici sur la fiche du run, reproductible à partir de la graine 42.
Trois règles, aucun chef d’orchestre
Le code ne contient aucune notion de « troupeau », de « destination » ni de « décision ». Il y a 300 boids, chacun réduit à une position et une vitesse sur un tore (un monde qui se referme sur lui-même), et un seul rayon de perception : chaque boid ne voit que les voisins situés à moins de 15 unités. À chaque pas, tout boid combine trois pulsions purement géométriques, calculées à partir de ces seuls voisins :
- séparation : s’écarter des voisins trop proches, pour ne pas se percuter ;
- alignement : orienter sa vitesse vers la vitesse moyenne des voisins ;
- cohésion : se diriger vers le centre des voisins, pour ne pas se perdre.
C’est tout. Trois vecteurs, une somme pondérée, un plafond de vitesse. Aucun boid ne connaît la trajectoire d’un autre au-delà de l’instant présent ; aucun ne sait qu’il appartient à un « vol » ; aucun n’a de mémoire, de but, ni la moindre capacité d’apprendre. Ce que l’on appelle un groupe n’est jamais écrit nulle part : c’est un mot que nous posons, après coup, sur un alignement de vecteurs qui se sont trouvés d’accord sans se parler.
La preuve n’est pas dans l’image, elle est dans la courbe
Pour mesurer l’ordre sans se fier à une jolie capture, on suit le paramètre d’ordre (ou polarisation) : la norme de la vitesse moyenne, une fois toutes les vitesses ramenées à la même longueur. Il vaut 0 quand les caps pointent dans toutes les directions (chaos parfait) et 1 quand tous les boids filent exactement dans le même sens (vol parfaitement aligné).
Au départ, les vitesses sont tirées au hasard : le paramètre d’ordre mesure
0,028 — le désordre quasi total. Puis, pas après pas, la courbe monte. Le
chemin n’a rien d’une ligne droite : elle stagne d’abord autour de 0,05–0,10,
hésite, retombe parfois, avant de décoller au-delà du 300ᵉ pas et de se hisser
franchement dans les 0,6–0,77. À l’arrivée, après 600 pas, elle se pose à
0,669, pour un gain de +0,64. Les 300 boids se sont répartis en 6
« groupes » distincts (num_clusters), chacun filant d’un même cap. Le
classificateur automatique, aveugle à toute intention, tranche : flocked.
Sur la vidéo, on voit les deux temps de cette histoire. Au début, les boids sont dispersés uniformément sur tout le plan, chacun pointant dans sa propre direction — un semis grésillant, sans structure. À la fin, ils se sont condensés en quelques amas denses et cohérents qui glissent d’un seul mouvement, laissant de larges vides autour d’eux. Personne n’a dessiné ces vols ; ils sont le point d’équilibre où l’alignement et la cohésion ont fini par gagner sur le hasard initial.
Le contrôle qui écarte l’artefact
Une courbe qui monte ne prouve rien à elle seule : peut-être le simple plafond de vitesse, ou un biais de la simulation, suffirait-il à aligner les boids. Pour l’écarter, on rejoue exactement le même run — mêmes 300 boids, même graine, mêmes 600 pas — mais avec les trois poids mis à zéro. Plus de séparation, plus d’alignement, plus de cohésion : les boids gardent leur vitesse initiale sans jamais la corriger. Résultat, le paramètre d’ordre reste à 0,019 du premier au dernier pas. Il ne monte pas. La hausse observée dans le vrai run ne vient donc ni du clamp de vitesse, ni du tore, ni d’un artefact : elle vient des trois règles, et d’elles seules. Ce contrôle négatif est le garde-fou qui transforme une jolie animation en résultat.
Une émergence d’un autre genre
LifeLabs a déjà montré deux formes d’émergence. Avec Lenia, c’était un motif : une créature de lumière qui se maintient dans un champ continu, une forme stable. Avec les agents évolutifs, c’était un comportement appris : une politique affinée par essais et erreurs, récompense après récompense. Les boids n’appartiennent ni à l’une ni à l’autre catégorie. Ici, rien ne se fige en forme, et rien ne s’apprend : il n’y a aucune récompense, aucun entraînement, aucun paramètre ajusté par l’expérience. C’est une émergence de mouvement collectif — un ordre cinétique qui naît, image par image, de la seule répétition de trois contraintes locales sur des voisins immédiats. Le « vol » n’est pas un objet ni une compétence : c’est un régime, un état de la nuée.
Une honnêteté de vocabulaire
Il faut garder les guillemets. Un boid n’a aucune intention de rejoindre le groupe ; il ne communique avec personne ; il n’apprend rien de ce vol au suivant. « Vol » et « groupe » sont nos mots à nous, plaqués sur de la géométrie locale répétée. Ce que le run démontre honnêtement est à la fois plus modeste et plus étonnant que de l’intelligence collective : trois règles instantanées, purement locales, sans coordination centrale ni mémoire, suffisent à faire émerger un mouvement ordonné depuis un départ parfaitement aléatoire. C’est exactement la ligne de LifeLabs : de l’organisation globale qui remonte du local, sans personne aux commandes.
Faites-le vous-même
La démo Boids tourne entièrement dans votre navigateur. Regardez la nuée se former sous vos yeux ; poussez le curseur alignement vers zéro et le vol se disloque en une poussière désordonnée ; montez la cohésion et les amas se resserrent en boules compactes ; jouez sur le rayon de perception pour élargir ou rétrécir le « voisinage » que chaque boid prend en compte. Rien n’est préenregistré : c’est la même règle locale que ci-dessus, recalculée à chaque frame.
Ouvrez la fiche complète du run pour les paramètres exacts, ou la page de l’expérience Boids pour le contexte. Tout est reproductible à partir de la graine 42. Crédit à Craig Reynolds, Flocks, Herds, and Schools: A Distributed Behavioral Model (1987).