Salome HOME
Updating copyright date information
[modules/adao.git] / doc / fr / ref_algorithm_LinearityTest.rst
1 ..
2    Copyright (C) 2008-2016 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: LinearityTest
25 .. _section_ref_algorithm_LinearityTest:
26
27 Algorithme de vérification "*LinearityTest*"
28 --------------------------------------------
29
30 Description
31 +++++++++++
32
33 Cet algorithme permet de vérifier la qualité de linéarité de l'opérateur, en
34 calculant un résidu dont les propriétés théoriques sont connues. Plusieurs
35 formules de résidu sont utilisables.
36
37 Dans tous les cas, on prend :math:`\mathbf{dx}_0=Normal(0,\mathbf{x})` et
38 :math:`\mathbf{dx}=\alpha*\mathbf{dx}_0`. :math:`F` est le code de calcul.
39
40 Résidu "CenteredDL"
41 *******************
42
43 On observe le résidu suivant, provenant de la différence centrée des valeurs de
44 :math:`F` au point nominal et aux points perturbés, normalisée par la valeur au
45 point nominal :
46
47 .. math:: R(\alpha) = \frac{|| F(\mathbf{x}+\alpha*\mathbf{dx}) + F(\mathbf{x}-\alpha*\mathbf{dx}) - 2*F(\mathbf{x}) ||}{|| F(\mathbf{x}) ||}
48
49 S'il reste constamment très faible par rapport à 1, l'hypothèse de linéarité
50 de :math:`F` est vérifiée.
51
52 Si le résidu varie, ou qu'il est de l'ordre de 1 ou plus, et qu'il n'est
53 faible qu'à partir d'un certain ordre d'incrément, l'hypothèse de linéarité
54 de :math:`F` n'est pas vérifiée.
55
56 Si le résidu décroit et que la décroissance se fait en :math:`\alpha^2` selon
57 :math:`\alpha`, cela signifie que le gradient est bien calculé jusqu'au niveau
58 d'arrêt de la décroissance quadratique.
59
60 Résidu "Taylor"
61 ***************
62
63 On observe le résidu issu du développement de Taylor de la fonction :math:`F`,
64 normalisée par la valeur au point nominal :
65
66 .. math:: R(\alpha) = \frac{|| F(\mathbf{x}+\alpha*\mathbf{dx}) - F(\mathbf{x}) - \alpha * \nabla_xF(\mathbf{dx}) ||}{|| F(\mathbf{x}) ||}
67
68 S'il reste constamment trés faible par rapport à 1, l'hypothèse de linéarité
69 de :math:`F` est vérifiée.
70
71 Si le résidu varie, ou qu'il est de l'ordre de 1 ou plus, et qu'il n'est
72 faible qu'à partir d'un certain ordre d'incrément, l'hypothèse de linéarité
73 de :math:`F` n'est pas vérifiée.
74
75 Si le résidu décroit et que la décroissance se fait en :math:`\alpha^2` selon
76 :math:`\alpha`, cela signifie que le gradient est bien calculé jusqu'au niveau
77 d'arrêt de la décroissance quadratique.
78
79 Résidu "NominalTaylor"
80 **********************
81
82 On observe le résidu obtenu à partir de deux approximations d'ordre 1 de
83 :math:`F(\mathbf{x})`, normalisées par la valeur au point nominal :
84
85 .. math:: R(\alpha) = \max(|| F(\mathbf{x}+\alpha*\mathbf{dx}) - \alpha * F(\mathbf{dx}) || / || F(\mathbf{x}) ||,|| F(\mathbf{x}-\alpha*\mathbf{dx}) + \alpha * F(\mathbf{dx}) || / || F(\mathbf{x}) ||)
86
87 S'il reste constamment égal à 1 à moins de 2 ou 3 pourcents prés (c'est-à-dire
88 que :math:`|R-1|` reste égal à 2 ou 3 pourcents), c'est que l'hypothèse de
89 linéarité de :math:`F` est vérifiée.
90
91 S'il est égal à 1 sur une partie seulement du domaine de variation de
92 l'incrément :math:`\alpha`, c'est sur sous-domaine que l'hypothèse de linéarité
93 de :math:`F` est vérifiée.
94
95 Résidu "NominalTaylorRMS"
96 *************************
97
98 On observe le résidu obtenu à partir de deux approximations d'ordre 1 de
99 :math:`F(\mathbf{x})`, normalisées par la valeur au point nominal, dont on
100 calcule l'écart quadratique (RMS) avec la valeur au point nominal :
101
102 .. math:: R(\alpha) = \max(RMS( F(\mathbf{x}), F(\mathbf{x}+\alpha*\mathbf{dx}) - \alpha * F(\mathbf{dx}) ) / || F(\mathbf{x}) ||,RMS( F(\mathbf{x}), F(\mathbf{x}-\alpha*\mathbf{dx}) + \alpha * F(\mathbf{dx}) ) / || F(\mathbf{x}) ||)
103
104 S'il reste constamment égal à 0 à moins de 1 ou 2 pourcents prés, c'est
105 que l'hypothèse de linéarité de F est vérifiée.
106
107 S'il est égal à 0 sur une partie seulement du domaine de variation de
108 l'incrément :math:`\alpha`, c'est sur cette partie que l'hypothèse de linéarité
109 de F est vérifiée.
110
111 Commandes requises et optionnelles
112 ++++++++++++++++++++++++++++++++++
113
114 .. index:: single: AlgorithmParameters
115 .. index:: single: CheckingPoint
116 .. index:: single: ObservationOperator
117 .. index:: single: AmplitudeOfInitialDirection
118 .. index:: single: EpsilonMinimumExponent
119 .. index:: single: InitialDirection
120 .. index:: single: ResiduFormula
121 .. index:: single: SetSeed
122 .. index:: single: StoreSupplementaryCalculations
123
124 Les commandes requises générales, disponibles dans l'interface en édition, sont
125 les suivantes:
126
127   CheckingPoint
128     *Commande obligatoire*. Elle définit le vecteur utilisé comme l'état autour
129     duquel réaliser le test requis, noté :math:`\mathbf{x}` et similaire à
130     l'ébauche :math:`\mathbf{x}^b`. Sa valeur est définie comme un objet de type
131     "*Vector*".
132
133   ObservationOperator
134     *Commande obligatoire*. Elle indique l'opérateur d'observation, notée
135     précédemment :math:`H`, qui transforme les paramètres d'entrée
136     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
137     observations :math:`\mathbf{y}^o`.  Sa valeur est définie comme un objet de
138     type "*Function*". Différentes formes fonctionnelles peuvent être
139     utilisées, comme décrit dans la section
140     :ref:`section_ref_operator_requirements`. Si un contrôle :math:`U` est
141     inclus dans le modèle d'observation, l'opérateur doit être appliqué à une
142     paire :math:`(X,U)`.
143
144 Les commandes optionnelles générales, disponibles dans l'interface en édition,
145 sont indiquées dans la :ref:`section_ref_checking_keywords`. De plus, les
146 paramètres de la commande "*AlgorithmParameters*" permettent d'indiquer les
147 options particulières, décrites ci-après, de l'algorithme. On se reportera à la
148 :ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette
149 commande.
150
151 Les options de l'algorithme sont les suivantes:
152
153   AmplitudeOfInitialDirection
154     Cette clé indique la mise à l'échelle de la perturbation initiale construite
155     comme un vecteur utilisé pour la dérivée directionnelle autour du point
156     nominal de vérification. La valeur par défaut est de 1, ce qui signifie pas
157     de mise à l'échelle.
158
159     Exemple : ``{"AmplitudeOfInitialDirection":0.5}``
160
161   EpsilonMinimumExponent
162     Cette clé indique la valeur de l'exposant minimal du coefficient en
163     puissance de 10 qui doit être utilisé pour faire décroître le multiplicateur
164     de l'incrément. La valeur par défaut est de -8, et elle doit être entre 0 et
165     -20. Par exemple, la valeur par défaut conduit à calculer le résidu de la
166     formule avec un incrément fixe multiplié par 1.e0 jusqu'à 1.e-8.
167
168     Exemple : ``{"EpsilonMinimumExponent":-12}``
169
170   InitialDirection
171     Cette clé indique la direction vectorielle utilisée pour la dérivée
172     directionnelle autour du point nominal de vérification. Cela doit être un
173     vecteur. Si elle n'est pas spécifiée, la direction par défaut est une
174     perturbation par défaut autour de zéro de la même taille vectorielle que le
175     point de vérification.
176
177     Exemple : ``{"InitialDirection":[0.1,0.1,100.,3}``
178
179   ResiduFormula
180     Cette clé indique la formule de résidu qui doit être utilisée pour le test.
181     Le choix par défaut est "CenteredDL", et les choix possibles sont
182     "CenteredDL" (résidu de la différence entre la fonction au point nominal et
183     ses valeurs avec des incréments positif et négatif, qui doit rester très
184     faible), "Taylor" (résidu du développement de Taylor de l'opérateur
185     normalisé par sa valeur nominal, qui doit rester très faible),
186     "NominalTaylor" (résidu de l'approximation à l'ordre 1 de l'opérateur,
187     normalisé au point nominal, qui doit rester proche de 1), et
188     "NominalTaylorRMS" (résidu de l'approximation à l'ordre 1 de l'opérateur,
189     normalisé par l'écart quadratique moyen (RMS) au point nominal, qui doit
190     rester proche de 0).
191
192     Exemple : ``{"ResiduFormula":"CenteredDL"}``
193
194   SetSeed
195     Cette clé permet de donner un nombre entier pour fixer la graine du
196     générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est
197     par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle
198     utilise ainsi l'initialisation par défaut de l'ordinateur.
199
200     Exemple : ``{"SetSeed":1000}``
201
202   StoreSupplementaryCalculations
203     Cette liste indique les noms des variables supplémentaires qui peuvent être
204     disponibles à la fin de l'algorithme. Cela implique potentiellement des
205     calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
206     aucune de ces variables n'étant calculée et stockée par défaut. Les noms
207     possibles sont dans la liste suivante : ["CurrentState", "Residu",
208     "SimulatedObservationAtCurrentState"].
209
210     Exemple : ``{"StoreSupplementaryCalculations":["CurrentState"]}``
211
212 Informations et variables disponibles à la fin de l'algorithme
213 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
214
215 En sortie, après exécution de l'algorithme, on dispose d'informations et de
216 variables issues du calcul. La description des
217 :ref:`section_ref_output_variables` indique la manière de les obtenir par la
218 méthode nommée ``get`` de la variable "*ADD*" du post-processing. Les variables
219 d'entrée, mises à disposition de l'utilisateur en sortie pour faciliter
220 l'écriture des procédures de post-processing, sont décrites dans
221 l':ref:`subsection_r_o_v_Inventaire`.
222
223 Les sorties non conditionnelles de l'algorithme sont les suivantes:
224
225   Residu
226     *Liste de valeurs*. Chaque élément est la valeur du résidu particulier
227     vérifié lors d'un algorithme de vérification, selon l'ordre des tests
228     effectués.
229
230     Exemple : ``r = ADD.get("Residu")[:]``
231
232 Les sorties conditionnelles de l'algorithme sont les suivantes:
233
234   CurrentState
235     *Liste de vecteurs*. Chaque élément est un vecteur d'état courant utilisé
236     au cours du déroulement de l'algorithme d'optimisation.
237
238     Exemple : ``Xs = ADD.get("CurrentState")[:]``
239
240   SimulatedObservationAtCurrentState
241     *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à
242     partir de l'état courant, c'est-à-dire dans l'espace des observations.
243
244     Exemple : ``hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]``
245
246 Voir aussi
247 ++++++++++
248
249 Références vers d'autres sections :
250   - :ref:`section_ref_algorithm_FunctionTest`