Programme de vie artificielle Boids

Troupeau de chevaux sauvagesCertains pourraient trouver bizarre l’idée de vouloir reprogrammer l’intelligence d’un troupeau d’animaux. À ceux-ci je réponds : « On en reparlera quand il va commencer à manquer d’animaux. »

Vous devez maintenant savoir que j’aime beaucoup les chevaux, donc pour la suite de l’article on pourra lire “cheval” au lieu de “animal”.

Bon passons aux choses sérieuses. Comme je disais, nous avons présentement la chance de pouvoir observer et analyser l’intelligence d’un cheval sauvage au sein de son troupeau. C’est ce que nous allons faire à l’instant, puis nous allons la reproduire partiellement en JavaScript.

Appliquons maintenant les règles de Boids à nos chevaux sauvages. La logique suivante est inspirée d’un programme informatique de vie artificielle développé par Craig W. Reynolds en 1986, nommé Boids. Elle a depuis été utilisée par exemple pour créer des animations dans les films Le Retour de Batman et Le Roi Lion.

Cheval

Appliquons maintenant les règles de Boids à nos chevaux sauvages:

  1. La cohésion. Pour former un troupeau, les chevaux se rapprochent les uns des autres;
  2. La séparation. 2 chevaux ne peuvent pas être au même endroit au même moment;
  3. L’alignement. pour rester groupés, les chevaux essaient de suivre le même chemin.

Voici les caractéristiques importantes d’un cheval sauvage:

  • Le cheval ne peut pas courir aussi vite qu’il le veut. Il est limité par sa vitesse maximale (Horse.maxSpeed).
  • Un autre cheval peut être considéré comme voisin dans le cas où il se trouve dans le rayon prédéterminé (Horse.neighbourRadius)
  • Le cheval observe ses voisins pour déduire dans quelle direction se déplace son troupeau
  • Un cheval sauvage ne porte pas d’oeillères; ainsi nous ne leur programmerons pas d’angle mort. Donc, pour le cas présent, un voisin en arrière du cheval sera pris en compte de la même manière qu’un voisin qui serait en avant.

La démo suivante conçue en JavaScript vous permet d’interférer avec les chevaux en déplaçant votre curseur par dessus. De plus, vous pouvez cliquer dans le canvas pour arrêter le temps.

La source est accessible via le menu “JavaScript”. De plus, je vous encourage à ouvrir le JSFiddle si vous désirez modifier ou inspecter la logique!

Si vous avez apprécié ce billet, vous le lisez probablement d’une époque où il ne reste plus beaucoup d’animaux. Je comprends, pas besoin de me remercier.

Pour en savoir plus, consultez la page du créateur du programme, M. Reynolds : http://www.red3d.com/cwr/boids/

Laisser un commentaire

Votre adresse courriel ne sera pas publiée. Entrez votre nom, courriel et votre commentaire.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">