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
- Fiche de TP - toutes les consignes, dans l'ordre
- Activité guidée - le pas à pas complet, avec les explications
individual_interface.py- classe abstraite d'un individu, à hériterproblem_interface.py- classe abstraite d'un problème, à hériter- Algorithme génétique - Wikipedia
- Mastermind - Wikipedia
Auteur : Florian Mathieu - Licence CC BY-SA