Les automates cellulaires

Un automate cellulaire consiste en une grille régulière de « cellules » contenant chacune un « état » choisi parmi un ensemble fini et qui peut évoluer au cours du temps.

L'état d'une cellule au temps t+1 est fonction de l'état au temps t d'un nombre fini de cellules appelé son « voisinage ».

À chaque nouvelle unité de temps, les mêmes règles sont appliquées simultanément à toutes les cellules de la grille, produisant une nouvelle « génération » de cellules dépendant entièrement de la génération précédente. wikipédia

Le projet

Sur la base du programme du jeu de la vie, qu'il faudra comprendre, on construit des simulations

  • d'évolution d'une épidémie

  • de feux de forêts

  • etc.

Ce projet se réalise avec Processing.

Le choix de Processing est motivé par le fait que la création d'interfaces graphiques y soit particulièrement aisée.

Les programmes s'implémentent en Python (2.7) et sont interprétés en Java.

Le jeu de la vie

Le jeu de la vie est un automate cellulaire imaginé par John Horton Conway en 1970  qui est probablement le plus connu de tous les automates cellulaires.

Le principe

Tout est expliqué sur la page de wikipédia.

Le programme

Voici le programme à télécharger, décompresser et à ouvrir avec Processing.

  • Votre 1er travail consiste à le comprendre.

  • Il est largement commenté...

  • N'hésitez pas à modifier certains paramètres...

Une version dans un notebook (p5)

Projet 1

Simuler une épidémie

En vous basant sur :

  • Ce document (un TPE réalisé par des élèves de 1ère) (et de ce que vous trouverez ailleurs)

  • Le programme du jeu de la vie

    • En modifiant la fonction next() pour appliquer de nouvelles règles d'évolutions.

    • En rajoutant des couleurs dans la classe Cell (sain, contaminé, guéri, décédé).

Vous réaliserez une simulation de l'évolution d'une épidémie à l'issue de laquelle les pourcentages des différents états sont attendus.

Projet 2

Simuler un feu de forêt

En vous basant sur :

  • Le programme du jeu de la vie

  • Ce programme (la base de cette simulation)

    • Il vous faudra compléter la fonction next() pour appliquer les règles d'évolutions

    • Imaginer ce qu'il faut pour pouvoir tenir compte des vents dominants

Vous réaliserez une simulation de l'évolution d'un feu de forêt à l'issue de laquelle un pourcentage d'arbres survivants est attendu.

Projet 3

Propagation d'une opinion

En vous basant sur le programme du jeu de la vie, vous imaginerez des règles qui simulent la propagation d'une rumeur ou d'une opinion dans une population.

voir cet article

Projet 4

Mitchel Resnick nous raconte une belle histoire:

Dans un étang, grenouilles et tortues vivaient en harmonie. Chaque grenouille qui vit sur un nénuphar  a quatre grenouilles et quatre tortues comme voisines sur les huit nénuphars voisins. (Il est facile de voir que ce sont des nénuphars carrés sur un quartier de tourbières.) Mais un jour, une mauvaise tempête se lève et tourbillonne tout autour et beaucoup de grenouilles et de tortues meurent (à parts égales). Lorsque la tempête s'apaise, les animaux tentent de s'organiser à nouveau et se reposent sur les nénuphars.

Cependant, ils ne sont heureux que s'ils ont au moins trois voisins appartenant à la même espèce, sinon ils essaient de trouver un autre nénuphar libre.

Que se passe-t-il dans ce processus ?

Il se forme des colonies qui ne sont peuplées que des tortues et d'autres colonies qui ne sont peuplées que de grenouilles. Un hibou qui passe  demande à une grenouille s'ils ne s'entendent plus.

"Oui, nous nous aimons comme toujours. Seulement ... il arrive que nous emménagions ensemble, à condition d'avoir au moins trois voisins de notre espèce. Et les tortues ressentent la même chose".

Voici un programme qui simule cette histoire...

En vous basant sur ce programme et celui de la propagation d'un feu de forêt, vous réécrirez le programme en utilisant la classe Cell.