AccueilAlgorithmes & IAOptimiseur d'évolution différentielle

🧬 Optimiseur d'évolution différentielle

Évolution différentielle (DE/rand/1/bin) : mutant v = x_r1 + F(x_r2 - x_r3), croisement au taux CR. La variante auto-adaptative ajuste F et CR. Test comparatif sur Rosenbrock, Rastrigin, Ackley.

Algorithmes & IA3DModéré60 IPS
differential-evolution ↗ Ouvrir en autonome

Fonctionnement

DE maintient une population de NP vecteurs candidats. À chaque génération, pour chaque vecteur cible x_i, trois vecteurs aléatoires x_r1, x_r2, x_r3 sont choisis. Le mutant v = x_r1 + F·(x_r2 - x_r3). Le croisement binomial crée l'essai u : chaque dimension est prise de v avec une probabilité CR ou de x_i sinon. Si f(u) <= f(x_i), u remplace x_i (sélection gloutonne).

Mutation: v_i = x_r1 + F · (x_r2 − x_r3) Croisement: u_ij = v_ij si rand() < CR ou j==j_rand x_ij sinon Sélection: x_i(t+1) = u_i si f(u_i) <= f(x_i) x_i sinon Rosenbrock: f = (1−x)²+100(y−x²)² min=0 en (1,1) Rastrigin: f = 20 + x²−10cos(2πx) + y²−10cos(2πy) Ackley: f = −20e^(−0.2√(x²+y²)/2) − e^(cos(2πx)+cos(2πy))/2 + 20+e

Le tracé de contour montre le paysage de fitness (plus sombre=plus bas). Les points bleus sont la population ; l'étoile rouge marque la meilleure solution. Le graphique de convergence (bas) montre la meilleure fitness par génération sur une échelle logarithmique.

Foire aux questions

Qu'est-ce que l'évolution différentielle (DE) ?

L'évolution différentielle est un algorithme d'optimisation stochastique basé sur une population, par Storn et Price (1997). Elle fait évoluer des solutions candidates par mutation (différences de vecteurs), croisement et sélection, sans nécessiter d'information de gradient.

Comment fonctionne la mutation DE/rand/1/bin ?

Trois vecteurs aléatoires x_r1, x_r2, x_r3 sont sélectionnés dans la population. Le vecteur mutant est v = x_r1 + F·(x_r2 - x_r3), où F ∈ [0,2] est le facteur d'échelle de mutation contrôlant la taille du pas de recherche.

Qu'est-ce que l'opération de croisement dans DE ?

Dans le croisement binomial (bin), chaque dimension du vecteur d'essai u provient du mutant v avec une probabilité CR, ou de la cible x sinon. Au moins une dimension provient toujours du mutant.

Que sont les paramètres F et CR dans DE ?

F (facteur de mutation) contrôle la taille du pas de mutation, typiquement F ∈ [0,4, 1,0]. CR (taux de croisement) contrôle la fraction de paramètres provenant du mutant, typiquement CR ∈ [0,1, 0,9]. CR plus élevé = plus d'exploration.

Qu'est-ce que la fonction de Rosenbrock ?

f(x,y) = (1-x)² + 100(y-x²)² présente une vallée étroite et courbe. Son minimum global se trouve en (1,1) avec f=0. La vallée est facile à trouver mais le minimum est difficile à localiser précisément.

Qu'est-ce que la fonction de Rastrigin ?

La fonction de Rastrigin est fortement multimodale : f(x,y) = 20 + x²-10cos(2πx) + y²-10cos(2πy). Le minimum global se trouve en (0,0) avec f=0. Elle teste la capacité d'optimisation globale.

Qu'est-ce que la fonction d'Ackley ?

La fonction d'Ackley possède une région extérieure presque plate avec un minimum global profond à l'origine. Elle met les algorithmes au défi d'éviter la convergence prématurée vers des optima locaux dans la région plate.

Comment DE se compare-t-il à d'autres algorithmes évolutionnaires ?

DE surpasse généralement les algorithmes génétiques et l'optimisation par essaims particulaires sur les benchmarks continus. Il est plus simple que CMA-ES et s'adapte bien jusqu'à ~100 dimensions. CMA-ES est souvent meilleur pour les problèmes lisses de très haute dimension.

Qu'est-ce que le DE auto-adaptatif (SaDE) ?

SaDE ajuste automatiquement F et CR pendant l'optimisation en fonction de leurs taux de succès, éliminant le besoin de réglage manuel. Les valeurs de paramètres réussies sont enregistrées et utilisées pour générer de nouvelles valeurs de paramètres.

Quand devrais-je utiliser l'évolution différentielle ?

Utilisez DE pour l'optimisation boîte noire, non différentiable, multimodale ou bruitée avec des variables continues, typiquement 5 à 50 dimensions. Adapté à l'ajustement de paramètres et à la conception d'ingénierie. Les méthodes basées sur le gradient sont meilleures quand les dérivées sont disponibles.

À propos de cette simulation

Ce simulateur exécute une boucle évolutionnaire DE/rand/1/bin en direct dans le navigateur : à chaque génération, chaque membre de la population engendre un mutant à partir de trois autres vecteurs choisis au hasard, le mélange avec la cible par croisement binomial, et ne survit que si sa fitness surpasse l'original. Observez la population de points ramper sur la carte de contour de Rosenbrock, Rastrigin ou Ackley vers l'étoile rouge tandis que le panneau de droite trace la meilleure fitness sur une échelle logarithmique.

🔬 Ce que ça montre

Une population en direct de points candidats (x, y) convergeant vers le minimum global d'une fonction de référence choisie, avec le paysage de fitness rendu en contour sombre à clair et la convergence suivie sur un graphique à échelle logarithmique.

🎮 Comment utiliser

Choisissez une fonction (Rosenbrock, Rastrigin, Ackley), ajustez les curseurs Population NP, Mutation F et Croisement CR, puis appuyez sur ▶ Lecture ou Pas → pour avancer les générations une par une. Appuyez sur R pour redémarrer ou P pour mettre en pause.

💡 Le saviez-vous ?

DE n'a besoin d'aucun gradient — il déduit des directions de recherche utiles uniquement à partir de la dispersion des différences de vecteurs au sein de sa propre population, ce qui explique pourquoi il gère les objectifs boîte noire bruités et discontinus qui déjouent les optimiseurs basés sur le calcul infinitésimal.

Foire aux questions

Pourquoi l'algorithme a-t-il besoin de trois vecteurs aléatoires par mise à jour ?

Deux d'entre eux (x_r2, x_r3) forment un vecteur de différence qui encode une direction de recherche plausible et une taille de pas tirée de la dispersion actuelle de la population ; le troisième (x_r1) ancre le mutant. Cet échantillonnage autoréférentiel est ce qui permet à DE d'adapter automatiquement sa taille de pas à mesure que la population converge.

Que se passe-t-il si je fixe CR proche de 1,0 ?

Presque chaque dimension du vecteur d'essai provient du mutant plutôt que de la cible, donc la recherche explore plus agressivement — utile pour des fonctions séparables et multimodales comme Rastrigin mais souvent plus lent pour affiner le minimum final.

Pourquoi Rosenbrock semble-t-elle facile sur le contour mais converge-t-elle lentement ?

Sa vallée courbe est large et clairement visible, donc la population la trouve en quelques générations, mais le fond de la vallée près de (1,1) est presque plat dans la direction de déplacement, si bien que les améliorations de fitness deviennent minimes et que la ligne de convergence à échelle logarithmique s'aplatit.

Pourquoi la taille de population (NP) est-elle importante ?

Une NP plus grande échantillonne davantage de vecteurs de différence par génération, offrant un ensemble plus riche de directions de mutation et réduisant le risque de convergence prématurée sur des paysages multimodaux comme Rastrigin, au prix de plus d'évaluations de fonction par génération.

DE peut-il rester bloqué, et comment le verrait-on ici ?

Oui — si la diversité s'effondre trop tôt, l'écart-type de population (affiché dans le panneau Statistiques) tombe près de zéro tandis que la meilleure fitness stagne au-dessus du véritable minimum ; augmenter F ou CR, ou redémarrer avec une NP plus grande, rétablit généralement la progression.

⚙ Sous le capot

Évolution différentielle (DE/rand/1/bin) : mutant v = x_r1 + F(x_r2 - x_r3), croisement au taux CR. La variante auto-adaptative ajuste F et CR. Test comparatif sur Rosenbrock, Rastrigin, Ackley.

évolution différentielleoptimisationmétaheuristiqueRosenbrockfonctions de référence

3D · Rendu Three.js / WebGL · 60 IPS cible · s'exécute entièrement côté client, sans installation

Qu'avez-vous trouvé ?

Ajouter des étapes de reproduction (facultatif)