Section 7.4: Algorithmes évolutionnaires face aux problèmes difficiles Up Chapitre 7: Évolution in silico Chapitre 8: Evolution et dynamiques économiques : au delà de l’analogie 

7.5figure logo-cle—mollette.png Application : Généraliser l’optimisation des fonctions à une variable par AG

Vous êtes invité à écrire un programme en NetLogo qui va mettre en oeuvre un algorithme génétique basé sur la sélection par tournoi pour maximiser une fonction que l’utilisateur donnera dans l’interface.
L’algorithme génétique va faire évoluer une population de tortues de taille . va donc correspondre à la population de candidats de solution (les chromosomes), chacun associés à son fitness. Chaque chromosome va alors correspondre à une tortue avec comme variables d’espèce x pour la valeur du candidat de solution, val pour la valeur correspondante de la fonction et fitness qui donne son fitness relatif dans la population actuelle. .
Le fitness de chaque chromosome dans la population, fitness noté ici, correspondra ici à une simple normalisation de la valeur correspondante de la fonction à optimiser : et sont respectivement les valeurs minimales et maximales de la fonction dans la population actuelle. Cette normalisation permet de traiter les valeurs négatives pour la fonction.
Après avoir généré de manière aléatoire (pour les candidats et les valeurs de fitness) une population initiale , l’AG va faire évoluer la population, à chaque étape, suivant les trois étapes que nous venons de discuter ci-dessus :
  1. Sélection via une roulette : On produit une nouvelle population en tirant aléatoirement nouveaux chromosomes à partir de la population initiale où chaque chromosome a une probabilité d’être tiré qui est égale à . Si , alors aura tendance à être reproduit dans plus d’exemplaires que dans la population . La sélection par roulette correspond à une probabilité, pour chaque chromosome, d’être reproduite dans la génération suivante selon son fitness comparé au fitness moyen dans la population actuelle :
  2. Croisements de valeurs réelles : Chaque chromosome dans aura la possibilité de participer à un croisement, selon une probabilité . Si le tirage aléatoire (uniforme) décide qu’il peut bénéficier d’un croisement, alors on tirera aléatoirement un autre chromosome et ces deux chromosomes donneront deux descendants, et , selon la méthode de croisement retenue. Par exemple, par le croisement via la moyenne que nous retiendrons ici, nous remplacerons simplement par
  3. Mutations de valeurs réelles : De même; chaque chromosome peut subir aléatoirement une mutation, selon un tirage uniforme effectué avec une probabilité de réalisation de mutation . Si le tirage décide que la mutation a lieu alors, est modifié : où ces nouvelles valeurs sont tirées de deux tirages uniformes, , .
  4. La nouvelle population étant maintenant composée, on recalcule les fitness de chaque chromosome dans et nous pouvons recommencer. On calcule aussi le fitness moyen et la valeur moyenne de la fonction dans la population pour représenter ces valeurs dans des graphiques dédiés (voir ci-dessous).
L’interface de l’application
Il sera nécessaire de fixer dans l’interface graphique les paramètres de ce problème :
Les expériences
Il y a très peu de paramètres dans cette application, mais sa simplicité permettra aussi de bien comprendre le rôle des différents opérateurs de la sélection :

 Section 7.4: Algorithmes évolutionnaires face aux problèmes difficiles Up Chapitre 7: Évolution in silico Chapitre 8: Evolution et dynamiques économiques : au delà de l’analogie 
Sommaire
(c) Murat Yildizoglu, 2021-