.. [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
.. 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,
: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
.. include:: snippets/Header2Algo07.rst
- [Chakraborty08]_
+- [Das11]_
+- [Das16]_
- [Price05]_
- [Storn97]_
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]}``
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:: 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:
.. [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
.. 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
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
.. include:: snippets/Header2Algo07.rst
- [Chakraborty08]_
+- [Das11]_
+- [Das16]_
- [Price05]_
- [Storn97]_
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]}``
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:: 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]``
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",
listval = [
"BEST1BIN",
"BEST1EXP",
- "RAND1EXP",
- "RANDTOBEST1EXP",
- # "CURRENTTOBEST1EXP",
+ "BEST2BIN",
"BEST2EXP",
+ "RAND1BIN",
+ "RAND1EXP",
+ "RAND2BIN",
"RAND2EXP",
"RANDTOBEST1BIN",
- # "CURRENTTOBEST1BIN",
- "BEST2BIN",
- "RAND2BIN",
- "RAND1BIN",
+ "RANDTOBEST1EXP",
+ ],
+ listadv = [
+ "CURRENTTOBEST1EXP",
+ "CURRENTTOBEST1BIN",
],
)
self.defineRequiredParameter(
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",
"MultiplicativeOnBackgroundCovariance",
"MultiplicativeOnAnalysisAnomalies",
"MultiplicativeOnBackgroundAnomalies",
- "AdditiveOnBackgroundCovariance",
"AdditiveOnAnalysisCovariance",
+ "AdditiveOnBackgroundCovariance",
"HybridOnBackgroundCovariance",
],
)
typecast = str,
message = "Méthode d'inflation d'ensemble",
listval = [
+ "SchurLocalization",
+ ],
+ listadv = [
"CovarianceLocalization",
"DomainLocalization",
- "SchurLocalization",
"GaspariCohnLocalization",
],
)
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",
default = "MMQR",
typecast = str,
message = "Minimiseur utilisé",
- listval = ["MMQR"],
+ listval = ["MMQR",],
)
self.defineRequiredParameter(
name = "MaximumNumberOfSteps",
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: