Étude comparative de résolution de labyrinthe : Algorithme de Parcours vs Algorithme génétique

Lors de ma troisième année de but, mon année à l'université en Roumanie, dans le cadre de mon cours d'introduction à l'intelligence artificielle, il nous a été demandé de réaliser un projet libre. Le projet devait être réalisé individuellement et la consigne était la suivante : choisir un problème quelconque et le résoudre de deux manières différentes. Premièrement, une solution libre quelconque. Deuxièmement, une solution utilisant le Deep Learning ou un Algorithme Génétique que nous avions étudié en cours.
J'ai alors pensé à un sujet de la sciene qui me passionne : Physarum polycephalum. Un organisme surnommé le "Blob" capable de résoudre des problèmes de résolution de chemin, notamment dans des labyrinthes, de façon bien plus efficace qu'un être humain. J'ai donc voulu opposer deux choses : une solution logique humaine (méthode de la main droite) et une solution qui imite un blob (algorithme génétique).

J'ai commencé par définir quelques points importants comme les résultats attendus et la façon de calculer les performances. Ensuite, j'ai développé une classe Python permettant de modéliser un labyrinthe. Suite à cela, j'ai implémenté l'algorithme de la main droite pour résoudre le labyrinthe. Enfin, j'ai implémenté l'algorithme génétique capable de résoudre ce labyrinthe et j'ai comparé les résultats.

Ci-dessous un aperçu de l'affichage des résultats après éxecution du script.

Résultats résolution de labyrinthe
Python
VS Code Github

Compétences requises

  • Développement en Python
  • Principes des algorithmes génétiques
  • Analyser un problème et définir des solutions adaptées

Compétences acquises

  • Implémenter un algorithme génétique
  • Résoudre un problème complexe à l'aide d'algorithmes
  • Rédiger un rapport précis en analysant des résultats

Le code utilisé pour ce projet est disponible ici, vous y trouverez la procédure de réutilisation ainsi qu'une explication plus détaillée du projet : Dépôt github

Également, vous pouvez lire le rapport que j'ai rédigé dans le cadre de ce projet qui explique en détail le code : Rapport