..
- Copyright (C) 2008-2019 EDF R&D
+ Copyright (C) 2008-2021 EDF R&D
This file is part of SALOME ADAO module.
Algorithme de calcul "*UnscentedKalmanFilter*"
----------------------------------------------
-Description
-+++++++++++
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo01.rst
Cet algorithme réalise une estimation de l'état d'un système dynamique par un
filtre de Kalman "unscented", permettant d'éviter de devoir calculer les
Il s'applique aux cas d'opérateurs d'observation et d'évolution incrémentale
(processus) non-linéaires et présente d'excellentes qualités de robustesse et
-de performances. Il peut être comparé à
+de performances. Il peut être rapproché de
l':ref:`section_ref_algorithm_EnsembleKalmanFilter`, dont les qualités sont
similaires pour les systèmes non-linéaires.
+On remarque qu'il n'y a pas d'analyse effectuée au pas de temps initial
+(numéroté 0 dans l'indexage temporel) car il n'y a pas de prévision à cet
+instant (l'ébauche est stockée comme pseudo-analyse au pas initial). Si les
+observations sont fournies en série par l'utilisateur, la première n'est donc
+pas utilisée.
+
Dans le cas d'opérateurs linéaires ou "faiblement" non-linéaire, on peut
aisément utiliser l':ref:`section_ref_algorithm_ExtendedKalmanFilter` ou même
l':ref:`section_ref_algorithm_KalmanFilter`, qui sont souvent largement moins
coûteux en évaluation sur de petits systèmes. On peut vérifier la linéarité des
opérateurs à l'aide de l':ref:`section_ref_algorithm_LinearityTest`.
-Commandes requises et optionnelles
-++++++++++++++++++++++++++++++++++
+.. index::
+ pair: Variant ; UKF
+ pair: Variant ; CUKF
+
+On fait une différence entre le filtre de Kalman "unscented" tenant compte de
+bornes sur les états (la variante nommée "CUKF", qui est recommandée et qui est
+utilisée par défaut), et le filtre de Kalman "unscented" conduit sans
+aucune contrainte (la variante nommée "UKF", qui n'est pas recommandée).
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo02.rst
+
+.. include:: snippets/Background.rst
+
+.. include:: snippets/BackgroundError.rst
+
+.. include:: snippets/EvolutionError.rst
+
+.. include:: snippets/EvolutionModel.rst
+
+.. include:: snippets/Observation.rst
+
+.. include:: snippets/ObservationError.rst
+
+.. include:: snippets/ObservationOperator.rst
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo03AdOp.rst
-Les commandes requises générales, disponibles dans l'interface en édition, sont
-les suivantes:
+.. include:: snippets/BoundsWithNone.rst
- .. include:: snippets/Background.rst
+.. include:: snippets/ConstrainedBy.rst
- .. include:: snippets/BackgroundError.rst
+.. include:: snippets/EstimationOf.rst
- .. include:: snippets/EvolutionError.rst
+.. include:: snippets/AlphaBeta.rst
- .. include:: snippets/EvolutionModel.rst
+StoreSupplementaryCalculations
+ .. index:: single: StoreSupplementaryCalculations
- .. include:: snippets/Observation.rst
+ *Liste de noms*. Cette liste indique les noms des variables supplémentaires
+ qui peuvent être disponibles au cours du déroulement ou à la fin de
+ l'algorithme, si elles sont initialement demandées par l'utilisateur. Cela
+ implique potentiellement des calculs ou du stockage coûteux. La valeur par
+ défaut est une liste vide, aucune de ces variables n'étant calculée et
+ stockée par défaut sauf les variables inconditionnelles. Les noms possibles
+ sont dans la liste suivante : [
+ "Analysis",
+ "APosterioriCorrelations",
+ "APosterioriCovariance",
+ "APosterioriStandardDeviations",
+ "APosterioriVariances",
+ "BMA",
+ "CostFunctionJ",
+ "CostFunctionJAtCurrentOptimum",
+ "CostFunctionJb",
+ "CostFunctionJbAtCurrentOptimum",
+ "CostFunctionJo",
+ "CostFunctionJoAtCurrentOptimum",
+ "CurrentIterationNumber",
+ "CurrentOptimum",
+ "CurrentState",
+ "ForecastCovariance",
+ "ForecastState",
+ "IndexOfOptimum",
+ "InnovationAtCurrentAnalysis",
+ "InnovationAtCurrentState",
+ "SimulatedObservationAtCurrentAnalysis",
+ "SimulatedObservationAtCurrentOptimum",
+ "SimulatedObservationAtCurrentState",
+ ].
- .. include:: snippets/ObservationError.rst
+ Exemple :
+ ``{"StoreSupplementaryCalculations":["BMA", "CurrentState"]}``
- .. include:: snippets/ObservationOperator.rst
+.. include:: snippets/Variant_UKF.rst
-Les commandes optionnelles générales, disponibles dans l'interface en édition,
-sont indiquées dans la :ref:`section_ref_assimilation_keywords`. De plus, les
-paramètres de la commande "*AlgorithmParameters*" permettent d'indiquer les
-options particulières, décrites ci-après, de l'algorithme. On se reportera à la
-:ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette
-commande.
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo04.rst
-Les options de l'algorithme sont les suivantes:
+.. include:: snippets/Analysis.rst
- .. include:: snippets/BoundsWithExtremes.rst
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo05.rst
- .. include:: snippets/ConstrainedBy.rst
+.. include:: snippets/Analysis.rst
- .. include:: snippets/EstimationOf.rst
+.. include:: snippets/APosterioriCorrelations.rst
- Alpha, Beta, Kappa, Reconditioner
- .. index:: single: Alpha
- .. index:: single: Beta
- .. index:: single: Kappa
- .. index:: single: Reconditioner
+.. include:: snippets/APosterioriCovariance.rst
- Ces clés sont des paramètres de mise à l'échelle interne. "Alpha" requiert
- une valeur comprise entre 1.e-4 et 1. "Beta" a une valeur optimale de 2 pour
- une distribution *a priori* gaussienne. "Kappa" requiert une valeur entière,
- dont la bonne valeur par défaut est obtenue en la mettant à 0.
- "Reconditioner" requiert une valeur comprise entre 1.e-3 et 10, son défaut
- étant 1.
+.. include:: snippets/APosterioriStandardDeviations.rst
- Exemple :
- ``{"Alpha":1,"Beta":2,"Kappa":0,"Reconditioner":1}``
+.. include:: snippets/APosterioriVariances.rst
- StoreSupplementaryCalculations
+.. include:: snippets/BMA.rst
+.. include:: snippets/CostFunctionJ.rst
- Cette liste indique les noms des variables supplémentaires qui peuvent être
- disponibles à la fin de l'algorithme. Cela implique potentiellement des
- calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
- aucune de ces variables n'étant calculée et stockée par défaut. Les noms
- possibles sont dans la liste suivante : ["APosterioriCorrelations",
- "APosterioriCovariance", "APosterioriStandardDeviations",
- "APosterioriVariances", "BMA", "CostFunctionJ", "CostFunctionJb",
- "CostFunctionJo", "CurrentState", "Innovation"].
+.. include:: snippets/CostFunctionJAtCurrentOptimum.rst
- Exemple :
- ``{"StoreSupplementaryCalculations":["BMA", "Innovation"]}``
+.. include:: snippets/CostFunctionJb.rst
-Informations et variables disponibles à la fin de l'algorithme
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+.. include:: snippets/CostFunctionJbAtCurrentOptimum.rst
-En sortie, après exécution de l'algorithme, on dispose d'informations et de
-variables issues du calcul. La description des
-:ref:`section_ref_output_variables` indique la manière de les obtenir par la
-méthode nommée ``get`` de la variable "*ADD*" du post-processing. Les variables
-d'entrée, mises à disposition de l'utilisateur en sortie pour faciliter
-l'écriture des procédures de post-processing, sont décrites dans
-l':ref:`subsection_r_o_v_Inventaire`.
+.. include:: snippets/CostFunctionJo.rst
-Les sorties non conditionnelles de l'algorithme sont les suivantes:
+.. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
- .. include:: snippets/Analysis.rst
+.. include:: snippets/CurrentIterationNumber.rst
-Les sorties conditionnelles de l'algorithme sont les suivantes:
+.. include:: snippets/CurrentOptimum.rst
- .. include:: snippets/APosterioriCorrelations.rst
+.. include:: snippets/CurrentState.rst
- .. include:: snippets/APosterioriCovariance.rst
+.. include:: snippets/ForecastCovariance.rst
- .. include:: snippets/APosterioriStandardDeviations.rst
+.. include:: snippets/ForecastState.rst
- .. include:: snippets/APosterioriVariances.rst
+.. include:: snippets/IndexOfOptimum.rst
- .. include:: snippets/BMA.rst
+.. include:: snippets/InnovationAtCurrentAnalysis.rst
- .. include:: snippets/CostFunctionJ.rst
+.. include:: snippets/InnovationAtCurrentState.rst
- .. include:: snippets/CostFunctionJb.rst
+.. include:: snippets/SimulatedObservationAtCurrentAnalysis.rst
- .. include:: snippets/CostFunctionJo.rst
+.. include:: snippets/SimulatedObservationAtCurrentOptimum.rst
- .. include:: snippets/CurrentState.rst
+.. include:: snippets/SimulatedObservationAtCurrentState.rst
- .. include:: snippets/Innovation.rst
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo06.rst
-Voir aussi
-++++++++++
+- :ref:`section_ref_algorithm_KalmanFilter`
+- :ref:`section_ref_algorithm_ExtendedKalmanFilter`
+- :ref:`section_ref_algorithm_EnsembleKalmanFilter`
-Références vers d'autres sections :
- - :ref:`section_ref_algorithm_KalmanFilter`
- - :ref:`section_ref_algorithm_ExtendedKalmanFilter`
- - :ref:`section_ref_algorithm_EnsembleKalmanFilter`
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo07.rst
-Références bibliographiques :
- - [WikipediaUKF]_
+- [WikipediaUKF]_