Accueil / Factory / Algos ML / Algorithmes génétiques — factory / algos ML / optimisation par métaheuristique

ALGORITHMES GÉNÉTIQUES.

Une méthode d'optimisation inspirée de l'évolution : une population de solutions se reproduit, les meilleures survivent, se croisent et mutent, génération après génération. Elle s'attaque aux problèmes de choix combinatoires où tester toutes les possibilités est impossible : portefeuille de projets, planning, affectation, conception.

OptimisationMétaheuristiqueOptimisation combinatoireAide à la décisionNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBonne solution sans garantie d'optimum, qualité variable
InterprétabilitéLe principe se raconte, le chemin suivi beaucoup moins
VitesseDes dizaines de milliers d'évaluations de la fonction
Facilité de réglagePopulation, taux de mutation, pénalités : plusieurs réglages
Tolérance aux données brutesAucune hypothèse de continuité ni de dérivée sur la fonction
EN 30 SECONDES

Un éleveur sélectionne chaque année ses meilleures bêtes pour la reproduction. Les descendants mélangent les qualités des parents, avec quelques variations nouvelles. Au fil des générations, le troupeau s'améliore sans que personne n'ait calculé le croisement idéal.

1. On code une solution comme un génome

Ici, un vecteur de 40 cases : 1 si le projet est retenu, 0 sinon. Une note (fitness) mesure sa qualité : gain total, pénalisé si le budget est dépassé.

2. Sélection et croisement

Les meilleures solutions ont plus de chances d'être choisies comme parents. Deux parents échangent une partie de leur génome pour former deux enfants.

3. Mutation et nouvelle génération

Quelques cases basculent au hasard pour garder de la diversité. La nouvelle génération remplace l'ancienne, en conservant toujours la meilleure solution trouvée (élitisme).

LE CAS MÉTIER

arbitrage de portefeuille · investissements / projets
EN ENTRÉE

40 projets, un budget

Chaque projet a un coût et un gain attendu, en k€. Le budget de 1 000 k€ ne couvre qu'un tiers du total demandé. Avec 40 projets, il existe plus de mille milliards de portefeuilles possibles.

EN SORTIE

Une liste de projets à financer

Sur l'exemple simulé en Python, l'algorithme retient 14 projets pour 999 k€ et 1 752 k€ de gain attendu. Le calcul exact, faisable ici car le problème est petit, donne 1 765 k€ : moins de 1 % d'écart.

CE QU'ON MESURE

L'écart à une référence

Un algorithme génétique ne prouve jamais qu'il a trouvé l'optimum. On le compare à une référence : solution actuelle, règle simple (meilleur ratio gain / coût d'abord), ou optimum exact quand il est calculable. On relance aussi avec d'autres graines pour vérifier la stabilité.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Choix combinatoires : sélection de projets, affectation, planning, tournées
  • Fonction à optimiser sans formule dérivable : simulateur, règles métier, modèle boîte noire
  • Plusieurs objectifs à arbitrer (coût, délai, risque) : les variantes multi-objectifs (NSGA-II) donnent le front des compromis
  • Sélection de variables pour un modèle, quand elles sont nombreuses

NON

  • Problème linéaire avec contraintes simples : un solveur de programmation linéaire en nombres entiers donne l'optimum prouvé
  • Fonction continue et lisse : une méthode de gradient ou un PSO converge plus vite
  • Fonction très longue à évaluer : trop d'évaluations, préférer l'optimisation bayésienne
  • Besoin d'une garantie d'optimalité (appel d'offres, contrainte réglementaire)
LES 4 RÉGLAGES QUI COMPTENT

Noms donnés pour R (GA). En Python, la bibliothèque DEAP ou PyGAD, ou une boucle NumPy comme ici.

Taille de population : popSize

50 à 200 solutions. Trop petite, la diversité s'éteint vite ; trop grande, chaque génération coûte cher.

Taux de mutation : pmutation

Dans le package GA, c'est la probabilité qu'une solution subisse une mutation (un gène basculé), 0,1 par défaut. Dans la boucle Python, chaque gène bascule avec une probabilité de 1/40, soit environ un gène par solution. Trop fort, l'algorithme devient une recherche au hasard ; trop faible, il se fige sur un optimum local.

Contraintes : pénalité ou réparation

Une solution hors budget reçoit une pénalité proportionnelle au dépassement. Trop faible, l'algorithme triche avec la contrainte ; trop forte, il n'explore plus les frontières.

Arrêt : maxiter / run

Un nombre maximal de générations, ou l'arrêt quand la meilleure solution ne progresse plus depuis un certain nombre de générations.

LE CODE MINIMAL

données simulées dans le code
# Sélection de projets sous budget : algorithme génétique en R
library(GA)

# 40 projets simulés : coût et gain attendu (k€), budget de 1 000 k€
set.seed(42)
cout <- sample(20:119, 40, replace = TRUE)
gain <- round(cout * runif(40, 0.8, 2))
budget <- 1000

# Fitness : gain total, pénalisé si le budget est dépassé (x = vecteur de 0 et de 1)
fitness <- function(x) sum(x * gain) - 10 * max(sum(x * cout) - budget, 0)

# 100 portefeuilles par génération, 300 générations : sélection, croisement, mutation, élitisme
res <- ga(type = "binary", fitness = fitness, nBits = 40, popSize = 100, maxiter = 300,
          pcrossover = 0.8, pmutation = 0.1, elitism = 2, seed = 42, monitor = FALSE)

meilleur <- res@solution[1, ]
cat("Projets retenus :", which(meilleur == 1), "\n")
cat("Coût :", sum(meilleur * cout), "k€ | gain :", sum(meilleur * gain), "k€\n")
cat("Budget total si l'on prenait tout :", sum(cout), "k€\n")

QUESTIONS FRÉQUENTES

Comment fonctionne un algorithme génétique ?

Il fait évoluer une population de solutions candidates. À chaque génération, les meilleures sont sélectionnées comme parents, croisées pour produire des enfants, puis légèrement modifiées au hasard par mutation. Au fil des générations, la qualité moyenne de la population progresse.

Un algorithme génétique trouve-t-il la solution optimale ?

Pas de façon garantie. C'est une métaheuristique : elle trouve souvent de très bonnes solutions en un temps raisonnable, mais sans preuve d'optimalité. Pour les problèmes qui s'y prêtent, un solveur exact (programmation linéaire en nombres entiers) reste préférable.

Algorithme génétique ou recuit simulé ?

Le recuit simulé fait évoluer une seule solution et se règle plus facilement. L'algorithme génétique maintient une population, ce qui explore plus largement et se parallélise bien, au prix de plus de réglages. Sur beaucoup de problèmes, les deux donnent des résultats proches ; le meilleur choix se teste.

LES ALGOS VOISINS

à comparer avant de choisir
une seule solution à la fois

Recuit simulé

Améliore une solution pas à pas en acceptant parfois une dégradation. Plus simple à régler.

Voir la fiche →
pour le continu

Essaims particulaires (PSO)

Plus efficace quand les variables sont des quantités continues plutôt que des choix oui / non.

Voir la fiche →
une application

AutoML

Certains outils AutoML, comme TPOT, font évoluer des pipelines de machine learning par programmation génétique.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →