Algorithmes génétiques

La calibration séquentielle ou classique présente des limites importantes : (i) elle ne peut pas choisir automatiquement les niveaux de pression et les fenêtres temporelles (heure de la journée) pour une variable météorologique donnée, (ii) elle ne peut pas gérer les dépendances entre les paramètres et (iii) elle ne peut pas facilement gérer de nouveaux degrés de liberté. C’est pourquoi des algorithmes génétiques (AG) ont été mis en œuvre dans AtmoSwing Optimizer pour réaliser une optimisation globale des MA. Cela permet d’optimiser tous les paramètres conjointement de manière entièrement automatique et objective. Voir plus de détails dans Horton et al. [5].

Les algorithmes génétiques sont puissants mais très exigeants en termes de capacité de calcul. Ils nécessitent des milliers d’évaluations pour évoluer vers l’optimum global et doivent donc être utilisés sur une grappe de serveurs (cluster) plutôt que sur un seul ordinateur.

De nombreuses options et variantes d’opérateurs sont disponibles pour les algorithmes génétiques. Sur la base de tests systématiques détaillés dans Horton et al. [5], certaines présélections ont été établies afin de faciliter l’utilisation des algorithmes génétiques dans AtmoSwing Optimizer. Ces présélections sont listées ci-dessous, et toutes les options sont fournies plus loin.

Options générales

Quelques options générales sont présentées ci-dessous :

  • La taille de la population est le nombre d’individus qui la composent.

  • Le taux de la génération intermédiaire est le taux d’individus qui sont conservés après la sélection naturelle.

  • Les itérations pour la convergence sont le nombre de générations sans amélioration après lequel l’algorithme s’arrête.

  • L’utilisation de lots (batches) permet de réduire le temps de calcul en utilisant des lots de données au lieu de l’ensemble des données.

  • La taille du lot (batch) est le nombre de jours dans chaque lot.

  • Le nombre d’époques correspond au nombre de fois où l’ensemble des données est utilisé pour l’optimisation.

  • La taille du lot et le nombre d’époques ne sont utilisés que si l’approche pat lots est utilisée (auquel cas le nombre de générations pour la convergence n’est pas utilisé).

--ga-pop-size=<int>

Taille de la population (par défaut 500)

--ga-interm-gen=<0-1>

Ratio de la génération intermédiaire (par défaut 0.5)

--ga-conv-steps=<int>

Nombre de générations pour la convergence (par défaut 30)

--ga-use-batches=<0/1>

Utiliser des lots (batches)

--ga-batch-size=<int>

Taille des lots (batches)

--ga-number-epochs=<int>

Nombre d’époques si l’on utilise des lots (batches)

Présélections des opérateurs

De nombreuses options et variantes d’opérateurs contrôlent l’optimisation par les algorithmes génétiques. Les configurations recommandées sont prédéfinies dans des présélections.

--ga-config=<1-5>

Présélections des opérateurs

Pour toutes les présélections, les options suivantes sont identiques : --ga-conv-steps=30 --ga-pop-size=500 --ga-interm-gen=0.5 --ga-ope-nat-sel=0 --ga-ope-coup-sel=2 --ga-ope-cross=7 --ga-cross-bin-pt-nb=2 --ga-cross-bin-share-b=1

La différence entre les présélections concerne l’opérateur de mutation. Fournir les nombres suivants (1-5) à l’option --ga-config est équivalent à ces présélections correspondantes :

  1. Chromosome du rayon de recherche adaptatif : --ga-ope-mut=8

  2. Mutation multi-échelle : -ga-ope-mut=9 ga-mut-multi-scale-p=0.1

  3. Mutation non uniforme (pmut=0,1, Gmr=50, w=0,1) : --ga-ope-mut=4 --ga-mut-non-uni-p=0.1 --ga-mut-non-uni-gens=50 --ga-mut-non-uni-min-r=0.1

  4. Mutation non uniforme (pmut=0,1, Gmr=100, w=0,1) : --ga-ope-mut=4 --ga-mut-non-uni-p=0.1 --ga-mut-non-uni-gens=100 --ga-mut-non-uni-min-r=0.1

  5. Mutation non uniforme (pmut=0,2, Gmr=100, w=0,1) : --ga-ope-mut=4 --ga-mut-non-uni-p=0.2 --ga-mut-non-uni-gens=100 --ga-mut-non-uni-min-r=0.1

Chacune de ces options peut être modifiée en la spécifiant en addition de –ga-config`.

Options des opérateurs

Les différents opérateurs peuvent être contrôlés avec les options suivantes :

--ga-ope-nat-sel=<0-1>

Choix de l’opérateur pour la sélection naturelle :

  1. ratio d’élitisme (par défaut)

  2. selection par tournoi

--ga-ope-coup-sel=<0-4>

Choix de l’opérateur pour la sélection des couples :

  1. appariement par rangs

  2. aléatoire

  3. roulette sur le rang (par défaut)

  4. roulette sur la base des scores

  5. tournoi de compétition

--ga-ope-cross=<0-9>

Choix de l’opérateur pour le croisement de chromosomes :

  1. croisement à point unique

  2. croisement à double point

  3. croisement à points multiples

  4. croisement uniforme

  5. mélange limité

  6. croisement linéaire

  7. croisement heuristique

  8. croisement de type binaire (par défaut)

  9. interpolation linéaire

  10. interpolation libre

--ga-ope-mut=<0-10>

Choix de l’opérateur pour la mutation :

  1. aléatoire uniforme constante

  2. variable aléatoire uniforme

  3. aléatoire normale constante

  4. variable normale aléatoire

  5. non uniforme

  6. taux d’auto-adaptation

  7. rayon d’auto-adaptation

  8. chromosome de taux d’auto-adaptation

  9. chromosome de rayon d’auto-adaptation

  10. multi-échelle

  11. pas de mutation

--ga-nat-sel-tour-p=<0-1>

Sélection naturelle - probabilité de tournoi (par défaut 0.9)

--ga-coup-sel-tour-nb=<2/3>

Sélection des couples - candidats au tournoi (2/3) (par défaut 3)

--ga-cross-mult-pt-nb=<int>

Croisement standard - nombre de points (par défaut 3)

--ga-cross-blen-pt-nb=<int>

Croisement par mélange (Blending crossover) - nombre de points (par défaut 3)

--ga-cross-blen-share-b=<1/0>

Croisement par mélange (Blending crossover) - bêta partagé (1/0) (par défaut : 1)

--ga-cross-lin-pt-nb=<int>

Croisement linéaire - nombre de points (par défaut 2)

--ga-cross-heur-pt-nb=<int>

Croisement heuristique - nombre de points (par défaut 2)

--ga-cross-heur-share-b=<1/0>

Croisement heuristique - bêta partagé (1/0) (par défaut 1)

--ga-cross-bin-pt-nb=<int>

Croisement de type binaire - nombre de points (par défaut 2)

--ga-cross-bin-share-b=<1/0>

Croisement de type binaire - bêta partagé (1/0) (par défaut : 1)

--ga-mut-unif-cst-p=<0-1>

Mutation uniforme - probabilité (par défaut 0.2)

--ga-mut-norm-cst-p=<0-1>

Mutation normale - probabilité (par défaut 0.2)

--ga-mut-norm-cst-dev=<sd>

Mutation normale - écart-type (par défaut 0.1)

--ga-mut-unif-var-gens=<int>

Mutation uniforme variable - nb de générations (par défaut 50)

--ga-mut-unif-var-p-strt=<0-1>

Mutation uniforme variable - probabilité de départ (par défaut 0.5)

--ga-mut-unif-var-p-end=<0-1>

Mutation uniforme variable - probabilité de fin (par défaut 0.01)

--ga-mut-norm-var-gens-p=<int>

Mutation uniforme variable - nb de générations pour la probabilité (par défaut 50)

--ga-mut-norm-var-gens-d=<int>

Mutation uniforme variable - nb de générations pour l’écart-type (par défaut 50)

--ga-mut-norm-var-p-strt=<0-1>

Mutation uniforme variable - probabilité de départ (par défaut 0.5)

--ga-mut-norm-var-p-end=<0-1>

Mutation uniforme variable - probabilité de fin (par défaut 0.05)

--ga-mut-norm-var-d-strt=<sd>

Mutation uniforme variable - écart-type de départ (par défaut 0.5)

--ga-mut-norm-var-d-end=<sd>

Mutation uniforme variable - écart-type final (par défaut 0.01)

--ga-mut-non-uni-p=<0-1>

Mutation non uniforme - probabilité (par défaut 0.1-0.2)

--ga-mut-non-uni-gens=<int>

Mutation non uniforme - nb de générations (par défaut 50-100)

--ga-mut-non-uni-min-r=<0-1>

Mutation non uniforme - taux minimum (par défaut 0.1)

--ga-mut-multi-scale-p=<0-1>

Mutation multi-échelle - probabilité (par défaut 0.1)