Étude pour automates cellulaires nº 1

26 juillet 2018

Le brillant livre de Complexity: A Guided Tour contient une explication assez exhaustive des algorithmes génétiques, c’est-à-dire des algorithmes qui sont conçus pour pouvoir évoluer en fonction de forces extérieures qui sont appliquées sur eux. Mitchell se sert des automates cellulaires pour construire un exemple de ces algorithmes génétiques. Lors de ma lecture de ce livre, j’ai programmé un système me permettant d’appliquer cette matière fascinante et d’en faire des courts métrages d’animation.

Étude pour automates cellulaires nº 1 est un premier exemple de film d’animation réalisé avec ces méthodes, et il peut être L’image ci-dessus est tirée de ce film.

Génétique et mutations

Chacune des scènes de ce film est formée par un algorithme différent, qui est défini par une simple séquence de chiffres. Cette séquence constitue, d’une certaine façon, l’adn de la scène. Par exemple, l’image ci-dessous provient d’une scène du film qui est définie par cette séquence : "0111100010000001".

Définir un algorithme d’une façon aussi simple et optimisée permet beaucoup de choses. Premièrement, cela permet de générer aisément une immense quantité d’algorithmes semblables (mais tous différents), mais surtout, cela permet d’appliquer des mutations et des croisements entre divers algorithmes. Par exemple, la séquence "0111100010000000" peut être considérée comme une mutation de la séquence "0111100010000001", puisqu’un seul chiffre a été changé pour passer de l’une à l’autre.

Le système sur lequel est basé ce film peut donc produire 65,536 différentes scènes (ou 216). Cet ensemble de tous les résultats potentiels s’appelle l’espace des possibilités (“possibility space” en anglais), et c’est le moyen par lequel on se déplace dans cet espace immense qui constitue la plus épineuse des questions.

Dans mon cas, la première idée qui m’est venue en tête était de me déplacer dans cet espace en fonction de la beauté subjective que j’accordais à chacune des scènes animées. Et après avoir passé beaucoup de temps à me déplacer dans l’espace des possibilité de cette manière, et après m’avoir beaucoup gratté la tête en imaginant des moyens de déplacement plus sophistiqués et intéressants, je n’ai rien trouvé de mieux.

Code

Le code écrit pour réaliser ce court métrage se trouve ici sur GitHub, sur les branches genetic et with-creategraphics du projet Git. L’objet geneticScene05 que l’on trouve dans le fichier scenes-genetic-01.js a servi à créer la totalité du film.

Contexte

Cette note de blog fait partie de mon projet de recherche Vers un cinéma algorithmique, démarré en avril 2018. Je vous invite à consulter la toute première note du projet pour en apprendre davantage.