Files
TermNSI/Projets/mastermind/README.md
T

2.9 KiB

Projet - Mastermind & Algorithmes Génétiques

Darwin rencontre la programmation : faire évoluer une population de combinaisons pour qu'elle converge vers la solution cachée du Mastermind - sans jamais la connaître à l'avance.

Contexte

Le Mastermind est un jeu de déduction : un joueur choisit une combinaison secrète de 4 couleurs parmi 8, l'autre doit la deviner en un minimum d'essais.

Plutôt que de coder une IA par force brute, ce projet applique un algorithme génétique : on fait évoluer une population de combinaisons candidates en s'inspirant de la sélection naturelle (tournoi, croisement, mutation) jusqu'à trouver la solution.

Vous ne partez pas de rien : deux classes abstraites vous sont fournies, Individual_Interface et Problem_Interface. Vous en héritez, et vous écrivez les méthodes qu'elles laissent vides. La fiche de TP et l'activité guidée vous mènent pas à pas.

Compétences mobilisées

Notion Chapitre du cours
Classes, héritage, encapsulation POO
Paradigme fonctionnel (fonctions pures) Paradigmes
Algorithmes d'optimisation Algorithmique
Listes, compréhensions de listes Programmation
Probabilités appliquées -

Cahier des charges

Fonctionnalités minimales

  • Implémenter la classe Combinaison (individu) : création aléatoire, croisement, mutation
  • Implémenter la classe Mastermind (problème) : évaluation du fitness, tournoi
  • Implémenter la classe AlgoGen : génèse, sélection, croisement, mutation, solve
  • Résoudre une combinaison cible en un nombre raisonnable de générations
  • Afficher l'évolution du meilleur individu à chaque génération

Extensions possibles

  • Adapter le framework à un autre problème (labyrinthe, sac à dos...)
  • Comparer plusieurs stratégies de sélection (tournoi vs roulette)
  • Tracer la courbe de convergence (fitness max par génération)
  • Implémenter un Mastermind jouable par un humain vs l'IA

Ressources


Auteur : Florian Mathieu - Licence CC BY-SA