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
../src/src_mastermind_fiche.md- fiche TP complète avec toutes les consignes../src/algo_gen.py- squelette du framework générique../src/combinaison.py- classe individu à compléter- Algorithme génétique - Wikipedia
- Mastermind - Wikipedia
Auteur : Florian Mathieu - Licence CC BY NC
Dernière mise à jour : 18/06/2026