Qu'est-ce que l'algorithme génétique
Voici comment fonctionne cet algorithme selon les étapes représentées :
Population initiale : On commence avec une population aléatoire de solutions potentielles (individus). Dans cet exemple, chaque individu est représenté par un ensemble de 4 gènes (valeurs numériques).
Mesurer la fitness : Chaque individu se voit attribuer un score de fitness qui évalue sa qualité ou son aptitude par rapport au problème à résoudre. Dans l'image, les scores de fitness pour trois individus sont 13%, 4% et 33%.
Sélection : Des parents sont choisis pour la reproduction, souvent en utilisant une méthode comme la roulette (wheel selection), où la probabilité de sélection est proportionnelle au score de fitness. Plus un individu a un score de fitness élevé, plus il a de chances d'être choisi.
Reproduction (croisement) : Deux parents sélectionnés produisent des enfants en croisant leurs gènes (crossover). Chaque enfant hérite de gènes provenant des deux parents.
Mutation : De manière occasionnelle, un gène d'un enfant peut muter de manière aléatoire. Cela introduit de la variabilité dans la population et aide à éviter de rester bloqué dans des solutions sous-optimales.
Nouvelle génération : La nouvelle population est formée par les enfants créés lors de la reproduction. Certaines des meilleures solutions de la génération précédente peuvent être copiées directement dans la nouvelle génération (élitisme), garantissant ainsi que les meilleures solutions ne sont pas perdues.
Ce cycle se répète pour un certain nombre de générations jusqu'à ce qu'une solution optimale ou suffisamment bonne soit trouvée. L'élitisme permet de préserver les meilleures solutions d'une génération à l'autre, tandis que la mutation assure la diversité génétique et aide à explorer de nouvelles solutions.
Explication du "jeu"
Réseau de neuronnes qui apprends par algorithme génétique
Les créatures peuvent se déplacer. Le but est d'apprendre à éviter les obstacles grâce à leur réseau de neuronne. Mais les créatures n'apprennent pas au cours de leur vie, c'est l'évolution qui fait évoluer la population et c'est la population qui apprends.
La taille de la population indique le nombre de créatures qui évoluent à chaque génération.
Mutation ratio : indique, dans le réseau de neuronne de chaque créature, combien, en pourcentage, on fait muter de poids. Plus ce facteur est gros, plus les mutations seront nombreuses.
Mutation Factor : indique de combien on fait muter les poids. Plus ce facteur est gros, plus les mutations seront "fortes"
cf la fonction Neuron.mute()
[Start Evolution] fait évoluer les créatures en continu. Vous pouvez à tout moment afficher le déplacement de la meilleure.
[Stop] fait cesser l'évolution, permet d'examiner les créatures une à une.
[Show Best] affiche la créature avec le meilleur score. Le score dépend du temps de survie, mais aussi de la distance parcourue par la créature et de sa capacité à l'éloigner de son point d'origine.
(Le but est d'éviter qu'elles n'apprennent à rester surplace pour survivre sans se heurter à un obstacle)
cf Agent.iterate() pour le calcul (this.distance = ???)
[Generate New Map] permet de créer une nouvelle carte et de voir comment les créatures se comportent dedans.
Scores par créature
Rang |
Créature |
Score |
Time alive |
Median |
Génération |