Quel joie d'écrire
mon premier article sur le site du LABO, et en plus
un article plus qu'orienté qui va donner le ton
en la matière. Suite à la lecture de l'article
de Virtualabs dans System Addict sur la programmation
génétique, je me suis dit « Et pourquoi
pas moi ? ». Alors voilà, Python et SciTE
dehors, j'ai écrit mes premières lignes
et tâter de la chose.
Avant de continuer, je tiens à remercier Virtualabs
et toute la team de System Addict pour leur travail
sur le magazine.
Passons maintenant au coeur du sujet, l'initiation
et la présentation « à la mimas
» de la programmation génétique.
Il faut signaler que je n'ai que peu d'expérience
en Python et que c'est la première fois que
j'aborde la programmation génétique.
Alors, par avance, soyez indulgent à mon égard.
La programmation génétique est la résolution
de problèmes complexes en utilisant des éléments
simples. Pour faire un parallèle avec la vie
réelle, et avoir un exemple moins théorique,
nous allons prendre les fourmis et une miette de pain.
Le problème qui se pose alors est : «
comment est-ce que les fourmis vont mettre cette énorme
et appétissante miette de pain dans leur fourmilière
? ». Si vous avez déjà regardé
des fourmis, vous connaissez la réponse : elles
vont chacune tirer dans leur direction jusqu'à
ce que la miette finisse au garde-manger. Simple,
non ?!
Nous allons faire presque la même chose ici,
sauf que la miette de pain sera remplacée par
une équation, et les fourmis par des individus
de type YoLaFourmi. Ces individus ont comme particularité
d'avoir un gène (une valeur qui servira à
résoudre l'équation) et de remplir une
fonction (ici ce sera la reproduction pour transmettre
leur gène car les YoLaFourmis sont connues
pour être de chaudes créatures).
Il nous faut tout d'abord conceptualiser tout ça
et créer le monde qui verra évoluer
les YoLaFourmi, ou, plus simplement, comment devenir
Dieu en moins de dix leçons. Notre monde devra
être capable de se peupler d'individu, de tester
si l'équation est résolue par un de
ses habitants, les YoLaFourmis, et de les faire évoluer
vers une autre génération afin que ce
monde trouve sa YoLaFourmi.
Le sujet est déjà bien implanté,
on sait maintenant que les YoLaFourmis devront user
de toutes leurs caractéristiques pour créer
une génération suivante capable de réussir
là où elles auront échoué.
Mais, rassurons-nous, leur libido ne souffre pas de
cet échec.
Pour ne pas rendre la lecture du programme complexe,
nous aurons une gestion de la génération
suivante très légère et peu respectueuse
de notre monde : un des parents se transformera en
fils et l'autre survivra. Mais comme les deux parents
peuvent avoir muté avant d'avoir copuler sauvagement,
le parent restant ne sera pas forcément le
même qu'à sa naissance. L'âge n'épargne
personne, même pas les YoLaFourmis. À
moins que ce soit les radiations de Fallout qui soient
en cause.
La transmission des gênes est effectuée
grâce à l'opération (valeur_parent1
* valeur_parent2) / (valeur_parent1 + valeur_parent2).
Des YoLaFourmis peuvent naître spontanément
si les parents ne sont pas capables de concevoir,
ç-à-d si valeur_parent1 + valeur_parent2
= 0. Cela a du bon d'être un dieu qui créé
son monde.
Bien sûr tout ceci sera modélisé
en objet dans un script python.
Souvenez-vous avant de lire le code source du programme
qu'un monde apparaît et se peuple de YoLaFourmis.
Si une Yolafourmi est capable de résoudre l'équation
(qui est X^2 - X = 42) alors le monde n'aura plus
lieu d'être. Dans le cas contraire, une nouvelle
génération de YoLaFourmi voit le jour.
Avertissement : le code source du programme n'est
pas à mettre devant tous les yeux car la reproduction
en masse peut-être choquante. Bref, d'ici peu
devrait voir apparaître la notion "Contains
explicit source code" suite à la parution
de cet article.