]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation minor corrections and improvements V7_4_0 V7_4_0rc2
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 27 May 2014 20:23:19 +0000 (22:23 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 27 May 2014 21:00:42 +0000 (23:00 +0200)
doc/en/reference.rst
doc/fr/reference.rst
src/daComposant/daAlgorithms/ParticleSwarmOptimization.py

index 76b8746faa1cad6c278999ec9e24579f98a60c10..1acc0a08563a567f1b6d951dafb6a40d9f077796 100644 (file)
@@ -367,7 +367,7 @@ acronyms or particular names can be found in the :ref:`genindex` or the
 
   Bounds
     This key allows to define upper and lower bounds for every state variable
-    being optimized. Bounds can be given by a list of list of pairs of
+    being optimized. Bounds have to be given by a list of list of pairs of
     lower/upper bounds for each variable, with possibly ``None`` every time
     there is no bound. The bounds can always be specified, but they are taken
     into account only by the constrained optimizers.
@@ -430,7 +430,7 @@ acronyms or particular names can be found in the :ref:`genindex` or the
 
   Bounds
     This key allows to define upper and lower bounds for every state variable
-    being optimized. Bounds can be given by a list of list of pairs of
+    being optimized. Bounds have to be given by a list of list of pairs of
     lower/upper bounds for each variable, with possibly ``None`` every time
     there is no bound. The bounds can always be specified, but they are taken
     into account only by the constrained optimizers.
@@ -521,10 +521,9 @@ acronyms or particular names can be found in the :ref:`genindex` or the
 
   Bounds
     This key allows to define upper and lower bounds for every state variable
-    being optimized. Bounds can be given by a list of list of pairs of
+    being optimized. Bounds have to be given by a list of list of pairs of
     lower/upper bounds for each variable, with extreme values every time there
-    is no bound. The bounds can always be specified, but they are taken into
-    account only by the constrained optimizers.
+    is no bound (``None`` is not allowed when there is no bound).
 
   ConstrainedBy
     This key allows to define the method to take bounds into account. The
@@ -557,10 +556,9 @@ acronyms or particular names can be found in the :ref:`genindex` or the
 
   Bounds
     This key allows to define upper and lower bounds for every state variable
-    being optimized. Bounds can be given by a list of list of pairs of
+    being optimized. Bounds have to be given by a list of list of pairs of
     lower/upper bounds for each variable, with extreme values every time there
-    is no bound. The bounds can always be specified, but they are taken into
-    account only by the constrained optimizers.
+    is no bound (``None`` is not allowed when there is no bound).
 
   ConstrainedBy
     This key allows to define the method to take bounds into account. The
@@ -618,11 +616,19 @@ acronyms or particular names can be found in the :ref:`genindex` or the
   QualityCriterion
     This key indicates the quality criterion, minimized to find the optimal
     state estimate. The default is the usual data assimilation criterion named
-    "DA", the augmented weighted least squares. The possible criteria has to
-    be in the following list, where the equivalent names are indicated by "=":
-    ["AugmentedPonderatedLeastSquares"="APLS"="DA",
-    "PonderatedLeastSquares"="PLS", "LeastSquares"="LS"="L2",
+    "DA", the augmented weighted least squares. The possible criteria has to be
+    in the following list, where the equivalent names are indicated by the sign
+    "=": ["AugmentedWeightedLeastSquares"="AWLS"="DA",
+    "WeightedLeastSquares"="WLS", "LeastSquares"="LS"="L2",
     "AbsoluteValue"="L1", "MaximumError"="ME"]
+  
+  BoxBounds
+    This key allows to define upper and lower bounds for *increments* on every
+    state variable being optimized (and not on state variables themselves).
+    Bounds have to be given by a list of list of pairs of lower/upper bounds for
+    each increment on variable, with extreme values every time there is no bound
+    (``None`` is not allowed when there is no bound). This key is required and
+    there is no default values.
 
   SetSeed
     This key allow to give an integer in order to fix the seed of the random
@@ -791,6 +797,11 @@ for example::
         "EpsilonMinimumExponent" : -8,
         }
 
+To give the "*AlgorithmParameters*" values by string, one must enclose a
+standard dictionary definition between simple quotes, as for example::
+
+    '{"AmplitudeOfInitialDirection" : 1, "EpsilonMinimumExponent" : -8}'
+
 If an option is specified by the user for an algorithm that doesn't support it,
 the option is simply left unused and don't stop the treatment. The meaning of
 the acronyms or particular names can be found in the :ref:`genindex` or the
index b2cfce394ce9c41732b1ecd3f2139dabe2db3276..bbd5b1219faec6f016b50ac625762e7952ab0946 100644 (file)
@@ -387,7 +387,7 @@ trouv
 
   Bounds
     Cette clé permet de définir des bornes supérieure et inférieure pour
-    chaque variable d'état optimisée. Les bornes peuvent être données par une
+    chaque variable d'état optimisée. Les bornes doivent être données par une
     liste de liste de paires de bornes inférieure/supérieure pour chaque
     variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les
     bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous
@@ -453,7 +453,7 @@ trouv
 
   Bounds
     Cette clé permet de définir des bornes supérieure et inférieure pour
-    chaque variable d'état optimisée. Les bornes peuvent être données par une
+    chaque variable d'état optimisée. Les bornes doivent être données par une
     liste de liste de paires de bornes inférieure/supérieure pour chaque
     variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les
     bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous
@@ -548,11 +548,10 @@ trouv
 
   Bounds
     Cette clé permet de définir des bornes supérieure et inférieure pour chaque
-    variable d'état optimisée. Les bornes peuvent être données par une liste de
+    variable d'état optimisée. Les bornes doivent être données par une liste de
     liste de paires de bornes inférieure/supérieure pour chaque variable, avec
-    une valeur extrême chaque fois qu'il n'y a pas de borne. Les bornes peuvent
-    toujours être spécifiées, mais seuls les optimiseurs sous contraintes les
-    prennent en compte.
+    une valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas
+    une valeur autorisée lorsqu'il n'y a pas de borne).
 
   ConstrainedBy
     Cette clé permet de définir la méthode pour prendre en compte les bornes. Les
@@ -585,11 +584,10 @@ trouv
 
   Bounds
     Cette clé permet de définir des bornes supérieure et inférieure pour chaque
-    variable d'état optimisée. Les bornes peuvent être données par une liste de
+    variable d'état optimisée. Les bornes doivent être données par une liste de
     liste de paires de bornes inférieure/supérieure pour chaque variable, avec
-    une valeur extrême chaque fois qu'il n'y a pas de borne. Les bornes peuvent
-    toujours être spécifiées, mais seuls les optimiseurs sous contraintes les
-    prennent en compte.
+    une valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas
+    une valeur autorisée lorsqu'il n'y a pas de borne).
 
   ConstrainedBy
     Cette clé permet de définir la méthode pour prendre en compte les bornes. Les
@@ -651,10 +649,18 @@ trouv
     l'estimation optimale de l'état. Le défaut est le critère usuel de
     l'assimilation de données nommé "DA", qui est le critère de moindres carrés
     pondérés augmentés. Les critères possibles sont dans la liste suivante, dans
-    laquelle les noms équivalents sont indiqués par "=" :
-    ["AugmentedPonderatedLeastSquares"="APLS"="DA",
-    "PonderatedLeastSquares"="PLS", "LeastSquares"="LS"="L2",
-    "AbsoluteValue"="L1", "MaximumError"="ME"]
+    laquelle les noms équivalents sont indiqués par un signe "=" :
+    ["AugmentedWeightedLeastSquares"="AWLS"="DA", "WeightedLeastSquares"="WLS",
+    "LeastSquares"="LS"="L2", "AbsoluteValue"="L1",  "MaximumError"="ME"]
+
+  BoxBounds
+    Cette clé permet de définir des bornes supérieure et inférieure pour chaque
+    incrément de  variable d'état optimisée (et non pas chaque variable d'état
+    elle-même). Les bornes doivent être données par une liste de liste de paires
+    de bornes inférieure/supérieure pour chaque incrément de variable, avec une
+    valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas une
+    valeur autorisée lorsqu'il n'y a pas de borne). Cette clé est requise et il
+    n'y a pas de valeurs par défaut.
 
   SetSeed
     Cette clé permet de donner un nombre entier pour fixer la graine du
@@ -830,6 +836,12 @@ g
         "EpsilonMinimumExponent" : -8,
         }
 
+Pour donner les valeurs de la commande "*AlgorithmParameters*" par une chaîne de
+caractères, on doit utiliser des guillemets simples pour fournir une définition
+standard de dictionnaire, comme par exemple::
+
+    '{"AmplitudeOfInitialDirection" : 1, "EpsilonMinimumExponent" : -8}'
+
 Si une option est spécifiée par l'utilisateur pour un algorithme qui ne la
 supporte pas, cette option est simplement laissée inutilisée et ne bloque pas le
 traitement. La signification des acronymes ou des noms particuliers peut être
index 706e9955ccf7bbe9a96ffd17ce610d965fdd81c7..862c350d2a9226a4b1725ee54ac8d5e8657d70bd 100644 (file)
@@ -64,11 +64,11 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             )
         self.defineRequiredParameter(
             name     = "QualityCriterion",
-            default  = "AugmentedPonderatedLeastSquares",
+            default  = "AugmentedWeightedLeastSquares",
             typecast = str,
             message  = "Critère de qualité utilisé",
-            listval  = ["AugmentedPonderatedLeastSquares","APLS","DA",
-                        "PonderatedLeastSquares","PLS",
+            listval  = ["AugmentedWeightedLeastSquares","AWLS","AugmentedPonderatedLeastSquares","APLS","DA",
+                        "WeightedLeastSquares","WLS","PonderatedLeastSquares","PLS",
                         "LeastSquares","LS","L2",
                         "AbsoluteValue","L1",
                         "MaximumError","ME"],
@@ -118,18 +118,18 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         #
         # Définition de la fonction-coût
         # ------------------------------
-        def CostFunction(x, QualityMeasure="AugmentedPonderatedLeastSquares"):
+        def CostFunction(x, QualityMeasure="AugmentedWeightedLeastSquares"):
             _X  = numpy.asmatrix(numpy.ravel( x )).T
             _HX = Hm( _X )
             _HX = numpy.asmatrix(numpy.ravel( _HX )).T
             #
-            if QualityMeasure in ["AugmentedPonderatedLeastSquares","APLS","DA"]:
+            if QualityMeasure in ["AugmentedWeightedLeastSquares","AWLS","AugmentedPonderatedLeastSquares","APLS","DA"]:
                 if BI is None or RI is None:
                     raise ValueError("Background and Observation error covariance matrix has to be properly defined!")
                 Jb  = 0.5 * (_X - Xb).T * BI * (_X - Xb)
                 Jo  = 0.5 * (Y - _HX).T * RI * (Y - _HX)
                 J   = float( Jb ) + float( Jo )
-            elif QualityMeasure in ["PonderatedLeastSquares","PLS"]:
+            elif QualityMeasure in ["WeightedLeastSquares","WLS","PonderatedLeastSquares","PLS"]:
                 if RI is None:
                     raise ValueError("Observation error covariance matrix has to be properly defined!")
                 Jb  = 0.
@@ -162,24 +162,24 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         # Initialisation des bornes
         # -------------------------
         SpaceUp  = BoxBounds[:,1] + Xini
-        Spacelow = BoxBounds[:,0] + Xini
+        SpaceLow = BoxBounds[:,0] + Xini
         nbparam  = len(SpaceUp)
         #
         # Initialisation de l'essaim
         # --------------------------
-        LimitVelocity = numpy.abs(SpaceUp-Spacelow)
+        LimitVelocity = numpy.abs(SpaceUp-SpaceLow)
         #
         PosInsect = []
         VelocityInsect = []
         for i in range(nbparam) :
-            PosInsect.append(numpy.random.uniform(low=Spacelow[i], high=SpaceUp[i], size=self._parameters["NumberOfInsects"]))
+            PosInsect.append(numpy.random.uniform(low=SpaceLow[i], high=SpaceUp[i], size=self._parameters["NumberOfInsects"]))
             VelocityInsect.append(numpy.random.uniform(low=-LimitVelocity[i], high=LimitVelocity[i], size=self._parameters["NumberOfInsects"]))
         VelocityInsect = numpy.matrix(VelocityInsect)
         PosInsect = numpy.matrix(PosInsect)
         #
         BestPosInsect = numpy.array(PosInsect)
         qBestPosInsect = []
-        Best = copy.copy(Spacelow)
+        Best = copy.copy(SpaceLow)
         qBest = CostFunction(Best,self._parameters["QualityCriterion"])
         #
         for i in range(self._parameters["NumberOfInsects"]):