]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation and code update for PSO
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 27 Apr 2023 13:38:18 +0000 (15:38 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 27 Apr 2023 13:38:18 +0000 (15:38 +0200)
doc/en/ref_algorithm_ParticleSwarmOptimization.rst
doc/en/snippets/Variant_PSO.rst [new file with mode: 0644]
doc/fr/ref_algorithm_ParticleSwarmOptimization.rst
doc/fr/snippets/Variant_PSO.rst [new file with mode: 0644]
src/daComposant/daAlgorithms/ParticleSwarmOptimization.py

index 86844a40145ee8af64271491bc69ab29974bf5a4..1e2c4042f739e8cfa896c0cc29829b7312572537 100644 (file)
@@ -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 (file)
index 0000000..2e44455
--- /dev/null
@@ -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"}``
index f8331e2e0b46866658d701c4634b034571719d9a..47bad95a7f9cea2a25494f18e1f62536f44efa43 100644 (file)
@@ -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 (file)
index 0000000..a596bc3
--- /dev/null
@@ -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"}``
index f6b31aad6a47b406e646feb5fc7c96ef83a8b0f6..6fbbe16cff2ca0ee10dc7a1fcf9800cbb7ae3379 100644 (file)
@@ -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",