Firefly
Dans cette expérience, le BioWall est un système matériel évolutif autonome capable de résoudre le problème de la synchronisation en deux dimensions. Le visiteur est invité à essayer puis à rompre le processus de synchronisation.


En 1997, le Laboratoire de systèmes logiques a conçu un système matériel évolutif, appelé Firefly, mettant en oeuvre les principes de la programmation génétique afin qu'un ensemble de machines cellulaires résolve un problème spécifique. Le problème en question est une tâche de synchronisation: à partir de n'importe quelle configuration initiale, l'automate cellulaire non uniforme doit atteindre, en M pas de temps, une configuration finale dans laquelle toutes ses cellules oscillent en parfait synchronisme entre des 0 partout et des 1 partout, lors de pas de temps successifs. La nouveauté introduite par le système Firefly, c'est qu'il fonctionne sans dispositif externe (tel qu'un ordinateur exécutant les opérations génétiques) et réalise ainsi une évolution autonome en ligne.

Alors que la machine Firefly originale résolvait le problème à l'aide d'un automate cellulaire unidimensionnel, la machine obtenue par évolution sur le BioWall réalise la tâche de synchronisation à deux dimensions. Les bases théoriques de l'extension de la solution de 1D à 2D sont décrites dans le livre cité en référence.

L'implémentation sur le BioWall correspond à un automate cellulaire non uniforme à deux états, dans lequel chaque cellule (chaque FPGA du BioWall) peut exécuter une règle différente. Les tables de règles des cellules sont encodées sous forme d'une chaîne de bits, appelée génome. Pour notre automate cellulaire 2D, dont le voisinage est égal à 5, cette chaîne comporte 25=32 bits. Au lieu de recourir à une population d'automates cellulaires évolutifs, notre algorithme procède à l'évolution d'un seul automate non uniforme de la taille du BioWall entier (2000 cellules, soit une cellule par unité) dont les règles sont initialisées de manière aléatoire. De même, on génère aléatoirement plusieurs configurations initiales et chacune d'elle est exécutée pendant M pas de temps. Le fitness de chaque cellule est ainsi accumulé pendant C configurations initiales: le résultat de chaque exécution vaut 1 si la cellule se retrouve dans l'état correct après M+4 itérations, 0 dans le cas contraire. Le fitness relatif à la tâche de synchronisation est assigné à chaque cellule en considérant les quatre derniers pas de temps (M+1 à M+4): si la séquence d'états au cours de ces pas est précisément 0-1-0-1, le fitness de la cellule vaut 1, autrement 0. Toutes les C configurations, les règles sont modifiées par croisement et mutation. Ce processus évolutif est réalisé de manière locale car les opérateurs génétiques ne sont appliqués qu'aux cellules présentant une interconnexion directe.

Contrairement aux algorithmes génétiques classiques, dans lesquels une population de solutions indépendantes d'un problème évolue globalement, notre approche met en oeuvre une grille de règles qui co-évoluent localement. L'automate cellulaire implémenté sur le BioWall opère de manière locale car ses cellules n'ont accès qu'aux états de leurs voisines immédiates. Le processus évolutif est également local, puisqu'aussi bien l'application des opérateurs génétiques que le calcul du fitness s'effectuent localement.

Cette approche de programmation cellulaire sur le BioWall démontre qu'il est possible de résoudre le problème de la synchronisation en évoluant un automate cellulaire non uniforme de rayon 1. Après avoir trouvé un ensemble de règles adéquates, il est possible de changer l'état de chaque cellule de l'automate en pressant sur sa membrane tactile. L'utilisateur peut ainsi observer comment la machine synchronise ses 2000 cellules.


Pour en savoir plus
  • M. Sipper. The Evolution of Cellular Automata: The Cellular Programming Approach. Springer-Verlag, Berlin 1997.

Ressources

A synchronization step on the BioWall.
© C. Teuscher


506KB JPEG