From a5e22f7f4b2cf6c24e6a9f9eee59b0b1a1e88a77 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Thu, 27 Apr 2023 15:38:18 +0200 Subject: [PATCH] Documentation and code update for PSO --- ...ef_algorithm_ParticleSwarmOptimization.rst | 8 +++++-- doc/en/snippets/Variant_PSO.rst | 20 ++++++++++++++++++ ...ef_algorithm_ParticleSwarmOptimization.rst | 8 +++++-- doc/fr/snippets/Variant_PSO.rst | 21 +++++++++++++++++++ .../daAlgorithms/ParticleSwarmOptimization.py | 8 +++++-- 5 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 doc/en/snippets/Variant_PSO.rst create mode 100644 doc/fr/snippets/Variant_PSO.rst diff --git a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst index 86844a4..1e2c404 100644 --- a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst @@ -53,9 +53,11 @@ robust formulations are proposed here: .. index:: pair: Variant ; CanonicalPSO pair: Variant ; OGCR + pair: Variant ; SPSO-2011 -- "PSO" (Canonical PSO, see [ZambranoBigiarini13]_), canonical algorithm of particle swarm, robust and defining the reference for particle swarm algorithms, -- "OGCR" (Simple PSO with no bounds on insects or velocities), simplified algorithm of particle swarm, not recommanded because less robust, but sometimes a lot more efficient. +- "CanonicalPSO" (Canonical Particule Swarm Optimisation, see [ZambranoBigiarini13]_), classical algorithm called "canonical" of particle swarm, robust and defining a reference for particle swarm algorithms, +- "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. . ------------------------------------ .. .. include:: snippets/Header2Algo02.rst @@ -126,6 +128,8 @@ StoreSupplementaryCalculations Example : ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}`` +.. include:: snippets/Variant_PSO.rst + .. include:: snippets/VelocityClampingFactor.rst .. ------------------------------------ .. diff --git a/doc/en/snippets/Variant_PSO.rst b/doc/en/snippets/Variant_PSO.rst new file mode 100644 index 0000000..2e44455 --- /dev/null +++ b/doc/en/snippets/Variant_PSO.rst @@ -0,0 +1,20 @@ +.. index:: + single: Variant + pair: Variant ; CanonicalPSO + pair: Variant ; OGCR + pair: Variant ; SPSO-2011 + +Variant + *Predefined name*. This key allows to choose one of the possible variants + for the main algorithm. The default variant is the original "CanonicalPSO", + and the possible choices are + "CanonicalPSO" (Canonical Particule Swarm Optimisation), + "OGCR" (Simple Particule Swarm Optimisation), + "SPSO-2011" (Standard Standard Particle Swarm Optimisation 2011). + + It is recommended to try the "CanonicalPSO" variant with about 100 particles + for robust performance, and to reduce the number of particules to about 40 + for all variants other than the original "CanonicalPSO" formulation. + + Example : + ``{"Variant":"CanonicalPSO"}`` diff --git a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst index f8331e2..47bad95 100644 --- a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst @@ -55,9 +55,11 @@ stables et robustes suivantes : .. index:: pair: Variant ; CanonicalPSO pair: Variant ; OGCR + pair: Variant ; SPSO-2011 -- "PSO" (Canonical PSO, voir [ZambranoBigiarini13]_), algorithme canonique d'essaim particulaire, robuste et défini comme la référence des algorithmes d'essaims particulaires, -- "OGCR" (Simple PSO sans bornes sur les insectes ou les vitesses), algorithme simplifié d'essaim particulaire, déconseillé car peu robuste, mais parfois beaucoup plus rapide. +- "CanonicalPSO" (Canonical Particule Swarm Optimisation, voir [ZambranoBigiarini13]_), algorithme classique dit "canonique" d'essaim particulaire, robuste et définissant une référence des algorithmes d'essaims particulaires, +- "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. .. ------------------------------------ .. .. include:: snippets/Header2Algo02.rst @@ -128,6 +130,8 @@ StoreSupplementaryCalculations Exemple : ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}`` +.. include:: snippets/Variant_PSO.rst + .. include:: snippets/VelocityClampingFactor.rst .. ------------------------------------ .. diff --git a/doc/fr/snippets/Variant_PSO.rst b/doc/fr/snippets/Variant_PSO.rst new file mode 100644 index 0000000..a596bc3 --- /dev/null +++ b/doc/fr/snippets/Variant_PSO.rst @@ -0,0 +1,21 @@ +.. index:: + single: Variant + pair: Variant ; CanonicalPSO + pair: Variant ; OGCR + pair: Variant ; SPSO-2011 + +Variant + *Nom prédéfini*. Cette clé permet de choisir l'une des variantes possibles + pour l'algorithme principal. La variante par défaut est la formulation + "CanonicalPSO" d'origine, et les choix possibles sont + "CanonicalPSO" (Canonical Particule Swarm Optimisation), + "OGCR" (Simple Particule Swarm Optimisation), + "SPSO-2011" (Standard Standard Particle Swarm Optimisation 2011). + + Il est conseillé d'essayer la variante "CanonicalPSO" avec une centaine de + particules pour une performance robuste, et de réduire le nombre de + particules à une quarantaine pour toutes les variantes autres que la + formulation "CanonicalPSO" originale. + + Exemple : + ``{"Variant":"CanonicalPSO"}`` diff --git a/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py b/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py index f6b31aa..6fbbe16 100644 --- a/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py +++ b/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py @@ -98,14 +98,14 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): name = "CognitiveAcceleration", default = 1.19315, # 1/2+ln(2) typecast = float, - message = "Taux de rappel à la meilleure position de l'insecte précédemment connue (entre 0 et 1)", + message = "Taux de rappel à la meilleure position de l'insecte précédemment connue (positif)", minval = 0., ) self.defineRequiredParameter( name = "SocialAcceleration", default = 1.19315, # 1/2+ln(2) typecast = float, - message = "Taux de rappel au meilleur insecte du groupe local (entre 0 et 1)", + message = "Taux de rappel au meilleur insecte du groupe local (positif)", minval = 0., oldname = "GroupRecallRate", ) @@ -150,6 +150,10 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): "CurrentIterationNumber", "CurrentState", "Innovation", + "InternalCostFunctionJ", + "InternalCostFunctionJb", + "InternalCostFunctionJo", + "InternalStates", "OMA", "OMB", "SimulatedObservationAtBackground", -- 2.39.2