]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation convergence for bounds V9_7_0rc1
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 6 May 2021 05:26:01 +0000 (07:26 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 6 May 2021 05:55:22 +0000 (07:55 +0200)
19 files changed:
doc/en/ref_algorithm_3DVAR.rst
doc/en/ref_algorithm_Blue.rst
doc/en/ref_algorithm_ExtendedBlue.rst
doc/en/snippets/BoundsWithExtremes.rst
doc/en/snippets/BoundsWithNone.rst
doc/en/snippets/BoxBounds.rst
doc/en/snippets/StateBoundsForQuantilesWithNone.rst [new file with mode: 0644]
doc/fr/ref_algorithm_3DVAR.rst
doc/fr/ref_algorithm_Blue.rst
doc/fr/ref_algorithm_ExtendedBlue.rst
doc/fr/snippets/BoundsWithExtremes.rst
doc/fr/snippets/BoundsWithNone.rst
doc/fr/snippets/BoxBounds.rst
doc/fr/snippets/StateBoundsForQuantilesWithNone.rst [new file with mode: 0644]
src/daComposant/daAlgorithms/3DVAR.py
src/daComposant/daAlgorithms/Blue.py
src/daComposant/daAlgorithms/ExtendedBlue.py
src/daComposant/daCore/BasicObjects.py
src/daComposant/daCore/NumericObjects.py

index b196e3bbd7f7434ffb217d931572d8abd758e74d..6d893a2ba347e6dbdd4c5d80db0aae93cf5347ed 100644 (file)
@@ -95,6 +95,8 @@ initialization point for the minimization, but it is not recommended.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index 11d2c8d11a3ddfc6a6bee21970f8caed0146492a..55d4fe73d8e7bac94caff28069d734ed49250d7b 100644 (file)
@@ -79,6 +79,8 @@ these reasons, this method is not proposed nor recommended.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index eb9b9a8483bad2b3cedc117984b6e4fde988c6d0..7e7823877291a5a057b13f47e6f4519f64012d2d 100644 (file)
@@ -65,6 +65,8 @@ without being entirely equivalent.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index 5ebe5727cb7430a0afce3b2afc5ac0ea520eaf05..5ea268be3b10a38fd671f25870856e20d8441362 100644 (file)
@@ -1,11 +1,11 @@
 .. index:: single: Bounds
 
 Bounds
-  *List of pairs of real values*. This key allows to define upper and lower
-  bounds for every state variable 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 (``None`` is not allowed when there is no
-  bound).
+  *List of pairs of real values*. This key allows to define pairs of upper and
+  lower bounds for every state variable 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 (``None`` is not allowed
+  when there is no bound).
 
   Example:
   ``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,1.e99],[-1.e99,1.e99]]}``
index e956182df68c894078bfd224f054ecfe93d23c44..52904a67143466a2691ee75065d06d046e81f9c7 100644 (file)
@@ -1,11 +1,12 @@
 .. index:: single: Bounds
 
 Bounds
-  *List of pairs of real values*. This key allows to define upper and lower
-  bounds for every state variable 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.
+  *List of pairs of real values*. This key allows to define pairs of upper and
+  lower bounds for every state variable 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.
 
   Example:
   ``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
index c35881079c8c595dffa1306d9b13f78ac66f41f9..03731e8c54085ef3f2bb98ace9bf75471474521a 100644 (file)
@@ -1,10 +1,10 @@
 .. index:: single: BoxBounds
 
 BoxBounds
-  *List of pairs of real values*. 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
+  *List of pairs of real values*. This key allows to define pairs of 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.
 
diff --git a/doc/en/snippets/StateBoundsForQuantilesWithNone.rst b/doc/en/snippets/StateBoundsForQuantilesWithNone.rst
new file mode 100644 (file)
index 0000000..9369825
--- /dev/null
@@ -0,0 +1,17 @@
+.. index:: single: StateBoundsForQuantiles
+
+StateBoundsForQuantiles
+  *List of pairs of real values*. This key allows to define pairs of upper and
+  lower bounds for every state variable used for quantile simulations. 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.
+
+  If these bounds are not defined for quantile simulation and if optimization
+  bounds are defined, they are used for quantile simulation. If these bounds
+  for quantile simulation are defined, they are used regardless of the
+  optimization bounds defined. If this variable is set to ``None``, then no
+  bounds are used for the states used in the quantile simulation regardless of
+  the optimization bounds defined.
+
+  Exemple :
+  ``{"StateBoundsForQuantiles":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
index 608e32d22ac51aee48cc1477e0db4841dd6ebec5..faf5b493b2255d340d762745be747b09048297ec 100644 (file)
@@ -97,6 +97,8 @@ initial de leur minimisation, mais ce n'est pas recommandé.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index 161d1a576e00ca1e13a6eda3a51cb419c3847236..308d8dda792ae2f5b51fb23b6b952f7ac40b8656 100644 (file)
@@ -80,6 +80,8 @@ pas proposée.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index b40211cf152a44e2add15316f18c2ecee6a51515..0d766286f5a56e32e55af59408e25c9606abad59 100644 (file)
@@ -65,6 +65,8 @@ lui être entièrement équivalent.
 
 .. include:: snippets/SimulationForQuantiles.rst
 
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
 StoreSupplementaryCalculations
   .. index:: single: StoreSupplementaryCalculations
 
index 5788a4d98f589a174eab8d77c0b35e8114d3609a..4ba54b09b8ba244f4f168df88fa7ab393d097a57 100644 (file)
@@ -1,9 +1,9 @@
 .. index:: single: Bounds
 
 Bounds
-  *Liste de paires de valeurs réelles*. Cette clé permet de définir des bornes
-  supérieure et inférieure pour chaque variable d'état optimisée. Les bornes
-  doivent être données par une liste de liste de paires de bornes
+  *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+  de bornes supérieure et inférieure pour 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 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).
index 340c560a3d54f8f40d3e92ebf84024b297fa4052..3dac7cfc8b33a011b15aadd95928cef59b56f541 100644 (file)
@@ -1,9 +1,9 @@
 .. index:: single: Bounds
 
 Bounds
-  *Liste de paires de valeurs réelles*. Cette clé permet de définir des bornes
-  supérieure et inférieure pour chaque variable d'état optimisée. Les bornes
-  doivent être données par une liste de liste de paires de bornes
+  *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+  de bornes supérieure et inférieure pour 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 contraintes les prennent en compte.
index 068f46fbd6f12b83eccfe314cb032d43e6ff9a9c..45c4ef0717d227baca37f1e6233db0c393bb16c2 100644 (file)
@@ -1,13 +1,13 @@
 .. index:: single: BoxBounds
 
 BoxBounds
-  *Liste de paires de valeurs réelles*. 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.
+  *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+  de 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.
 
   Exemple :
   ``{"BoxBounds":[[-0.5,0.5], [0.01,2.], [0.,1.e99], [-1.e99,1.e99]]}``
diff --git a/doc/fr/snippets/StateBoundsForQuantilesWithNone.rst b/doc/fr/snippets/StateBoundsForQuantilesWithNone.rst
new file mode 100644 (file)
index 0000000..45b3829
--- /dev/null
@@ -0,0 +1,19 @@
+.. index:: single: StateBoundsForQuantiles
+
+StateBoundsForQuantiles
+  *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+  de bornes supérieure et inférieure pour chaque variable d'état utilisée dans
+  la simulation des quantiles. 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.
+
+  En l'absence de définition de ces bornes pour la simulation des quantiles et
+  si des bornes d'optimisation sont définies, ce sont ces dernières qui sont
+  utilisées pour la simulation des quantiles. Si ces bornes pour la simulation
+  des quantiles sont définies, elles sont utilisées quelles que soient les
+  bornes d'optimisation définies. Si cette variable est définie à ``None``,
+  alors aucune borne n'est utilisée pour les états utilisés dans la simulation
+  des quantiles quelles que soient les bornes d'optimisation définies.
+
+  Exemple :
+  ``{"StateBoundsForQuantiles":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
index 3879f39924cca129d3557fc91262ac48e1453387..cdc2aeefa500aaa423a1669e8805f1e277b0905a 100644 (file)
@@ -170,16 +170,9 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             message  = "Liste des paires de bornes",
             )
         self.defineRequiredParameter( # Pas de type
-            name     = "QBounds",
+            name     = "StateBoundsForQuantiles",
             message  = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
             )
-        self.defineRequiredParameter(
-            name     = "ConstrainedBy",
-            default  = "EstimateProjection",
-            typecast = str,
-            message  = "Prise en compte des contraintes",
-            listval  = ["EstimateProjection"],
-            )
         self.defineRequiredParameter(
             name     = "InitializationPoint",
             typecast = numpy.ravel,
index 006873e18a44af40c03008985db5e29199e2e291..e14ef3ffb4863a439dfdc31041e8975e6ed826c4 100644 (file)
@@ -96,16 +96,9 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             listval  = ["Linear", "NonLinear"]
             )
         self.defineRequiredParameter( # Pas de type
-            name     = "QBounds",
+            name     = "StateBoundsForQuantiles",
             message  = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
             )
-        self.defineRequiredParameter(
-            name     = "ConstrainedBy",
-            default  = "EstimateProjection",
-            typecast = str,
-            message  = "Prise en compte des contraintes",
-            listval  = ["EstimateProjection"],
-            )
         self.requireInputArguments(
             mandatory= ("Xb", "Y", "HO", "R", "B"),
             )
index 60aa9a4013a70306bbe124a014f77a8fa7f2f4b7..5b1deee66f60ae0b436244e4c70ff1fc8ae2aa05 100644 (file)
@@ -96,16 +96,9 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             listval  = ["Linear", "NonLinear"]
             )
         self.defineRequiredParameter( # Pas de type
-            name     = "QBounds",
+            name     = "StateBoundsForQuantiles",
             message  = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
             )
-        self.defineRequiredParameter(
-            name     = "ConstrainedBy",
-            default  = "EstimateProjection",
-            typecast = str,
-            message  = "Prise en compte des contraintes",
-            listval  = ["EstimateProjection"],
-            )
         self.requireInputArguments(
             mandatory= ("Xb", "Y", "HO", "R", "B"),
             )
index 80d682d4a8d4e8478e27dc6056acb2af5369dd77..1761666c686b6d81df29d961fb1eb40300aec158 100644 (file)
@@ -768,7 +768,7 @@ class Algorithm(object):
             logging.debug("%s Bounds taken into account"%(self._name,))
         else:
             self._parameters["Bounds"] = None
-        if ("QBounds" in self._parameters) and isinstance(self._parameters["QBounds"], (list, tuple)) and (len(self._parameters["QBounds"]) > 0):
+        if ("StateBoundsForQuantiles" in self._parameters) and isinstance(self._parameters["StateBoundsForQuantiles"], (list, tuple)) and (len(self._parameters["StateBoundsForQuantiles"]) > 0):
             logging.debug("%s Bounds for quantiles states taken into account"%(self._name,))
             # Attention : contrairement à Bounds, pas de défaut à None, sinon on ne peut pas être sans bornes
         #
@@ -1398,11 +1398,11 @@ class AlgorithmAndParameters(object):
             raise ValueError("The number \"%s\" of bound pairs for the state (X) components is different of the size \"%s\" of the state itself." \
                 %(len(self.__P["Bounds"]),max(__Xb_shape)))
         #
-        if ("QBounds" in self.__P) \
-            and (isinstance(self.__P["QBounds"], list) or isinstance(self.__P["QBounds"], tuple)) \
-            and (len(self.__P["QBounds"]) != max(__Xb_shape)):
+        if ("StateBoundsForQuantiles" in self.__P) \
+            and (isinstance(self.__P["StateBoundsForQuantiles"], list) or isinstance(self.__P["StateBoundsForQuantiles"], tuple)) \
+            and (len(self.__P["StateBoundsForQuantiles"]) != max(__Xb_shape)):
             raise ValueError("The number \"%s\" of bound pairs for the quantile state (X) components is different of the size \"%s\" of the state itself." \
-                %(len(self.__P["QBounds"]),max(__Xb_shape)))
+                %(len(self.__P["StateBoundsForQuantiles"]),max(__Xb_shape)))
         #
         return 1
 
index 737180aeaa8e8e6623f5b8971aabfbd65af5144f..be1b8b9192b81f5b50fa5d2b7b621a62353648b1 100644 (file)
@@ -650,8 +650,12 @@ def QuantilesEstimations(selfA, A, Xa, HXa = None, Hm = None, HtM = None):
     nbsamples = selfA._parameters["NumberOfSamplesForQuantiles"]
     #
     # Traitement des bornes
-    if "QBounds" in selfA._parameters: LBounds = selfA._parameters["QBounds"] # Prioritaire
-    else:                              LBounds = selfA._parameters["Bounds"]  # Défaut raisonnable
+    if "StateBoundsForQuantiles" in selfA._parameters:
+        LBounds = selfA._parameters["StateBoundsForQuantiles"] # Prioritaire
+    elif "Bounds" in selfA._parameters:
+        LBounds = selfA._parameters["Bounds"]  # Défaut raisonnable
+    else:
+        LBounds = None
     if LBounds is not None:
         def NoneRemove(paire):
             bmin, bmax = paire
@@ -668,7 +672,7 @@ def QuantilesEstimations(selfA, A, Xa, HXa = None, Hm = None, HtM = None):
     for i in range(nbsamples):
         if selfA._parameters["SimulationForQuantiles"] == "Linear" and HtM is not None:
             dXr = numpy.matrix(numpy.random.multivariate_normal(numpy.ravel(Xa),A) - numpy.ravel(Xa)).T
-            if LBounds is not None and selfA._parameters["ConstrainedBy"] == "EstimateProjection":
+            if LBounds is not None: # "EstimateProjection" par défaut
                 dXr = numpy.max(numpy.hstack((dXr,LBounds[:,0]) - Xa),axis=1)
                 dXr = numpy.min(numpy.hstack((dXr,LBounds[:,1]) - Xa),axis=1)
             dYr = numpy.matrix(numpy.ravel( HtM * dXr )).T
@@ -676,7 +680,7 @@ def QuantilesEstimations(selfA, A, Xa, HXa = None, Hm = None, HtM = None):
             if selfA._toStore("SampledStateForQuantiles"): Xr = Xa + dXr
         elif selfA._parameters["SimulationForQuantiles"] == "NonLinear" and Hm is not None:
             Xr = numpy.matrix(numpy.random.multivariate_normal(numpy.ravel(Xa),A)).T
-            if LBounds is not None and selfA._parameters["ConstrainedBy"] == "EstimateProjection":
+            if LBounds is not None: # "EstimateProjection" par défaut
                 Xr = numpy.max(numpy.hstack((Xr,LBounds[:,0])),axis=1)
                 Xr = numpy.min(numpy.hstack((Xr,LBounds[:,1])),axis=1)
             Yr = numpy.matrix(numpy.ravel( Hm( Xr ) )).T