]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Minor documentation improvements and fixes for internal variables
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 16 Feb 2021 18:09:52 +0000 (19:09 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 16 Feb 2021 18:09:52 +0000 (19:09 +0100)
18 files changed:
doc/en/bibliography.rst
doc/en/ref_algorithm_Blue.rst
doc/en/ref_algorithm_DifferentialEvolution.rst
doc/en/snippets/InitializationPoint.rst
doc/en/snippets/QualityCriterion.rst
doc/en/snippets/SimulatedObservationAtOptimum.rst
doc/fr/bibliography.rst
doc/fr/ref_algorithm_Blue.rst
doc/fr/ref_algorithm_DifferentialEvolution.rst
doc/fr/snippets/InitializationPoint.rst
doc/fr/snippets/QualityCriterion.rst
doc/fr/snippets/SimulatedObservationAtOptimum.rst
src/daComposant/daAlgorithms/DerivativeFreeOptimization.py
src/daComposant/daAlgorithms/DifferentialEvolution.py
src/daComposant/daAlgorithms/EnsembleKalmanFilter.py
src/daComposant/daAlgorithms/ParticleSwarmOptimization.py
src/daComposant/daAlgorithms/QuantileRegression.py
src/daComposant/daCore/NumericObjects.py

index ca89a7f8e5db1022a43f655004ab8ed032f3f445..0626edcd372a4787a6ff57052bff2bd1fb0c01e2 100644 (file)
@@ -47,7 +47,11 @@ Bibliography
 
 .. [Chakraborty08] Chakraborty U.K., *Advances in differential evolution*, Studies in computational intelligence, Vol.143, Springer, 2008
 
-.. [Evensen94] Evensen G., *Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics*, Journal of Geophysical Research, 99(C5), 10,143–10,162, 1994
+.. [Das11] Das S., Suganthan P. N., *Differential Evolution: A Survey of the State-of-the-art*, IEEE Transactions on Evolutionary Computation, 15(1), pp.4-31, 2011
+
+.. [Das16] Das S., Mullick S. S., Suganthan P. N., *Recent Advances in Differential Evolution - An Updated Survey*, Swarm and Evolutionary Computation, 27, pp.1-30, 2016
+
+.. [Evensen94] Evensen G., *Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics*, Journal of Geophysical Research, 99(C5), pp.10143–10162, 1994
 
 .. [Evensen03] Evensen G., *The Ensemble Kalman Filter: theoretical formulation and practical implementation*, Seminar on Recent developments in data assimilation for atmosphere and ocean, ECMWF, 8 to 12 September 2003
 
index d6671bb94ea03830dd6c7c1240b6577d11ffbd71..67fec5dd0c64ec2012ee360ba8ecfa93df9abb21 100644 (file)
@@ -31,7 +31,8 @@ Calculation algorithm "*Blue*"
 .. include:: snippets/Header2Algo01.rst
 
 This algorithm realizes a BLUE (Best Linear Unbiased Estimator) type estimation
-of the state of a system. More precisely, it is an Aitken estimator.
+of the state of a system. It is a linear, unbiased and optimal estimation.
+Technically, it is an Aitken estimator.
 
 This algorithm is always the fastest of all the assimilation algorithms of ADAO.
 It is theoretically reserved for observation operator cases which are linear,
@@ -43,6 +44,16 @@ In case of non-linearity, even slightly marked, it will be easily preferred the
 :ref:`section_ref_algorithm_ExtendedBlue` or the
 :ref:`section_ref_algorithm_3DVAR`.
 
+.. index:: single: Optimal Interpolation
+
+Additional remark: an algebraic simplification of the BLUE leads to the optimal
+interpolation method, named "*Optimal Interpolation*" or "*OI*". It is a very
+simple and inexpensive method, especially adapted to very (very) large
+problems, but whose disadvantage is to provide a globally sub-optimal and noisy
+analysis result, even inconsistent. The way to avoid these disadvantages is to
+adapt very precisely the elements of the method to each physical model. For
+these reasons, this method is not proposed nor recommended.
+
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
 
index 64c853c51bd59f0819c6dbc992d0a31c3ad3584b..f7c2cc89ec570a31fa53c6fdf481bb7fc94b4e8c 100644 (file)
@@ -181,5 +181,7 @@ StoreSupplementaryCalculations
 .. include:: snippets/Header2Algo07.rst
 
 - [Chakraborty08]_
+- [Das11]_
+- [Das16]_
 - [Price05]_
 - [Storn97]_
index 5a949e729a3ece8a4a6a404c43f98eba158f7d00..3c8f35620aee8e4d74a669c829eefb7507f72c31 100644 (file)
@@ -6,3 +6,6 @@ InitializationPoint
   not required and is equal to the background :math:`\mathbf{x}^b`. If
   provided, it replaces the background only for initialization. Its value must
   allow to build a vector of the same size as the background.
+
+  Example :
+  ``{"InitializationPoint":[1, 2, 3, 4, 5]}``
index c91660e008076c9928f5a1c4d394359d75041d27..1ff2d33313cc5205bdaa52b93e10b662a3e906d7 100644 (file)
@@ -6,9 +6,9 @@ QualityCriterion
   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 the sign "<=>":
-  ["AugmentedWeightedLeastSquares"<=>"AWLS"<=>"DA",
-  "WeightedLeastSquares"<=>"WLS", "LeastSquares"<=>"LS"<=>"L2",
-  "AbsoluteValue"<=>"L1", "MaximumError"<=>"ME"].
+  ["AugmentedWeightedLeastSquares" <=> "AWLS" <=> "DA",
+  "WeightedLeastSquares" <=> "WLS", "LeastSquares" <=> "LS" <=> "L2",
+  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME"].
 
   Example:
   ``{"QualityCriterion":"DA"}``
index a3bc4cc8cb4325474e80ae5b2deb0a1b3094c0cf..9015483b24e0c51ec3b459a6e9aab1b95163aea8 100644 (file)
@@ -2,9 +2,9 @@
 .. index:: single: Forecast
 
 SimulatedObservationAtOptimum
-  *List of vectors*. Each element is a vector of observation simulated by the
+  *List of vectors*. Each element is a vector of observation obtained by the
   observation operator from the analysis or optimal state :math:`\mathbf{x}^a`.
-  It is the forecast from the analysis or the optimal state, and it is
+  It is the observed forecast from the analysis or the optimal state, and it is
   sometimes called "*Forecast*".
 
   Example:
index d2c03ec54ad58bb0e013aa98c8af3d801f9f7c23..76f5dfe3bf9be7568bcae9b6c54bb13bf09f3892 100644 (file)
@@ -47,7 +47,11 @@ Bibliographie
 
 .. [Chakraborty08] Chakraborty U.K., *Advances in differential evolution*, Studies in computational intelligence, Vol.143, Springer, 2008
 
-.. [Evensen94] Evensen G., *Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics*, Journal of Geophysical Research, 99(C5), 10,143–10,162, 1994
+.. [Das11] Das S., Suganthan P. N., *Differential Evolution: A Survey of the State-of-the-art*, IEEE Transactions on Evolutionary Computation, 15(1), pp.4-31, 2011
+
+.. [Das16] Das S., Mullick S. S., Suganthan P. N., *Recent Advances in Differential Evolution - An Updated Survey*, Swarm and Evolutionary Computation, 27, pp.1-30, 2016
+
+.. [Evensen94] Evensen G., *Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics*, Journal of Geophysical Research, 99(C5), pp.10143–10162, 1994
 
 .. [Evensen03] Evensen G., *The Ensemble Kalman Filter: theoretical formulation and practical implementation*, Seminar on Recent developments in data assimilation for atmosphere and ocean, ECMWF, 8 to 12 September 2003
 
index 70b46cd3e792cbed527879a81a5d61439bb95960..d4f2842c5bf2735bc0dd545a720c1e93cad91e2e 100644 (file)
@@ -31,8 +31,8 @@ Algorithme de calcul "*Blue*"
 .. include:: snippets/Header2Algo01.rst
 
 Cet algorithme réalise une estimation de type BLUE (Best Linear Unbiased
-Estimator) de l'état d'un système. De manière précise, c'est un estimateur
-d'Aitken.
+Estimator) de l'état d'un système. C'est une estimation linéaire, sans biais et
+optimale. De manière technique, c'est un estimateur d'Aitken.
 
 Cet algorithme est toujours le plus rapide de l'ensemble des algorithmes
 d'assimilation d'ADAO. Il est théoriquement réservé aux cas d'opérateurs
@@ -44,6 +44,17 @@ En cas de non-linéarité, même peu marquée, on lui préférera aisément
 l':ref:`section_ref_algorithm_ExtendedBlue` ou
 l':ref:`section_ref_algorithm_3DVAR`.
 
+.. index:: single: Optimal Interpolation
+
+Remarque complémentaire : une simplification algébrique du BLUE conduit à la
+méthode d'interpolation optimale, nommée "*Optimal Interpolation*" ou "*OI*".
+C'est une méthode très simple et peu coûteuse, spécialement adaptée aux
+problèmes de très (très) grande taille, mais dont l'inconvénient est de fournir
+un résultat d'analyse globalement sous-optimal et bruité, voire incohérent. Le
+moyen d'éviter ces désavantages est d'adapter très précisément les éléments de
+la méthode à chaque modèle physique. Pour ces raisons, cette méthode n'est donc
+pas proposée.
+
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
 
index a594f037f5e1a5e59337a8836b0b085cacd2b9d2..c2444c6f520ab9c133c644df17d365ef21be20b2 100644 (file)
@@ -183,5 +183,7 @@ StoreSupplementaryCalculations
 .. include:: snippets/Header2Algo07.rst
 
 - [Chakraborty08]_
+- [Das11]_
+- [Das16]_
 - [Price05]_
 - [Storn97]_
index 12236bc9447a680b388df515923256172f1f81df..385df56d93e676a2a6c5556885d0e028e31c326e 100644 (file)
@@ -7,3 +7,6 @@ InitializationPoint
   Dans le cas où il est fourni, il ne remplace l'ébauche que pour
   l'initialisation. Sa valeur doit permettre de construire un vecteur de taille
   identique à l'ébauche.
+
+  Exemple :
+  ``{"InitializationPoint":[1, 2, 3, 4, 5]}``
index 4ca7362548f248fe3d9c8f8b971f110baa8f805f..d10b181cf6806cf3124e1ee8bd7b5d975f4d29c2 100644 (file)
@@ -5,10 +5,10 @@ QualityCriterion
   pour trouver 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 un signe "<=>"
-  : ["AugmentedWeightedLeastSquares"<=>"AWLS"<=>"DA",
-  "WeightedLeastSquares"<=>"WLS", "LeastSquares"<=>"LS"<=>"L2",
-  "AbsoluteValue"<=>"L1",  "MaximumError"<=>"ME"].
+  suivante, dans laquelle les noms équivalents sont indiqués par un signe "<=>" :
+  ["AugmentedWeightedLeastSquares" <=> "AWLS" <=> "DA",
+  "WeightedLeastSquares" <=> "WLS", "LeastSquares" <=> "LS" <=> "L2",
+  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME"].
 
   Exemple :
   ``{"QualityCriterion":"DA"}``
index 4c484da3125adb3f37f2e2f6e1e3bf3f1609b236..d7bc73b2c795404892b16edca76b656d4163c435 100644 (file)
@@ -2,10 +2,10 @@
 .. index:: single: Forecast
 
 SimulatedObservationAtOptimum
-  *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé par
+  *Liste de vecteurs*. Chaque élément est un vecteur d'observation obtenu par
   l'opérateur d'observation à partir de l'analyse ou de l'état optimal
-  :math:`\mathbf{x}^a`. C'est la prévision à partir de l'analyse ou de l'état
-  optimal, et elle est parfois appellée "*Forecast*".
+  :math:`\mathbf{x}^a`. C'est l'observation de la prévision à partir de
+  l'analyse ou de l'état optimal, et elle est parfois appellée "*Forecast*".
 
   Exemple :
   ``hxa = ADD.get("SimulatedObservationAtOptimum")[-1]``
index 0cbba962fcb8e93cbe4d10bd25f657d540285f74..78e2a3068b523be0d209d628dc0ec5e656ce6547 100644 (file)
@@ -33,7 +33,14 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             default  = "BOBYQA",
             typecast = str,
             message  = "Minimiseur utilisé",
-            listval  = ["BOBYQA", "COBYLA", "NEWUOA", "POWELL", "SIMPLEX", "SUBPLEX"],
+            listval  = [
+                "BOBYQA",
+                "COBYLA",
+                "NEWUOA",
+                "POWELL",
+                "SIMPLEX",
+                "SUBPLEX",
+                ],
             )
         self.defineRequiredParameter(
             name     = "MaximumNumberOfSteps",
index 06579a92a1b8e0c31fd8d8b9039228d97dbbc887..8e7710fa4deba837c57f31262520933ded820322 100644 (file)
@@ -36,16 +36,18 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             listval  = [
                 "BEST1BIN",
                 "BEST1EXP",
-                "RAND1EXP",
-                "RANDTOBEST1EXP",
-                # "CURRENTTOBEST1EXP",
+                "BEST2BIN",
                 "BEST2EXP",
+                "RAND1BIN",
+                "RAND1EXP",
+                "RAND2BIN",
                 "RAND2EXP",
                 "RANDTOBEST1BIN",
-                # "CURRENTTOBEST1BIN",
-                "BEST2BIN",
-                "RAND2BIN",
-                "RAND1BIN",
+                "RANDTOBEST1EXP",
+                ],
+            listadv  = [
+                "CURRENTTOBEST1EXP",
+                "CURRENTTOBEST1BIN",
                 ],
             )
         self.defineRequiredParameter(
@@ -90,11 +92,13 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             default  = "AugmentedWeightedLeastSquares",
             typecast = str,
             message  = "Critère de qualité utilisé",
-            listval  = ["AugmentedWeightedLeastSquares","AWLS","DA",
-                        "WeightedLeastSquares","WLS",
-                        "LeastSquares","LS","L2",
-                        "AbsoluteValue","L1",
-                        "MaximumError","ME"],
+            listval  = [
+                "AugmentedWeightedLeastSquares","AWLS","DA",
+                "WeightedLeastSquares","WLS",
+                "LeastSquares","LS","L2",
+                "AbsoluteValue","L1",
+                "MaximumError","ME",
+                ],
             )
         self.defineRequiredParameter(
             name     = "StoreInternalVariables",
index a1d3598ec97c219a6b17a349494fecfe879489e9..b475c7167886c610926873e366a7612c8718d4d6 100644 (file)
@@ -80,8 +80,8 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "MultiplicativeOnBackgroundCovariance",
                 "MultiplicativeOnAnalysisAnomalies",
                 "MultiplicativeOnBackgroundAnomalies",
-                "AdditiveOnBackgroundCovariance",
                 "AdditiveOnAnalysisCovariance",
+                "AdditiveOnBackgroundCovariance",
                 "HybridOnBackgroundCovariance",
                 ],
             )
@@ -98,9 +98,11 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = str,
             message  = "Méthode d'inflation d'ensemble",
             listval  = [
+                "SchurLocalization",
+                ],
+            listadv  = [
                 "CovarianceLocalization",
                 "DomainLocalization",
-                "SchurLocalization",
                 "GaspariCohnLocalization",
                 ],
             )
index 8df107283b81a75507164d56da23f9edfdf9d093..9078e9501a6e71f0e6fb5f2e3e6da607c771f8b1 100644 (file)
@@ -74,11 +74,16 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             default  = "AugmentedWeightedLeastSquares",
             typecast = str,
             message  = "Critère de qualité utilisé",
-            listval  = ["AugmentedWeightedLeastSquares","AWLS","AugmentedPonderatedLeastSquares","APLS","DA",
-                        "WeightedLeastSquares","WLS","PonderatedLeastSquares","PLS",
-                        "LeastSquares","LS","L2",
-                        "AbsoluteValue","L1",
-                        "MaximumError","ME"],
+            listval  = [
+                "AugmentedWeightedLeastSquares","AWLS","DA",
+                "WeightedLeastSquares","WLS",
+                "LeastSquares","LS","L2",
+                "AbsoluteValue","L1",
+                "MaximumError","ME"],
+            listadv  = [
+                "AugmentedPonderatedLeastSquares","APLS",
+                "PonderatedLeastSquares","PLS",
+                ]
             )
         self.defineRequiredParameter(
             name     = "StoreInternalVariables",
index 0037e9bf49fb6b0f4e866081999cfc0b2964f2a5..1a23f029470e057d60a603afe1a943fdd7b1cb02 100644 (file)
@@ -41,7 +41,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             default  = "MMQR",
             typecast = str,
             message  = "Minimiseur utilisé",
-            listval  = ["MMQR"],
+            listval  = ["MMQR",],
             )
         self.defineRequiredParameter(
             name     = "MaximumNumberOfSteps",
index 762e047e64e70031bfea3e6b71b16902256d28f8..7571a15d8ea4c745fbdeb93caa10186df6bf4834 100644 (file)
@@ -610,7 +610,7 @@ def CovarianceInflation(
         OutputCovOrEns = InputCovOrEnsMean[:,numpy.newaxis] \
             + InflationFactor * (InputCovOrEns - InputCovOrEnsMean[:,numpy.newaxis])
     #
-    elif InflationType in ["AdditiveOnBackgroundCovariance", "AdditiveOnAnalysisCovariance"]:
+    elif InflationType in ["AdditiveOnAnalysisCovariance", "AdditiveOnBackgroundCovariance"]:
         if InflationFactor < 0.:
             raise ValueError("Inflation factor for additive inflation has to be greater or equal than 0.")
         if InflationFactor < mpr: