From f8264fe0cc134ec9ea9ee3a954d48f3a43464881 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Wed, 10 May 2023 12:25:18 +0200 Subject: [PATCH] Documentation review and update --- ...f_algorithm_DerivativeFreeOptimization.rst | 1 - .../ref_algorithm_DifferentialEvolution.rst | 1 - ...ef_algorithm_ParticleSwarmOptimization.rst | 48 +++++++++++++++++- doc/en/ref_algorithm_TabuSearch.rst | 1 - ...f_algorithm_DerivativeFreeOptimization.rst | 2 - .../ref_algorithm_DifferentialEvolution.rst | 2 - ...ef_algorithm_ParticleSwarmOptimization.rst | 49 ++++++++++++++++++- doc/fr/ref_algorithm_TabuSearch.rst | 2 - 8 files changed, 93 insertions(+), 13 deletions(-) diff --git a/doc/en/ref_algorithm_DerivativeFreeOptimization.rst b/doc/en/ref_algorithm_DerivativeFreeOptimization.rst index 753a32d..b737c8b 100644 --- a/doc/en/ref_algorithm_DerivativeFreeOptimization.rst +++ b/doc/en/ref_algorithm_DerivativeFreeOptimization.rst @@ -22,7 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DerivativeFreeOptimization -.. index:: single: Global optimization .. _section_ref_algorithm_DerivativeFreeOptimization: Calculation algorithm "*DerivativeFreeOptimization*" diff --git a/doc/en/ref_algorithm_DifferentialEvolution.rst b/doc/en/ref_algorithm_DifferentialEvolution.rst index 49d0aae..4ada6fb 100644 --- a/doc/en/ref_algorithm_DifferentialEvolution.rst +++ b/doc/en/ref_algorithm_DifferentialEvolution.rst @@ -22,7 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DifferentialEvolution -.. index:: single: Global optimization .. _section_ref_algorithm_DifferentialEvolution: Calculation algorithm "*DifferentialEvolution*" diff --git a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst index cc19b23..189c013 100644 --- a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst @@ -22,12 +22,15 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: ParticleSwarmOptimization -.. index:: single: Global optimization +.. index:: single: Particle Swarm (Optimization) .. _section_ref_algorithm_ParticleSwarmOptimization: Calculation algorithm "*ParticleSwarmOptimization*" --------------------------------------------------- +.. ------------------------------------ .. +.. include:: snippets/Header2Algo00.rst + .. ------------------------------------ .. .. include:: snippets/Header2Algo01.rst @@ -59,7 +62,48 @@ robust formulations are proposed here: - "OGCR" (Simple Particule Swarm Optimisation), simplified algorithm of particle swarm with no bounds on insects or velocities, not recommanded because less robust, but sometimes a lot more efficient, - "SPSO-2011" (Standard Standard Particle Swarm Optimisation 2011, voir [ZambranoBigiarini13]_), 2011 reference algorithm of particule swarm, robust, efficient and defined as a reference for particle swarm algorithms. -. ------------------------------------ .. +The following are a few practical suggestions for the effective use of these +algorithms: + +- The recommended variant of this algorithm is the "SPSO-2011" even if the + "CanonicalPSO" algorithm remains by default the more robust of the two. +- The number of particles or insects usually recommended varies between 40 and + 100 depending on the algorithm, more or less independently of the dimension + of the state space. +- The recommended number of generations for population evolution is often + around 50, but it can easily vary between 25 and 500. +- The maximum number of evaluations of the simulation function should usually + be limited to between a few thousand and a few tens of thousands of times the + dimension of the state space. +- The error functional usually decreases by levels (thus with a zero + progression of the value of the functional at each generation when we stay in + the level), making it not recommended to stop on the criterion of decrease of + the cost function. It is normally wiser to adapt the number of iterations or + generations to accelerate the convergence of the algorithms. +- If the problem is constrained, it is necessary to define the bounds of the + variables (by the variable "*Bounds*"). If the problem is totally + unconstrained, it is essential to define increment bounds (by the variable + "*BoxBounds*") to delimit the optimal search in a useful way. Similarly, if + the problem is partially constrained, it is recommended (but not required) to + define increment bounds. In case these increment bounds are not defined, the + variable bounds will be used as increment bounds. + +These suggestions are to be used as experimental indications, not as +requirements, because they are to be appreciated or adapted according to the +physics of each problem that is treated. + +The count of the number of evaluations of the function to be simulated during +this algorithm is deterministic, namely the "*number of iterations or +generations*" multiplied by the "*number of individuals in the population*". +With the default values, it takes between `40x50=2000` and `100*50=5000` +evaluations. It is for this reason that this algorithm is usually interesting +when the dimension of the state space is large, or when the non-linearities of +the simulation make the evaluation of the gradient of the functional by +numerical approximation complicated or invalid. But it is also necessary that +the calculation of the function to be simulated is not too costly to avoid a +prohibitive optimization time. + +.. ------------------------------------ .. .. include:: snippets/Header2Algo02.rst .. include:: snippets/Background.rst diff --git a/doc/en/ref_algorithm_TabuSearch.rst b/doc/en/ref_algorithm_TabuSearch.rst index 079d7bd..23d206e 100644 --- a/doc/en/ref_algorithm_TabuSearch.rst +++ b/doc/en/ref_algorithm_TabuSearch.rst @@ -22,7 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: TabuSearch -.. index:: single: Global optimization .. _section_ref_algorithm_TabuSearch: Calculation algorithm "*TabuSearch*" diff --git a/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst b/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst index 6089801..bb2b905 100644 --- a/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst +++ b/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst @@ -22,8 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DerivativeFreeOptimization -.. index:: single: Optimisation globale -.. index:: single: Globale (optimisation) .. _section_ref_algorithm_DerivativeFreeOptimization: Algorithme de calcul "*DerivativeFreeOptimization*" diff --git a/doc/fr/ref_algorithm_DifferentialEvolution.rst b/doc/fr/ref_algorithm_DifferentialEvolution.rst index 83692a1..a542bbc 100644 --- a/doc/fr/ref_algorithm_DifferentialEvolution.rst +++ b/doc/fr/ref_algorithm_DifferentialEvolution.rst @@ -22,8 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DifferentialEvolution -.. index:: single: Optimisation globale -.. index:: single: Globale (optimisation) .. _section_ref_algorithm_DifferentialEvolution: Algorithme de calcul "*DifferentialEvolution*" diff --git a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst index 6af2b0d..760dff2 100644 --- a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst @@ -22,13 +22,15 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: ParticleSwarmOptimization -.. index:: single: Optimisation globale -.. index:: single: Globale (optimisation) +.. index:: single: Essaim particulaire (Optimisation par) .. _section_ref_algorithm_ParticleSwarmOptimization: Algorithme de calcul "*ParticleSwarmOptimization*" -------------------------------------------------- +.. ------------------------------------ .. +.. include:: snippets/Header2Algo00.rst + .. ------------------------------------ .. .. include:: snippets/Header2Algo01.rst @@ -61,6 +63,49 @@ stables et robustes suivantes : - "OGCR" (Simple Particule Swarm Optimisation), algorithme simplifié d'essaim particulaire sans bornes sur les insectes ou les vitesses, déconseillé car peu robuste, mais parfois beaucoup plus rapide, - "SPSO-2011" (Standard Standard Particle Swarm Optimisation 2011, voir [ZambranoBigiarini13]_), algorithme de référence 2011 d'essaim particulaire, robuste, performant et défini comme une référence des algorithmes d'essaims particulaires. +Voici quelques suggestions pratiques pour une utilisation efficace de ces +algorithmes : + +- La variante recommandée de cet algorithme est le "SPSO-2011" même si + l'algorithme "CanonicalPSO" reste par défaut le plus robuste des deux. +- Le nombre de particules ou d'insectes usuellement recommandé varie entre 40 + et 100 selon l'algorithme, à peu près indépendamment de la dimension de + l'espace des états. +- Le nombre recommandé de générations, lors de l'évolution de la population, + est souvent de l'ordre de 50, mais il peut facilement varier entre 25 et 500. +- Le nombre maximal d'évaluation de la fonction de simulation doit usuellement + être limité entre quelques milliers et quelques dizaines de milliers de fois + la dimension de l'espace des états. +- La fonctionnelle d'erreur décroît usuellement par pallier (donc avec une + progression nulle de la valeur de fonctionnelle à chaque génération lorsque + l'on reste dans le palier), rendant non recommandé un arrêt sur critère de + décroissance de la fonction-coût. Il est normalement plus judicieux d'adapter + le nombre d'itérations ou de générations pour accélérer la convergence des + algorithmes. +- Si le problème est contraint, il faut définir les bornes des variables (par + la variable "*Bounds*"). Si le problème est totalement non contraint, il est + indispensable de définir des bornes d'incrément (par la variable + "*BoxBounds*") pour circonscrire la recherche optimale de manière utile. De + manière similaire, si le problème est partiellement contraint, il est + recommandé (mais pas indispensable) de définir des bornes d'incrément. Dans + le cas où ces bornes d'incréments ne sont pas définies, ce sont les bornes + des variables qui seront utilisées comme bornes d'incréments. + +Ces conseils sont à utiliser comme des indications expérimentales, et pas comme +des prescriptions, car ils sont à apprécier ou à adapter selon la physique de +chaque problème que l'on traite. + +Le décompte du nombre d'évaluations de la fonction à simuler lors de cet +algorithme est déterministe, à savoir le "*nombre d'itérations ou de +générations*" multiplié par le "*nombre d'individus de la population*". Avec +les valeurs par défaut, il faut entre `40x50=2000` et `100*50=5000` évaluations +par défaut. C'est pour cette raison que cet algorithme est usuellement +intéressant lorsque la dimension de l'espace des états est grande, ou que les +non-linéarités de la simulation rendent compliqué, ou invalide, l'évaluation du +gradient de la fonctionnelle par approximation numérique. Mais il est aussi +nécessaire que le calcul de la fonction à simuler ne soit pas trop coûteuse +pour éviter une temps d'optimisation rédhibitoire. + .. ------------------------------------ .. .. include:: snippets/Header2Algo02.rst diff --git a/doc/fr/ref_algorithm_TabuSearch.rst b/doc/fr/ref_algorithm_TabuSearch.rst index e8a2bb9..9a2035f 100644 --- a/doc/fr/ref_algorithm_TabuSearch.rst +++ b/doc/fr/ref_algorithm_TabuSearch.rst @@ -22,8 +22,6 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: TabuSearch -.. index:: single: Optimisation globale -.. index:: single: Globale (optimisation) .. _section_ref_algorithm_TabuSearch: Algorithme de calcul "*TabuSearch*" -- 2.39.2