Darwin qui vient dîner
29
déc.
2008
Cela ne vous aura pas échappé, 2009 est l'année Darwin, célébrant à la fois le bicentenaire de la naissance de notre homme et les 150 ans de son chef d'oeuvre, De l'origine des espèces. Le président de la Société linéenne qui avait accueilli les exposés de Charles Darwin et d'Alfred Wallace déclara dans son rapport annuel : Cette année [1859] ne fut point marquée par aucune de ces découvertes qui, en quelques sorte, révolutionnent d'un seul coup le domaine scientifique où elles s'appliquent.
Ah, s'il avait su !
Pour fêter cette nouvelle année, je ne peux m'empêcher de reprendre le chouette travail geekesque et auto-référentiel à souhait de Pierre Lindenbaum : un portrait de Charles Darwin obtenu par… algorithme génétique.
Selon ce principe informatique emprunté à la biologie, une population de 20 individus évolue en fonction d'un seul critère : que les 50 triangles codés par un individu forment une image la plus ressemblante possible à l'image de départ. La sélection s'opère au sein de la population, les individus les plus adaptés sont recombinés entre eux pour former une nouvelle génération dont certains individus seront plus performants et d'autre moins, mais en moyenne plus performant qu'à la génération précédente. On introduit également un taux de mutation pour éviter de s'enfermer dans des minima locaux et le tour est joué. En l'espace de 200 itérations, l'évolution est étonnante ! Une belle démonstration du pouvoir de la mutation pour fournir des formes toutes plus variées les unes que les autres et de la sélection pour ne conserver que les plus adaptées au contexte donné.
Et avec un peu d'avance, je vous souhaite une bonne année à tous !
Commentaires
bonne année à vous, enro ! thank you for the genetic algorithm links, I've already forwarded the mona lisa program to a bunch of friends
I went into Roger Alsing's ABOUT ME section and was surprised to see that he listed DARWINIST (and atheist) as his religion -- maybe he was being a bit facetious (playful), but maybe not, since I've noticed that many of you scientist guys take Darwin very seriously ;-)
about your DARWIN algorithm:
did you use a different program from Alsing's ? your image after only 200 generations is fairly similar to the original image; the mona lisa after 200 was still very far away
by 20 individus, do you mean that you're using 20 different colors ?
@IRA : J'ai proposé à Pierre Lindenbaum de répondre directement à tes questions en commentaire mais je ne peux pas promettre qu'il viendra. De ce que j'en ai compris, un individu est un ensemble de 50 triangles qui peut évoluer en taille, emplacement et coloris. Et l'évolution sur 200 générations correspond aux vignettes d'en bas, assez rudimentaires encore, l'image en vis-à -vis du portrait de Darwin a été obtenue après beaucoup plus d'itérations que cela !
Bon, je vais commenter en Français, ça n'est pas tous les jours que je peux faire un commentaire dans la langue de Baudelaire sur ce genre de blog. OK, pour commencer, et comme vous l'avez bien cité, je souhaite rappeler que l'algorithme d'origine a été imaginé par Roger Asling (http://rogeralsing.com ). Je ne sais pas si il a maintenant donné tout son code mais j'ai implémenté le code à partir de zéro donc nos codes sont différents même si il n'y a surement pas 36 manières d'écrire ce genre de programme. Voilà comment cela fonctionne: une '(Solution|Individus)' est un ensemble aléatoire de triangles. Chaque Triangle dans une solution est lui même généré de manière aléatoire: la position des sommets, la couleur (un pixel= intensité de rouge/vert/bleu) et la transparence. On démarre avec une Population de Solutions. Chaque solution
fait l'amourest combinée avec une autre solution pour donner deux nouvelles solutions 'enfants' (par exemple on combine la première moitié des triangles d'un parent avec la deuxième moitié des triangles de l'autre parent). De plus des enfants subissent des mutations (par exemple: les sommets d'un triangle sont légèrement bougés, une couleur changée, une transparence modifiée etc...). A l'issue de ce coït généralisé, les solutions sont trièes sur leur score, et on ne garde que les 'N' meilleures. Pour calculer ce score, on dessine tous les triangles sur une image en mémoire et on compare tous les pixels de cette image avec l'image cible de Darwin. Le score est la somme des valeur absolue des differénce des pixel (rouge,bleu,vert) en les deux images.DieuJe recommence ce processus de reproduction ad-vitam avec la population des enfants restante.Amen
Jolie idée, mais je ferais remarquer qu'on est plus proche du teilhardisme que du darwinisme pur. En effet, l'évolution ici est clairement dirigée vers l'équivalent d'un point Oméga, qui est le portrait de Charles Darwin ;)
@Tom : Exact, c'est pour cela que je n'ai pas décrit cet algorithme comme un bon exemple de l'évolution, laquelle n'est pas dirigée, mais plutôt du pouvoir de la mutation et de la sélection pour fournir des formes toutes plus variées les unes que les autres et n'en conserver que quelques unes et ainsi de suite ad libidum.
merci, messieurs
and TOM -- very pertinent comment
however, I suppose that if a scientist knows the chromosonal makeup for a biological species at two different historic points (Alpha and Omega) he/she can use this type of model to suggest the most likely mathematic pathways.
of course, such "evolutionary computation" entirely ignores variables such as changing natural environment, morphological constraints of the organism, etc. -- and thus does not really talk about "natural" evolution. It is merely a statistical program with some partial resemblance to biology.
by the way, the more I read the articles in Cafe des sciences, I realize that I am witnessing an ongoing metaphysical (almost religious) discussion regarding purpose, randomness, epistemological ordering and imagination.
Bonne continuation.