14.8. Algorithme de vérification « ObservationSimulationComparisonTest »

14.8.1. Description

Cet algorithme de vérification permet d’analyser de manière simple la stabilité de l’écart entre des mesures et le calcul d’un opérateur F, lors de son exécution. L’opérateur est quelconque, et il peut donc être celui d’observation \mathcal{H} comme celui d’évolution \mathcal{D}, pourvu qu’il soit fourni dans chaque cas selon les Conditions requises pour les fonctions décrivant un opérateur. L’opérateur F est considéré comme dépendant d’une variable vectorielle \mathbf{x} et restituant une autre variable vectorielle \mathbf{y}.

L’algorithme vérifie que l’écart est stable, que l’opérateur fonctionne correctement et que son appel se déroule de manière compatible avec son usage dans les algorithmes d’ADAO. De manière pratique, il permet d’appeler une ou plusieurs fois l’opérateur, en activant ou non le mode « debug » lors de l’exécution. Il est très similaire dans son fonctionnement courant à un Algorithme de vérification « FunctionTest » mais il teste la stabilité de l’écart mesures-calculs.

Une statistique sur les vecteurs \mathbf{x} en entrée et \mathbf{y} en sortie, et potentiellement sur la fonctionnelle d’erreur standard d’assimilation de données J, est indiquée lors de chaque exécution de l’opérateur, et une autre statistique globale est fournie de manière récapitulative à la fin. La précision d’affichage est contrôlable pour permettre l’automatisation des tests d’opérateur. Il peut être aussi utile de vérifier préalablement les entrées elles-mêmes avec le test prévu Algorithme de vérification « InputValuesTest ».

14.8.2. Commandes requises et optionnelles

Les commandes générales requises, disponibles en édition dans l’interface graphique ou textuelle, sont les suivantes :

CheckingPoint

Vecteur. La variable désigne le vecteur utilisé comme l’état autour duquel réaliser le test requis, noté \mathbf{x}, similaire à l’ébauche \mathbf{x}^b. Sa valeur est définie comme un objet de type « Vector » ou « VectorSerie ». Sa disponibilité en sortie est conditionnée par le booléen « Stored » associé en entrée.

BackgroundError

Matrice. La variable désigne la matrice de covariance des erreurs d’ébauche, usuellement notée \mathbf{B}. Sa valeur est définie comme un objet de type « Matrix », de type « ScalarSparseMatrix », ou de type « DiagonalSparseMatrix », comme décrit en détail dans la section Conditions requises pour décrire des matrices de covariance. Sa disponibilité en sortie est conditionnée par le booléen « Stored » associé en entrée.

Observation

Liste de vecteurs. La variable désigne le vecteur d’observation utilisé en assimilation de données ou en optimisation, et usuellement noté \mathbf{y}^o. Sa valeur est définie comme un objet de type « Vector » si c’est une unique observation (temporelle ou pas) ou « VectorSerie » si c’est une succession d’observations. Sa disponibilité en sortie est conditionnée par le booléen « Stored » associé en entrée.

ObservationError

Matrice. La variable désigne la matrice de covariance des erreurs a priori d’ébauche, usuellement notée \mathbf{R}. Cette matrice est définie comme un objet de type « Matrix », de type « ScalarSparseMatrix », ou de type « DiagonalSparseMatrix », comme décrit en détail dans la section Conditions requises pour décrire des matrices de covariance. Sa disponibilité en sortie est conditionnée par le booléen « Stored » associé en entrée.

ObservationOperator

Opérateur. La variable désigne l’opérateur d’observation, usuellement noté H, qui transforme les paramètres d’entrée \mathbf{x} en résultats \mathbf{y} qui sont à comparer aux observations \mathbf{y}^o. Sa valeur est définie comme un objet de type « Function » ou de type « Matrix ». Dans le cas du type « Function », différentes formes fonctionnelles peuvent être utilisées, comme décrit dans la section Conditions requises pour les fonctions décrivant un opérateur. Si un contrôle U est inclus dans le modèle d’observation, l’opérateur doit être appliqué à une paire (X,U).

Les commandes optionnelles générales, disponibles en édition dans l’interface graphique ou textuelle, sont indiquées dans la Liste des commandes et mots-clés pour un cas de vérification. 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 Description des options d’un algorithme par « AlgorithmParameters » pour le bon usage de cette commande.

Les options sont les suivantes :

NumberOfPrintedDigits

Valeur entière. Cette clé indique le nombre de décimales de précision pour les affichages de valeurs réelles. La valeur par défaut est 5, avec un minimum de 0.

Exemple : {"NumberOfPrintedDigits":5}

NumberOfRepetition

Valeur entière. Cette clé indique le nombre de fois où répéter l’évaluation de la fonction. La valeur par défaut est 1.

Exemple : {"NumberOfRepetition":3}

SetDebug

Valeur booléenne. La variable conduit à l’activation, ou pas, du mode de débogage durant l’évaluation de la fonction ou de l’opérateur. La valeur par défaut est « True », les choix sont « True » ou « False ».

Exemple : {"SetDebug":False}

ShowElementarySummary

Valeur booléenne. La variable conduit à l’activation, ou pas, du calcul et de l’affichage d’un résumé à chaque évaluation élémentaire du test. La valeur par défaut est « True », les choix sont « True » ou « False ».

Exemple : {"ShowElementarySummary":False}

StoreSupplementaryCalculations

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. Leur disponibilité implique, potentiellement, des calculs ou du stockage coûteux. La valeur par défaut est donc une liste vide, aucune de ces variables n’étant calculée et stockée par défaut (sauf les variables inconditionnelles). Les noms possibles pour les variables supplémentaires sont dans la liste suivante (la description détaillée de chaque variable nommée est donnée dans la suite de cette documentation par algorithme spécifique, dans la sous-partie « Informations et variables disponibles à la fin de l’algorithme ») : [ « CostFunctionJ », « CostFunctionJb », « CostFunctionJo », « CurrentState », « Innovation », « InnovationAtCurrentState », « OMB », « SimulatedObservationAtCurrentState », ].

Exemple : {"StoreSupplementaryCalculations":["CurrentState", "Residu"]}

14.8.3. Informations et variables disponibles à la fin de l’algorithme

En sortie, après exécution de l’algorithme, on dispose d’informations et de variables issues du calcul. La description des Variables et informations disponibles en sortie indique la manière de les obtenir par la méthode nommée get, de la variable « ADD » du post-processing en interface graphique, ou du cas en interface textuelle. 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”Inventaire des informations potentiellement disponibles en sortie.

Sorties permanentes (non conditionnelles)

Les sorties non conditionnelles de l’algorithme sont les suivantes :

Aucune

Ensemble des sorties à la demande (conditionnelles ou non)

L’ensemble des sorties (conditionnelles ou non) de l’algorithme, classées par ordre alphabétique, est le suivant :

CostFunctionJ

Liste de valeurs. Chaque élément est une valeur de fonctionnelle d’écart J choisie.

Exemple : J = ADD.get("CostFunctionJ")[:]

CostFunctionJb

Liste de valeurs. Chaque élément est une valeur de fonctionnelle d’écart J^b, c’est-à-dire de la partie écart à l’ébauche. Si cette partie n’existe pas dans la fonctionnelle, sa valeur est nulle.

Exemple : Jb = ADD.get("CostFunctionJb")[:]

CostFunctionJo

Liste de valeurs. Chaque élément est une valeur de fonctionnelle d’écart J^o, c’est-à-dire de la partie écart à l’observation.

Exemple : Jo = ADD.get("CostFunctionJo")[:]

CurrentState

Liste de vecteurs. Chaque élément est un vecteur d’état courant utilisé au cours du déroulement itératif de l’algorithme utilisé.

Exemple : xs = ADD.get("CurrentState")[:]

Innovation

Liste de vecteurs. Chaque élément est un vecteur d’innovation, qui est en statique l’écart de l’optimum à l’ébauche, et en dynamique l’incrément d’évolution.

Exemple : d = ADD.get("Innovation")[-1]

InnovationAtCurrentState

Liste de vecteurs. Chaque élément est un vecteur d’innovation à l’état courant avant analyse.

Exemple : ds = ADD.get("InnovationAtCurrentState")[-1]

OMB

Liste de vecteurs. Chaque élément est un vecteur d’écart entre l’observation et l’état d’ébauche dans l’espace des observations.

Exemple : omb = ADD.get("OMB")[-1]

SimulatedObservationAtCurrentState

Liste de vecteurs. Chaque élément est un vecteur d’observation simulé par l’opérateur d’observation à partir de l’état courant, c’est-à-dire dans l’espace des observations.

Exemple : hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]

14.8.4. Exemples d’utilisation en Python (TUI)

Voici un ou des exemples très simple d’usage de l’algorithme proposé et de ses paramètres, écrit en [DocR] Interface textuelle pour l’utilisateur (TUI/API). De plus, lorsque c’est possible, les informations indiquées en entrée permettent aussi de définir un cas équivalent en interface graphique [DocR] Interface graphique pour l’utilisateur (GUI/EFICAS).

Cet exemple permet d’analyser le lancement (répété) d’un opérateur de simulation \mathbf{F} explicitement donné sous forme matricielle (décrit pour le test par la commande d’observation « ObservationOperator »), appliqué à un état particulier \mathbf{x} sur lequel le tester (décrit pour le test par la commande « CheckingPoint »), comparé à des mesures \mathbf{y} (décrit pour le test par la commande « Observation ») par la différence OMB = y - F(x) (Observation minus evaluation at Background) et la fonction de coût standard d’assimilation des données J.

Le test est répété un nombre paramétrable de fois, et une statistique finale permet de vérifier rapidement le bon comportement de l’opérateur. Le diagnostic le plus simple consiste à vérifier, à la toute fin de l’affichage, l’ordre de grandeur des variations des valeurs indiquées comme la moyenne des différences entre les sorties répétées et leur moyenne, sous la partie titrée ici « Launching statistical summary calculation for 5 states ». Pour un opérateur satisfaisant, les valeurs de différences à la moyenne et les écarts-types doivent être proches du zéro numérique.

# -*- coding: utf-8 -*-
#
from numpy import array, eye, ones
from adao import adaoBuilder
case = adaoBuilder.New()
case.set("CheckingPoint",       Vector = array([0., 1., 2.]) )
case.set("Observation",         Vector = ones(3) )
case.set("ObservationOperator", Matrix = 1/3 * eye(3) )
case.setAlgorithmParameters(
    Algorithm='ObservationSimulationComparisonTest',
    Parameters={
        'NumberOfRepetition' : 5,
        'NumberOfPrintedDigits' : 2,
        'ShowElementarySummary':False,
        'StoreSupplementaryCalculations': [
            'CostFunctionJ',
            ],
        },
    )
case.execute()

Le résultat de son exécution est le suivant :


     OBSERVATIONSIMULATIONCOMPARISONTEST
     ===================================

     This test allows to analyze the (repetition of the) launch of some
     given simulation operator F, applied to one single vector argument x,
     and its comparison to observations or measures y through the innovation
     difference OMB = y - F(x) (Observation minus evaluation at Background)
     and (if required) the data assimilation standard cost function J.
     The output shows simple statistics related to its successful execution,
     or related to the similarities of repetition of its execution.

===> Information before launching:
     -----------------------------

     Characteristics of input vector X, internally converted:
       Type...............: <class 'numpy.ndarray'>
       Length of vector...: 3
       Minimum value......: 0.00e+00
       Maximum value......: 2.00e+00
       Mean of vector.....: 1.00e+00
       Standard error.....: 8.16e-01
       L2 norm of vector..: 2.24e+00

     Characteristics of input vector of observations Yobs, internally converted:
       Type...............: <class 'numpy.ndarray'>
       Length of vector...: 3
       Minimum value......: 1.00e+00
       Maximum value......: 1.00e+00
       Mean of vector.....: 1.00e+00
       Standard error.....: 0.00e+00
       L2 norm of vector..: 1.73e+00

     ---------------------------------------------------------------------------

===> Beginning of repeated evaluation, without activating debug

     ---------------------------------------------------------------------------

===> End of repeated evaluation, without deactivating debug

     ---------------------------------------------------------------------------

===> Launching statistical summary calculation for 5 states

     ---------------------------------------------------------------------------

===> Statistical analysis of the outputs obtained through sequential repeated evaluations

     (Remark: numbers that are (about) under 2e-16 represent 0 to machine precision)

     Number of evaluations...........................: 5

     Characteristics of the whole set of outputs Y:
       Size of each of the outputs...................: 3
       Minimum value of the whole set of outputs.....: 0.00e+00
       Maximum value of the whole set of outputs.....: 6.67e-01
       Mean of vector of the whole set of outputs....: 3.33e-01
       Standard error of the whole set of outputs....: 2.72e-01

     Characteristics of the vector Ym, mean of the outputs Y:
       Size of the mean of the outputs...............: 3
       Minimum value of the mean of the outputs......: 0.00e+00
       Maximum value of the mean of the outputs......: 6.67e-01
       Mean of the mean of the outputs...............: 3.33e-01
       Standard error of the mean of the outputs.....: 2.72e-01

     Characteristics of the mean of the differences between the outputs Y and their mean Ym:
       Size of the mean of the differences...........: 3
       Minimum value of the mean of the differences..: 0.00e+00
       Maximum value of the mean of the differences..: 0.00e+00
       Mean of the mean of the differences...........: 0.00e+00
       Standard error of the mean of the differences.: 0.00e+00

     ---------------------------------------------------------------------------

===> Statistical analysis of the OMB differences obtained through sequential repeated evaluations

     (Remark: numbers that are (about) under 2e-16 represent 0 to machine precision)

     Number of evaluations...........................: 5

     Characteristics of the whole set of OMB differences:
       Size of each of the outputs...................: 3
       Minimum value of the whole set of differences.: 3.33e-01
       Maximum value of the whole set of differences.: 1.00e+00
       Mean of vector of the whole set of differences: 6.67e-01
       Standard error of the whole set of differences: 2.72e-01

     Characteristics of the vector Dm, mean of the OMB differences:
       Size of the mean of the differences...........: 3
       Minimum value of the mean of the differences..: 3.33e-01
       Maximum value of the mean of the differences..: 1.00e+00
       Mean of the mean of the differences...........: 6.67e-01
       Standard error of the mean of the differences.: 2.72e-01

     Characteristics of the mean of the differences between the OMB differences and their mean Dm:
       Size of the mean of the differences...........: 3
       Minimum value of the mean of the differences..: 0.00e+00
       Maximum value of the mean of the differences..: 0.00e+00
       Mean of the mean of the differences...........: 0.00e+00
       Standard error of the mean of the differences.: 0.00e+00

     ---------------------------------------------------------------------------

===> Statistical analysis of the cost function J values obtained through sequential repeated evaluations

     Number of evaluations...........................: 5

     Characteristics of the whole set of data assimilation cost function J values:
       Minimum value of the whole set of J...........: 7.78e-01
       Maximum value of the whole set of J...........: 7.78e-01
       Mean of vector of the whole set of J..........: 7.78e-01
       Standard error of the whole set of J..........: 0.00e+00
       (Remark: variations of the cost function J only come from the observation part Jo of J)

     ---------------------------------------------------------------------------

     End of the "OBSERVATIONSIMULATIONCOMPARISONTEST" verification

     ---------------------------------------------------------------------------

14.8.5. Voir aussi

Références vers d’autres sections :