# 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](https://fr.wikipedia.org/wiki/Algorithme_génétique) - [Mastermind — Wikipedia](https://fr.wikipedia.org/wiki/Mastermind) --- Auteur : Florian Mathieu — Licence CC BY NC