J'ai expérimenté avec GA dans ma jeunesse. J'ai écrit un simulateur en Python qui fonctionnait comme suit.
Les gènes codaient les poids d'un réseau neuronal.
Les entrées du réseau neuronal étaient des "antennes" qui détectaient les contacts. Des valeurs plus élevées signifiaient très proches et 0 signifiait ne pas toucher.
Les sorties étaient à deux "roues". Si les deux roues avancent, le gars avance. Si les roues étaient dans des directions opposées, le gars a tourné. La force de la sortie a déterminé la vitesse de rotation des roues.
Un labyrinthe simple a été généré. C'était vraiment simple - stupide même. Il y avait le début en bas de l'écran et un but en haut, avec quatre murs entre les deux. Chaque mur avait un espace retiré au hasard, donc il y avait toujours un chemin.
J'ai commencé des gars au hasard (je les considérais comme des bugs) au début. Dès qu'un gars a atteint l'objectif, ou qu'une limite de temps a été atteinte, la condition physique a été calculée. Il était inversement proportionnel à la distance du but à ce moment-là.
Je les ai ensuite jumelés et «élevés» pour créer la prochaine génération. La probabilité d'être choisi pour être reproduit était proportionnelle à son aptitude. Parfois, cela signifiait que l'on était élevé avec lui-même à plusieurs reprises s'il avait une très bonne condition physique relative.
Je pensais qu'ils développeraient un comportement "étreignant le mur gauche", mais ils semblaient toujours suivre quelque chose de moins optimal. Dans chaque expérience, les bugs ont convergé vers un motif en spirale. Ils tournaient en spirale vers l'extérieur jusqu'à ce qu'ils touchent un mur à droite. Ils suivaient cela, puis lorsqu'ils arrivaient à l'écart, ils descendaient en spirale (loin de l'écart) et autour. Ils faisaient un virage de 270 degrés vers la gauche, puis entraient généralement dans l'écart. Cela leur permettrait de franchir la majorité des murs et souvent d'atteindre le but.
Une caractéristique que j'ai ajoutée était de mettre un vecteur de couleur dans les gènes pour suivre la parenté entre les individus. Après quelques générations, ils seraient tous de la même couleur, ce qui me dit que je devrais avoir une meilleure stratégie d'élevage.
J'ai essayé de les amener à développer une meilleure stratégie. J'ai compliqué le réseau neuronal - en ajoutant une mémoire et tout. Ça n'a pas aidé. J'ai toujours vu la même stratégie.
J'ai essayé différentes choses comme avoir des pools de gènes séparés qui ne se sont recombinés qu'après 100 générations. Mais rien ne les pousserait vers une meilleure stratégie. C'était peut-être impossible.
Une autre chose intéressante est de représenter graphiquement la forme physique au fil du temps. Il y avait des schémas définis, comme la forme physique maximale qui descendait avant de monter. Je n'ai jamais vu un livre sur l'évolution parler de cette possibilité.