Salome HOME
Updating copyright date information (1)
[modules/adao.git] / doc / fr / ref_algorithm_AdjointTest.rst
1 ..
2    Copyright (C) 2008-2018 EDF R&D
3
4    This file is part of SALOME ADAO module.
5
6    This library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10
11    This library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15
16    You should have received a copy of the GNU Lesser General Public
17    License along with this library; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19
20    See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
22    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
23
24 .. index:: single: AdjointTest
25 .. _section_ref_algorithm_AdjointTest:
26
27 Algorithme de vérification "*AdjointTest*"
28 ------------------------------------------
29
30 Description
31 +++++++++++
32
33 Cet algorithme permet de vérifier la qualité de l'opérateur adjoint, en
34 calculant un résidu dont les propriétés théoriques sont connues.
35
36 On observe le résidu suivant, qui est la différence de deux produits scalaires :
37
38 .. math:: R(\alpha) = | < TangentF_x(\mathbf{dx}) , \mathbf{y} > - < \mathbf{dx} , AdjointF_x(\mathbf{y}) > |
39
40 qui doit rester constamment égal à zéro à la précision du calcul. On prend
41 :math:`\mathbf{dx}_0=Normal(0,\mathbf{x})` et
42 :math:`\mathbf{dx}=\alpha*\mathbf{dx}_0`. :math:`F` est le code de calcul.
43 :math:`\mathbf{y}` doit être dans l'image de :math:`F`. S'il n'est pas donné, on
44 prend :math:`\mathbf{y} = F(\mathbf{x})`.
45
46 Commandes requises et optionnelles
47 ++++++++++++++++++++++++++++++++++
48
49 .. index:: single: AlgorithmParameters
50 .. index:: single: CheckingPoint
51 .. index:: single: ObservationOperator
52 .. index:: single: AmplitudeOfInitialDirection
53 .. index:: single: EpsilonMinimumExponent
54 .. index:: single: InitialDirection
55 .. index:: single: SetSeed
56 .. index:: single: StoreSupplementaryCalculations
57
58 Les commandes requises générales, disponibles dans l'interface en édition, sont
59 les suivantes:
60
61   CheckingPoint
62     *Commande obligatoire*. Elle définit le vecteur utilisé comme l'état autour
63     duquel réaliser le test requis, noté :math:`\mathbf{x}` et similaire à
64     l'ébauche :math:`\mathbf{x}^b`. Sa valeur est définie comme un objet de type
65     "*Vector*".
66
67   ObservationOperator
68     *Commande obligatoire*. Elle indique l'opérateur d'observation, notée
69     précédemment :math:`H`, qui transforme les paramètres d'entrée
70     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
71     observations :math:`\mathbf{y}^o`.  Sa valeur est définie comme un objet de
72     type "*Function*". Différentes formes fonctionnelles peuvent être
73     utilisées, comme décrit dans la section
74     :ref:`section_ref_operator_requirements`. Si un contrôle :math:`U` est
75     inclus dans le modèle d'observation, l'opérateur doit être appliqué à une
76     paire :math:`(X,U)`.
77
78 Les commandes optionnelles générales, disponibles dans l'interface en édition,
79 sont indiquées dans la :ref:`section_ref_checking_keywords`. De plus, les
80 paramètres de la commande "*AlgorithmParameters*" permettent d'indiquer les
81 options particulières, décrites ci-après, de l'algorithme. On se reportera à la
82 :ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette
83 commande.
84
85 Les options de l'algorithme sont les suivantes:
86
87   AmplitudeOfInitialDirection
88     Cette clé indique la mise à l'échelle de la perturbation initiale construite
89     comme un vecteur utilisé pour la dérivée directionnelle autour du point
90     nominal de vérification. La valeur par défaut est de 1, ce qui signifie pas
91     de mise à l'échelle.
92
93     Exemple : ``{"AmplitudeOfInitialDirection":0.5}``
94
95   EpsilonMinimumExponent
96     Cette clé indique la valeur de l'exposant minimal du coefficient en
97     puissance de 10 qui doit être utilisé pour faire décroître le multiplicateur
98     de l'incrément. La valeur par défaut est de -8, et elle doit être entre 0 et
99     -20. Par exemple, la valeur par défaut conduit à calculer le résidu de la
100     formule avec un incrément fixe multiplié par 1.e0 jusqu'à 1.e-8.
101
102     Exemple : ``{"EpsilonMinimumExponent":-12}``
103
104   InitialDirection
105     Cette clé indique la direction vectorielle utilisée pour la dérivée
106     directionnelle autour du point nominal de vérification. Cela doit être un
107     vecteur. Si elle n'est pas spécifiée, la direction par défaut est une
108     perturbation par défaut autour de zéro de la même taille vectorielle que le
109     point de vérification.
110
111     Exemple : ``{"InitialDirection":[0.1,0.1,100.,3}``
112
113   SetSeed
114     Cette clé permet de donner un nombre entier pour fixer la graine du
115     générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est
116     par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle
117     utilise ainsi l'initialisation par défaut de l'ordinateur.
118
119     Exemple : ``{"SetSeed":1000}``
120
121   StoreSupplementaryCalculations
122     Cette liste indique les noms des variables supplémentaires qui peuvent être
123     disponibles à la fin de l'algorithme. Cela implique potentiellement des
124     calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
125     aucune de ces variables n'étant calculée et stockée par défaut. Les noms
126     possibles sont dans la liste suivante : ["CurrentState", "Residu",
127     "SimulatedObservationAtCurrentState"].
128
129     Exemple : ``{"StoreSupplementaryCalculations":["CurrentState"]}``
130
131 Informations et variables disponibles à la fin de l'algorithme
132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
133
134 En sortie, après exécution de l'algorithme, on dispose d'informations et de
135 variables issues du calcul. La description des
136 :ref:`section_ref_output_variables` indique la manière de les obtenir par la
137 méthode nommée ``get`` de la variable "*ADD*" du post-processing. Les variables
138 d'entrée, mises à disposition de l'utilisateur en sortie pour faciliter
139 l'écriture des procédures de post-processing, sont décrites dans
140 l':ref:`subsection_r_o_v_Inventaire`.
141
142 Les sorties non conditionnelles de l'algorithme sont les suivantes:
143
144   Residu
145     *Liste de valeurs*. Chaque élément est la valeur du résidu particulier
146     vérifié lors d'un algorithme de vérification, selon l'ordre des tests
147     effectués.
148
149     Exemple : ``r = ADD.get("Residu")[:]``
150
151 Les sorties conditionnelles de l'algorithme sont les suivantes:
152
153   CurrentState
154     *Liste de vecteurs*. Chaque élément est un vecteur d'état courant utilisé
155     au cours du déroulement de l'algorithme d'optimisation.
156
157     Exemple : ``Xs = ADD.get("CurrentState")[:]``
158
159   SimulatedObservationAtCurrentState
160     *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à
161     partir de l'état courant, c'est-à-dire dans l'espace des observations.
162
163     Exemple : ``hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]``
164
165 Voir aussi
166 ++++++++++
167
168 Références vers d'autres sections :
169   - :ref:`section_ref_algorithm_FunctionTest`
170   - :ref:`section_ref_algorithm_LinearityTest`
171   - :ref:`section_ref_algorithm_TangentTest`
172   - :ref:`section_ref_algorithm_GradientTest`