# Stratégie d'évolution

Les stratégies d'évolution forment une famille de métaheuristiques d'optimisation. Elles sont inspirées de la théorie de l'évolution, et appartiennent à ce titre à la classe des algorithmes évolutionnaires.
La méthode est initialement proposée par Ingo Rencherberg en 1965, à l'université technique de Berlin, en Allemagne. Elle est, à ce titre, la première véritable métaheuristique et le premier algorithme évolutionnaire, bien avant le recuit simulé ou les algorithmes génétiques. La méthode est ensuite développée durant la fin des années 1960, principalement par les travaux de Ingo Rechenberg, P. Bienert et Hans-Paul Schwefel sur la conception de profils aérodynamiques.
Par la suite, les stratégies d'évolutions (anglais : evolution strategies, allemand : Evolutionsstrategie, abrégé ES) sont utilisées sur des problèmes d'optimisation continus, discrets, contraints, multi-objectifs, etc.
Dans sa version de base, l'algorithme manipule itérativement un ensemble de vecteurs de variables réelles à l'aide d'opérateurs de mutation et de sélection. L'étape de mutation est classiquement effectuée par l'ajout d'une valeur aléatoire tirée au sein d'une distribution normale. La sélection s'effectue par un choix déterministe des meilleurs individus, selon l'échelle de valeur de la fonction objectif.

## Algorithme canonique

Les stratégies d'évolutions utilisent un ensemble de µ « parents » pour produire λ « enfants ». Pour produire chaque enfant, ρ parents se « recombinent ». Une fois produits, les enfants sont mutés, généralement par ajout d'une variable aléatoire suivant une loi normale. L'étape de sélection peut s'appliquer, soit uniquement aux enfants (sélection « virgule »), soit à l'ensemble enfants + parents (sélection « plus »). Dans le premier cas, l'algorithme est noté (µ/ρ,λ)-ES, dans le second (µ/ρ+λ)-ES.
À l'origine, l'étape de recombinaison était inexistante, les algorithmes étant alors notés (µ,λ)-ES ou (µ+λ)-ES. Les méthodes contemporaines utilisent l'opérateur de recombinaison, comme les autres algorithmes évolutionnaires, afin d'éviter d'être piégé dans des optimums locaux.
Ainsi, un algorithme (µ/1,+)-ES n'utilisera pas de « recombinaison », mais construira la génération suivante à partir des meilleurs individus, qu'ils soient parents ou enfants. Un algorithme (µ/ρ+1)-ES produira uniquement un enfant par génération, et supprimera le plus mauvais individu à chaque itération. Cette dernière méthode porte le nom de stratégies d'évolution à états constants (anglais : steady states ES).
Une itération de l'algorithme général procède comme suit:
* À partir d'un ensemble de µ parents,
* produire une population de λ enfants :
** choisir ρ parents,
** recombiner ces parents entre eux pour former un unique individu,
** faire muter cet individu,
* sélectionner les µ meilleurs individus.

## CMA-ES

La dénomination « CMA-ES » est un acronyme pour l'anglais Covariance Matrix Adaptation Evolution Strategies qu'il est possible de traduire en stratégies d'évolution avec adaptation de matrice de covariance. La méthode est proposée par A. Gawelczyk, N. Hansen, et A. Ostermeier à la fin des années 1990. En 2005, cette méthode est l'une des meilleures métaheuristiques pour les problèmes continus.
L'algorithme CMA-ES repose sur l'adaptation, au cours des itérations, de la matrice de variance-covariance de la distribution multi-normale utilisée pour la mutation.

## Autres variantes

Il existe des stratégies d'évolution hierarchiques, appelées Meta-ES ou Nested-ED en anglais.

## Principes de mise en œuvre

D'après Hans-Georg Beyer, un certain nombre de bonnes pratiques sont nécessaires pour garantir l'efficacité des stratégies d'évolution :
* Le ratio de sélection µ/λ pour une sélection virgule sur des problèmes continus doit se situer entre 1/7 et 1/2 ;
* l'utilisation de la sélection plus est recommandée pour les problèmes combinatoires ;
* l'opérateur de mutation est la principale source de variation, il doit être quasi-ergodique (qui permet de construire n'importe quel point dans l'espace de recherche en un nombre fini d'itération) ;
* l'utilisation d'une sélection plus avec un opérateur de mutation ergodique garantit la convergence ;
* la recombinaison doit être appliquée autant que possible.