Jalons - Mastermind & Algorithmes Génétiques
Progression suggérée sur ~10 séances (septembre → février)
Phase 1 - Comprendre les algorithmes génétiques (Séances 1-2)
Objectif : Saisir l'analogie entre évolution biologique et optimisation.
- Lire la fiche
../src/src_mastermind_fiche.mddu début jusqu'à la section "Les individus" - Répondre aux questions : qu'est-ce qu'un individu ? une population ? le fitness ? la sélection ?
- Schématiser à la main le cycle d'un algorithme génétique :
- Expliquer en une phrase comment cet algorithme peut résoudre le Mastermind
Phase 2 - L'individu : la classe Combinaison (Séances 3-4)
Objectif : Implémenter la brique de base.
- Implémenter
init_value(self)→ génère une combinaison aléatoire de couleurs - Implémenter
cross_with(self, other)→ croisement en 1 point (renvoie 2 enfants) - Implémenter
mutate_gene(self, gene)→ remplace un gène par une autre couleur aléatoire - Tester chaque méthode indépendamment avant de passer à la suite
Point clé : le croisement en 1 point prend un indice aléatoire et échange les parties.
Phase 3 - Le problème : la classe Mastermind (Séances 5-6)
Objectif : Définir comment évaluer une combinaison.
- Implémenter
create_individual(self)→ crée un individu aléatoire du bon type - Implémenter
evaluate_fitness(self, individual)→ compte les gènes bien placés - Implémenter
best_individual(self, population)→ renvoie le meilleur de la population - Implémenter
tournament(self, first, second)→ compare deux individus, garde le meilleur - Tester avec une combinaison cible connue et vérifier que le score est correct
Phase 4 - L'algorithme : la classe AlgoGen (Séances 7-8)
Objectif : Assembler toutes les briques.
- Implémenter
genesis(self)→ crée la population initiale - Implémenter
evaluate_population(self, population)→ évalue tous les individus - Implémenter
next_generation_tournament(self, population)→ sélection par tournoi - Implémenter
crossover(self, population)→ croisements entre les meilleurs - Implémenter
mutate(self, individuals)→ applique les mutations - Implémenter
solve(self, nb_generations)→ boucle principale
Phase 5 - Tests, ajustement et documentation (Séances 9-10)
Objectif : Valider et optimiser.
- Tester avec la combinaison exemple :
Mastermind(["bleu", "blanc", "blanc", "rouge"]) - Faire varier les paramètres : taille de population, probabilité de mutation, taux de croisement
- Observer : combien de générations faut-il en moyenne pour trouver la solution ?
- Tracer la courbe de convergence (fitness max par génération)
- Compléter le
SUIVI.mdet préparer les questions pour le Grand Oral
Idées d'extension avancée
- Nouveau problème : adapter le framework à un autre problème (labyrinthe, sac à dos, TSP...)
- Roulette vs tournoi : implémenter une sélection par roulette et comparer les performances
- Mastermind jouable : ajouter une interface où un humain joue contre l'IA
- Parallélisation : tester plusieurs populations en parallèle et garder la meilleure
Auteur : Florian Mathieu - Licence CC BY NC
Dernière mise à jour : 18/06/2026