Je suis sûr que vous avez vu un tel comportement soit dans la vie réelle ou dans des vidéos. Le synchronisme incroyable avec lequel les oiseaux sont capables de se regrouper, tourner et d'agir comme une seule entité. Pendant longtemps, ce comportement était vraiment mystérieux. il semblait impossible que ce genre de chose puisse être faite par un leader ... ou parce que chaque oiseau détiendrait certaine connaissance globale de l'ensemble du groupe. De même, les bancs des poissons possèdent beaucoup de ces propriétés où le comportement très complexe et synchronisée du groupe dans son ensemble semble exiger un chef ou un équivalent. Bien sûr, nous savons maintenant que ce genre de comportement est effectivement possible sans leader ou information globale de la part des individus. Cela dit, il se dégage de règles relativement simples où chacun interagit seulement avec ses voisins proches. Eh bien, nous allons d'abord nous poser la question "Pourquoi?". Pourquoi des groupes d'oiseaux? Pourquoi des bancs de poissons? Il s'avère qu'il existe un certain nombre de réponses possibles. Voici quelques-unes des hypothèses. Les prédateurs vont penser que le groupe ou le banc est en fait un seul organisme qui est grand et peut-être un danger, donc ils vont rester à l'écart. Ou les prédateurs ne seront pas en mesure de cibler les individus dans le groupe ou dans le banc. Le groupe ou le banc seront plus efficaces pour capturer une proie par la chasse coopérative plutôt que si les individus étaients seuls. Le groupe ou le banc augmenteront l'efficacité aérodynamique ou hydrodynamique des individus comme une sorte de peloton cycliste. Ce sont quelques-unes des hypothèses. Il y a beaucoup d'autres. Il est possible que toutes soient correctes. Maintenant nous pouvons aborder la question "Comment?". Comment ces groupes ou ces bancs peuvent-ils exister sans leader alors que chaque individu a seulement une petite quantité d'informations par l'interaction avec ses proches voisins? Dans les années 1980, un spécialiste de l'infographie nommé Craig Reynolds, a présenté un modèle très simple de ce phénomène appelé le modèle de Boyd. Son but était vraiment de développer un système infographique réaliste de comportement de groupe ou de banc. Il a écrit un article très célèbre appelé «Flocks, Herds and Schools, A Distributed Behavioral Model" que j'ai mis en lien sur la page des supports de cours. Il y donne un modèle simple dans lequel les individus obéissent à trois règles par ordre d'importance relative. L'évitement des collisions (séparation), pour d'éviter la collision avec les éléments du groupe à proximité. L'adaptation de la vitesse (alignement), pour tenter de faire correspondre la vitesse avec celle des éléments du groupe à proximité. Le rapprochement du centre (cohésion), pour rester proche du centre perçu des éléments à proximité. Reynolds et d'autres qui ont simulé ce modèle on trouvé que ces règles extrêmement simples produisent un surprenant réalisme. Vous pouvez le voir dans de nombreuses simulations graphiques simples du modèle. En voici une. Il s'agit d'un modèle de banc qui utilise l'algorithme de Boyd. Vous pouvez voir que ces poissons, abstraits ou idéalisés, ... finalement se comportent de façon convaincante comme un banc de poissons réel sauf pour la forme de leur corps. Il s'agit donc d'une impressionnante démonstration de comportement complexe à partir de règles simples. Nous allons voir un peu plus en détail à une version NetLogo de ce modèle. C'est dans la bibliothèque de modèles dans la section de biologie. Et voici comment cela fonctionne. Donc, nous avons un certain nombre d'oiseaux et bien que similaire au modèle de Boyd, il en est légèrement différent. Mais voici l'idée. Pour chaque oiseau, il obéit aux règles suivantes. Si je suis trop proche de mon voisin le plus proche, alors je m'en éloigne. Ce que cela signifie, c'est que je vais tourner de 90 degrés du cap suivi par le voisin le plus proche ou ... un certain nombre maximum de degrés, ce qui est un paramètre réglable par l'utilisateur. Sinon, si je ne suis pas trop près du voisin le plus proche, je vais faire deux choses. Je vais aligner ma vitesse et direction pour être le plus identique possible à la moyenne de mes voisins. Et je vais rechercher la cohésion, ce qui signifie que je vais tourner pour me rapprocher du centre que je perçois de mes voisins. OK. Alors regardons ce modèle. J'ai ouvert NetLogo puis je vais sur le menu "File", sur "models library", sur "biology" et je trouve le "flocking model". Donc, j'ouvre et vous voyiez ici que j'ai un certain nombre de curseurs qui me permettent de contrôler les paramètres du modèle. Donc je fais juste "setup" et "go". Ainsi, vous pouvez voir les petits oiseaux se déplacer. Je vais accélérer. Ils commencent à des positions au hasard, dans des directions aléatoires et se déplaçant à une vitesse constante. Avec le temps, ils commencent à se fondre dans le groupe. Et vous pouvez le voir encore mieux lorsqu'elles se déplacent plus rapidement. Ce n'est pas très réaliste, car ce n'est pas vraiment conforme à la physique du vol, mais vous pouvez cependant voir le comportement de groupe. Et remarquez comment ce monde évolue s'enroule sur les bords ici. Ainsi, la manière dont cela fonctionne est que chaque oiseau commence dans une direction aléatoire quand nous faisons "setup" puis à chaque étape chaque oiseau trouve ses voisins. Ses voisins sont les autres oiseaux qui sont dans son rayon de vision, c'est à dire à trois points plus loin. Chaque oiseau regarde son voisin le plus proche et si celui-ci se trouve à une distance inférieure à la distance minimale donnée ici, l'oiseau se détourne. Et le total du détour est défini par ce maximum de virage séparé qui est ici de 1,5 degrés. C'est le maximum qu'il va effectuer. Il va essayer de tourner le plus possible mais à l'intérieur du maximum. S'il n'a pas de voisin le plus proche dans cette séparation minimum, il fera son alignement et sa cohésion. Où il va aller aussi loin que possible pour s'aligner sur la moyenne de ses voisins ... et il va aller autant que possible pour adhérer, et se rapprocher de ses voisins, et c'est l'algorithme. Pour le test de cette sous-unité, je vais vous donner un peu d'exercice à faire avec ce modèle.