Files
TermNSI/Projets/mastermind/README.md

2.4 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.

Une base de code complète est disponible dans ../src/ :

  • algo_gen.py — framework de l'algorithme génétique
  • combinaison.py — représentation d'un individu (une combinaison)
  • src_mastermind_fiche.md — fiche TP détaillée avec toutes les consignes

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 NC