7.3 La synchronisation La possibilité de synchroniser les comportements est une propriété commune à de nombreux systèmes d'auto-organisation dans la nature. Par exemple il y a les lucioles qui, chez certaines espèces, sont capables de synchroniser leurs émissions lumineuses. Ou les grillons qui, chez certaines espèces, sont capables de synchroniser leurs chants. Les cigales sont une sorte d'insectes qui a un développement synchronisé et émergent au stade larvaire à certaines cycles qui sont des nombres premiers d'années. Les neurones du cerveau sont capables de synchroniser leurs émissions. Les cellules du cœur synchronisent leurs battements. Tous ces comportements semblent avoir une certaine signification adaptative et ont été obtenus par la sélection naturelle. Dans cette sous-unité, nous allons observer un exemple, celui des lucioles qui clignotent. Donc avec un peu de chance vous avez vu à certains moments ce phénomène de synchronisation du clignotement des lucioles. Je vais vous montrer cette petite vidéo. Les points faibles de lumière sont des lucioles individuelles. Et vous pouvez constater que très rapidement beaucoup d'entre elles commencent à clignoter à l'unisson et ces flash synchronisés deviennent encore plus forts alors que de plus en plus de lucioles se joignent à l’unisson. Il semble que ce phénomène soit environ d'un clignotement par seconde. C'est très saisissant. Comme dans notre analyse de la formation des groupes d'oiseaux ou des bancs de poissons, nous pouvons nous demander pourquoi ces systèmes sont synchronisés. Au moins dans le cas des lucioles il semble avoir une explication en termes de rencontre. Encore une fois il y a plusieurs hypothèses. Une hypothèse est que les flash synchronisés rend la localisation des mâles plus visibles pour les femelles, donc les femelles peuvent venir trouver les mâles. Il permet aux petits groupes de mâles d'apparaître plus grands et ainsi les rendre plus attirants pour les femelles. Il réduit le bruit. Autrement dit, les mâles peuvent détecter plus facilement les femelles dans l'obscurité entre les clignotements, ce qui est mieux que d'avoir à les trouver au milieu des éclairs quand tout est chaotique. Ce ne sont que des hypothèses. Peut-être qu'elles sont toutes correctes, ou seulement certaines. Personne ne le sait vraiment avec certitude, mais il semble que ce soit un traitement adaptatif. Ensuite la question est de savoir comment la synchronisation se fait. L'hypothèse est qu'il n'y a pas de leader prenant en charge la synchronisation. Chaque luciole ne voit que les clignotements de ses voisins. Et ce qui a été découvert, c'est que chaque luciole est un oscillateur naturel, c'est à dire qu'elle clignote à une fréquence d'environ 1 seconde. L’excitation de l'activité cérébrale s'accumule dans ses neurones, qui à un certain seuil déclenche un clignotement. Il y a donc un rythme naturel à cela. Cependant, si la luciole voit ses voisins clignoter alors il essaye soit de réinitialiser son cycle, c'est à dire l’excitation est remise à zéro ou il accélère son cycle peut-être en fonction de l'espèce. Mais le résultat que les gens ont constaté, lorsqu'un groupe de ces oscillateurs interagit, est une synchronisation comme celle que nous avons vue. Et ceci s'appelle: synchronisation par oscillateurs couplés. Donc, d'une manière similaire à l'exemple du vol d'oiseaux, nous avons ici un mécanisme très simple qui produit une synchronisation décentralisée. Et nous pouvons le modéliser assez vite avec NetLogo. Regardons ce modèle. Nous allons observer le modèle NetLogo des lucioles qui est dans section biologie de la bibliothèque des modèles et ce qui se passe dans ce modèle, nous allons le voir dans une seconde, Nous allons avoir un certain nombre de lucioles, chacune est un oscillateur naturel avec sa propre horloge, qui après un certain nombre de tics il va se mettre à clignoter. Disons que la longueur du cycle est de 10. Chaque fois que l'horloge arrive à zéro la luciole clignote. puis après le clignotement, le compteur s'accroît jusqu'à 9 et il atteint 0 à nouveau et clignote. Donc à chaque fois qu'il atteint le maximum, il réinitialise l'horloge à 0, puis clignote. Toutes les lucioles dans le modèle ont le même cycle de temps mais chaque réinitialisation commence à un point arbitraire du cycle Ils ne vont pas commencer à zéro mais à un point aléatoire. Donc voyons cela. Donc j'ouvre NetLogo et je vais dans "models library". Je vais dans "biology". Je vais dans "fireflies". Et je l'ouvre. Donc, pour illustrer comment cela fonctionne, démarrons avec une seule luciole. Regardons maintenant combien de lucioles nous avons et quel est le la longueur du cycle, qui est initialisé à 10 tics. Donc nous faisons un "setup", voici notre luciole en bas à droite ici, un petit triangle gris. Et faisons... Diminuons un peu la vitesse puis "go". Et vous pouvez constater que la luciole se déplace. Nous voyons ici le monde délimité par les bords. Et à chaque cycle de 10 clics, la luciole clignote. Il n'y a personne d'autre pour interagir donc elle va continuer à clignoter, avec le même cycle. Ok, je l'arrête. Maintenant recommençons avec deux lucioles. Il y en a un ici que vous ne pouvez pas bien voir et celui-ci, notez qu'il démarrent à des points différents de leur cycles. Celui-ci, par chance, a démarré au moment du clignotement du cycle. Celui-ci a démarré à un point différent. Maintenant lorsque je fait "go", vous pouvez voir les voir clignoter mais à des moment différents. Et de manière similaire, si je démarre avec, disons... 45 vous allez voir différentes lucioles clignoter à des moments différents. Ok, regardons comment elles interagissent. Quand une luciole perçoit une autre luciole, ou quand une ou plusieurs lucioles clignotent à proximité les unes des autres, et elles regardent dans un rayon d'une case, donc elles ne peuvent voir seulement qu'une case autour d'elles, elles utilisent cette information pour réinitialiser leurs propres horloges. Donc voici comment cela fonctionne: Chaque luciole a un paramètre appelé flash-length (durée du clignotement), qui est le nombre de tics de chaque clignotement. Dans la version que nous avons vue il y a une seconde, il était de 1 tic par clignotement. Donc nous pouvons penser qu'il est de un tic pour l'instant, nous pourrons le changer plus tard. Ils ont aussi un autre paramètre appelé flashes-to-reset (seuil de reinitialisation) qui contient le nombre de lucioles qui doivent clignoter pour réinitialiser leurs propres horloges. Donc elles doivent observer une case autour d'elles et compter, à chaque intervalle de temps, le nombre de lucioles qu'elles voient clignoter. Et elle peuvent utiliser l'une des deux règles. La première est appelée phase-delay (retard de phase). Et voici comme elle fonctionne: Si je suis une luciole, si je vois assez de clignotements dans mon rayon de vision, c'est à dire, si vous vous rappelez "flashes-to-reset" donne ce nombre, combien de clignotements dois-je voir dans mon champ de vision pour réinitialiser mon horloge. Si j'en vois assez je vais réinitialiser mon horloge à "flash-length". Et "flash-lentgh" est à 1 tic, donc Je vais réinitialiser mon horloge à 1. Toutes les lucioles clignotent lorsque leur horloge est à zéro. Donc lorsque mon horloge est à zéro je clignote et si je réinitialise mon horloge à 1 c'est en fait que je suis revenu en arrière, d'une certaine manière de l'instant où j'étais, jusqu'à l'instant juste après que j'aurais du clignoter. Et le résultat c'est que ceci me synchronise avec les clignotements que je viens juste de voir. Parce tous ceux que j'ai vu clignoter, viennent de terminer leur clignotement et donc leurs horloges sont toutes à 1 ou à deux si leur "flash-length" est à 2 et ainsi de suite... Donc ceci me synchronise avec les autres lucioles que j'ai vu dans mon voisinage. C'est appelé un "retard" (delay) parce qu'il s'agit bien d'un retard appliqué à mon horloge pour être en phase avec ceux que j'ai vu. Il y a une autre règle possible appelée phase-advance (avance de phase) qui dit que si je vois assez de clignotements dans mon rayon de vision I réinitialise alors mon horloge à 0, donc j'avance mon horloge et je clignote immédiatement. Nous pouvons expérimenter ces deux règles. Mais voyons à quoi le comportement ressemble. Notez que la stratégie ici est paramétrée avec "delay" Le "flash-to-reset" c'est le nombre que je dois voir dans mon voisinage, pour réinitialiser mon horlore, est à 1 donc j'ai besoin de voir un seul clignotement. Le "flash-length" est de 1 tic, le "cycle-lenght" est de 10 tics ok, "show-dark-fireflies" montre les grises, celles qui ne clignotent pas, si je le mets sur "off" Si je le positionne sur "off" elles vont disparaître, je ne vais pas le faire pour l'instant. Maintenant je vais initialiser "number"... à disons... Ehhh... 7... environs 700, un petit peu au dessus de 700. Ok, donc "setup". Maintenant il y en a beaucoup. Et "go", et accélérons un peu la vitesse. Sur ce diagramme vous pouvez voir combien clignotent à chaque étape. Voilà ce que ça donne. Donc elles interagissent toutes les unes avec les autres. Et vous commencez à voir ce nombre augmenter ici. Ce qui signifie que de plus en plus de lucioles se synchronisent. Et il augmente rapidement. Ralentissons un peu. Le caractère aléatoire vient du fait qu'elles se déplacent au hasard, elles interagissent de manière aléatoire. Elles deviennent évidemment de plus en plus synchronisées pour les clignotements. Je pense que nous pouvons mieux le voir si je diminue un peu, maintenant vous pouvez voir réellement une synchronisation des clignotements. Donc cette stratégie de "delay" semble fonctionner. Bien, arrêtons. Maintenant vous avez vu qu'il y a un ensemble relativement simple de règles auxquelles chaque luciole obéit. Chaque luciole interagit uniquement avec ses voisins les plus proches à une case de distance, et pourtant, nous pouvons obtenir voir l'ensemble du groupe entrer en synchronisation presque parfaite. Si j'avais pris un peu plus de temps, ça aurait été meilleur, nous serions arrivés à une synchronisation parfaite, sans luciole individuelle possédant une connaissance globale de ce qui se passe. Donc faisons un petit exercice ou vous jouerez vous-même avec ce modèle.