Skip to content

🤖🔭 Application d'un algorithme génétique avec un sujet du Concours Centrale Informatique 2017

Notifications You must be signed in to change notification settings

ducksper/algo_genetique_centrale

Repository files navigation

Graphique obtenue pour PI = générer_PI(100, 100), m = 10, proba = 0.2, g = 10000

Mission d'exploration martienne

Le projet présenté est basé sur le sujet Informatique du concours Centrale-Supélec (MP, PC, PSI, TSI) de 2017. L'objectif du projet est de mettre en oeuvre l'algorithme génétique présenté dans la partie III du sujet; pour cette raison la partie II n'est que peu abordée.

L'algorithme est écrit en langage Python 3.6.8. Les modules utilisés sont:

  • math,
  • numpy (restriction sujet),
  • random,
  • inspect (pour dĂ©bugger, non important),
  • matplotlib.pyplot (affichage graphique, optionnel mais vivement conseillĂ©).

Pour comprendre au mieux l'algorithme je conseille de lire au moins l'énoncé du sujet puis d'analyser le script.

Principe d'un algorithme génétique

(wikipédia + sujet) Les algorithmes génétiques appartiennent à la famille des algorithmes évolutionnistes (s'inspirant de la théorie de l'évolution). Leur but est d'obtenir une solution approchée à un problème d'optimisation, lorsqu'il n'existe pas de méthode exacte (ou que la solution est inconnue) pour le résoudre en un temps raisonnable. Les algorithmes génétiques utilisent la notion de sélection naturelle et l'appliquent à une population de solutions potentielles au problème donné. La solution est approchée par « bonds » successifs.

Les algorithmes génétiques font intervenir cinq traitements.

  • Initialisation: Il s’agit de crĂ©er une population d’origine composĂ©e de đť‘š individus (ici des chemins pour l’exploration Ă  planifier). GĂ©nĂ©ralement la population de dĂ©part est produite alĂ©atoirement.

  • Évaluation: Cette Ă©tape consiste Ă  attribuer Ă  chaque individu de la population courante une note correspondant Ă  sa capacitĂ© Ă  rĂ©pondre au problème posĂ©. Ici la note sera simplement la longueur du chemin.

  • SĂ©lection: Une fois tous les individus Ă©valuĂ©s, l’algorithme ne conserve que les « meilleurs » individus. Plusieurs mĂ©thodes de sĂ©lection sont possibles : choix alĂ©atoire, ceux qui ont obtenu la meilleure note, Ă©limination par tournoi, etc.

  • Croisement: Les individus sĂ©lectionnĂ©s sont croisĂ©s deux Ă  deux pour produire de nouveaux individus et donc une nouvelle population. La fonction de croisement (ou reproduction) dĂ©pend de la nature des individus.

  • Mutation: Une proportion d’individus est choisie (gĂ©nĂ©ralement alĂ©atoirement) pour subir une mutation, c’est-Ă -dire une transformation alĂ©atoire. Cette Ă©tape permet d’éviter Ă  l’algorithme de rester bloquĂ© sur un optimum local. En rĂ©pĂ©tant les Ă©tapes de sĂ©lection, croisement et mutation, l’algorithme fait ainsi Ă©voluer la population, jusqu’à trouver un individu qui rĂ©ponde au problème initial. Cependant dans les cas pratiques d’utilisation des algorithmes gĂ©nĂ©tiques, il n’est pas possible de savoir simplement si le problème est rĂ©solu (le plus court chemin figure-t-il dans ma population ?). On utilise donc des conditions d’arrĂŞt heuristiques basĂ©es sur un critère arbitraire.

About

🤖🔭 Application d'un algorithme génétique avec un sujet du Concours Centrale Informatique 2017

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages