Processing-Niveau2-Simulation-Automates cellulaires

L’objectif est ici de programmer différents automates cellulaires afin de simuler des phénomènes physiques, biologiques et économiques. L’automate le plus classique est le jeu de la vie de Conway.

Le jeu de la vie.

Le jeu de la vie de Conway est un automate cellulaire qui fonctionne sur une grille en deux dimensions à cases carrées. Chaque cellule peut prendre deux valeurs « 0 » ou « 1 »,  autrement dit « vivante » ou « morte ». L’état futur d’une cellule dépend de l’état des 8 cellules voisines. Les règles qui déterminent cet état sont les suivantes :

  • Si la cellule est vivante et entourée par deux ou trois cellules vivantes, elle reste en vie à la génération suivante, sinon elle meurt.
  • Si la cellule est morte et entourée par exactement trois cellules vivantes, elle naît à la génération suivante.

jeu de la vie

Le  programme gratuit Golly simule de manière très efficace un tel jeu. Nous allons ici le programmer simplement à l’aide de Processing en Python sur Trinket. La rapidité d’exécution sera évidemment bien moindre.

Tableau des états des cellules.

La grille du jeu de la vie est modélisée en Python par un tableau sous forme d’une « liste de listes » contenant des 0 et des 1.

  • Ainsi la liste [[0,0],[0,0],[0,1]] représente une grille de 2 sur 2 contenant une seule cellule vivante placée sur la troisième ligne, deuxième colonne.
  • Un élément de la liste est alors appelé en faisant grille[x][y] où x est le numéro de la ligne et y le numéro de la colonne.

Génération du tableau et remplissage aléatoire des états de départ.

Pour créer une telle liste, nous allons utiliser les commandes suivantes :

  • [0]*l donne une liste de l zéros.
  • grille.append(ligne) ajoute une ligne à la grille.

Nous remplirons ensuite aléatoirement cette grille d’une proportion donnée de cellules vivantes placées aléatoirement.

A faire

Cliquer sur le lien suivant et suivre les instructions :

Exercice 1

Affichage de la grille des états.

L’affichage de la grille des cellules se fait de la manière suivante :

  • On parcourt la grille suivant les numéros de colonnes puis suivant les numéros de lignes grâce à une double boucle for.
  • si la valeur de la ligne x et la colonne y (grille[x][y]) est égale à 1, on trace un disque dans la case correspondante de la grille.

A faire

Exercice 2

Changement d’ états des cellules.

Deux grilles sont maintenant générées. Une grille représentant les états actuels et une grille représentant les états de la génération suivante.
Afin d’éviter les effets de bord nous entourerons ces grilles de cases qui resteront nulles.

A chaque changement de génération :

  •  On parcourt tous les éléments de la grille et on compte le nombre de voisins vivants de cette grille.
    – Si la cellule est vivante et entourée par deux ou trois cellules vivantes, elle reste en vie à la génération suivante, sinon elle meurt.
    – Si la cellule est morte et entourée par exactement trois cellules vivantes, elle naît à la génération suivante.

On remplit ainsi la grille nommée grillesuivante.

  •  Lorsque tous les nouveaux états sont calculés, on copie la grillesuivante dans grille.

A faire

Exercice 3

Placement des cellules initiales par clic et ajout d’un bouton démarrer.

Pour placer les cellules par clic : il faut calculer la position de la cellule correspondant au clic.

Si le diamètre d’une cellule vaut d , il faut effectuer une division entière de mouseX et de mouseY par d pour calculer les valeurs de y et de x.

Nous pouvons ainsi tester des configurations de départ particulières comme les oscillateurs.

jeu de la vie oscillateur

Ajoutons également un bouton qui lance et arrête le jeu.

A faire

Exercice 4

Opinions politiques.

Opinions politiques

Il s’agit ici d’étudier l’opinion politique d’individus se situant sur un tore. Les opinions sont représentées par des cercles bleus ou rouges.

Automate cellulaire sur un tore.

Nous sommes ici sur une grille « torique ». Autrement dit lorsqu’on dépasse la case du haut, on revient à la case du dessous, lorsqu’on dépasse la case tout à droite, on revient à la case tout à gauche.

Ainsi une case d’abscisse x placée tout en bas a comme voisins les cases d’abscisses x-1, x+1 et x placées tout en haut.

 

La majorité a raison.

Ici, la couleur politique d’une cellule se range à l’opinion politique majoritaire parmi ses voisins.

A faire

Exercice 5

Pour simuler les changements d’opinions, il est possible :

  • d’ajouter deux catégories : les inflexibles A ou B (de deux couleurs différentes) qui ne peuvent pas changer d’avis mais peuvent influencer leurs voisins.
  • ou d’ajouter des changements aléatoires d’opinion.
  • ou d’introduire un troisième parti avec des règles d’influence différentes…