# 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 - [Fiche de TP](https://florianmathieu.prof/hub-docs/nsi/terminale/Projets/src/src_mastermind_fiche/) - toutes les consignes, dans l'ordre - [Activité guidée](https://florianmathieu.prof/hub-docs/nsi/terminale/Projets/src/Activit%C3%A9/) - le pas à pas complet, avec les explications - [`individual_interface.py`](https://florianmathieu.prof/hub-docs/nsi/terminale/Projets/src/individual_interface/individual_interface.py) - classe abstraite d'un individu, à hériter - [`problem_interface.py`](https://florianmathieu.prof/hub-docs/nsi/terminale/Projets/src/problem_interface/problem_interface.py) - classe abstraite d'un problème, à hériter - [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-SA