Salome HOME
Rewriting and completing reference documentation ([DocR]
[modules/adao.git] / doc / fr / ref_algorithm_NonLinearLeastSquares.rst
1 ..
2    Copyright (C) 2008-2014 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: NonLinearLeastSquares
25 .. _section_ref_algorithm_NonLinearLeastSquares:
26
27 Algorithme de calcul "*NonLinearLeastSquares*"
28 ----------------------------------------------
29
30 Description
31 +++++++++++
32
33 Cet algorithme réalise une estimation d'état par minimisation variationnelle de
34 la fonctionnelle :math:`J` d'écart classique de "Moindres Carrés" pondérés:
35
36 .. math:: J(\mathbf{x})=(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
37
38 Il est similaire à l':ref:`section_ref_algorithm_3DVAR` amputé de sa partie
39 ébauche. L'ébauche, requise dans l'interface, ne sert que de point initial pour
40 la minimisation variationnelle.
41
42 Dans tous les cas, il est recommandé de lui préférer
43 l':ref:`section_ref_algorithm_3DVAR` pour sa stabilité comme pour son
44 comportement lors de l'optimisation.
45
46 Commandes requises et optionnelles
47 ++++++++++++++++++++++++++++++++++
48
49 .. index:: single: Background
50 .. index:: single: Observation
51 .. index:: single: ObservationError
52 .. index:: single: ObservationOperator
53 .. index:: single: Minimizer
54 .. index:: single: Bounds
55 .. index:: single: MaximumNumberOfSteps
56 .. index:: single: CostDecrementTolerance
57 .. index:: single: ProjectedGradientTolerance
58 .. index:: single: GradientNormTolerance
59 .. index:: single: StoreInternalVariables
60 .. index:: single: StoreSupplementaryCalculations
61
62 Les commandes requises générales, disponibles dans l'interface en édition, sont
63 les suivantes:
64
65   Background
66     *Commande obligatoire*. Elle définit le vecteur d'ébauche ou
67     d'initialisation, noté précédemment :math:`\mathbf{x}^b`. Sa valeur est
68     définie comme un objet de type "*Vector*" ou de type "*VectorSerie*".
69
70   Observation
71     *Commande obligatoire*. Elle définit le vecteur d'observation utilisé en
72     assimilation de données ou en optimisation, et noté précédemment
73     :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de type "*Vector*"
74     ou de type "*VectorSerie*".
75
76   ObservationError
77     *Commande obligatoire*. Elle définit la matrice de covariance des erreurs
78     d'ébauche, notée précédemment :math:`\mathbf{R}`. Sa valeur est définie
79     comme un objet de type "*Matrix*", de type "*ScalarSparseMatrix*", ou de
80     type "*DiagonalSparseMatrix*".
81
82   ObservationOperator
83     *Commande obligatoire*. Elle indique l'opérateur d'observation, noté
84     précédemment :math:`H`, qui transforme les paramètres d'entrée
85     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
86     observations :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de
87     type "*Function*" ou de type "*Matrix*". Dans le cas du type "*Function*",
88     différentes formes fonctionnelles peuvent être utilisées, comme décrit dans
89     la section :ref:`section_ref_operator_requirements`. Si un contrôle
90     :math:`U` est inclus dans le modèle d'observation, l'opérateur doit être
91     appliqué à une paire :math:`(X,U)`.
92
93 Les commandes optionnelles générales, disponibles dans l'interface en édition,
94 sont indiquées dans la :ref:`section_ref_assimilation_keywords`. En particulier,
95 la commande optionnelle "*AlgorithmParameters*" permet d'indiquer les options
96 particulières, décrites ci-après, de l'algorithme. On se reportera à la
97 :ref:`section_ref_options_AlgorithmParameters` pour le bon usage de cette
98 commande.
99
100 Les options de l'algorithme sont les suivantes:
101
102   Minimizer
103     Cette clé permet de changer le minimiseur pour l'optimiseur. Le choix par
104     défaut est "LBFGSB", et les choix possibles sont "LBFGSB" (minimisation non
105     linéaire sous contraintes, voir [Byrd95]_, [Morales11]_ et [Zhu97]_), "TNC"
106     (minimisation non linéaire sous contraintes), "CG" (minimisation non
107     linéaire sans contraintes), "BFGS" (minimisation non linéaire sans
108     contraintes), "NCG" (minimisation de type gradient conjugué de Newton), "LM"
109     (minimisation non linéaire de type Levenberg-Marquard). Il est fortement
110     conseillé de conserver la valeur par défaut.
111
112   Bounds
113     Cette clé permet de définir des bornes supérieure et inférieure pour
114     chaque variable d'état optimisée. Les bornes doivent être données par une
115     liste de liste de paires de bornes inférieure/supérieure pour chaque
116     variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les
117     bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous
118     contraintes les prennent en compte.
119
120   MaximumNumberOfSteps
121     Cette clé indique le nombre maximum d'itérations possibles en optimisation
122     itérative. Le défaut est 15000, qui est très similaire à une absence de
123     limite sur les itérations. Il est ainsi recommandé d'adapter ce paramètre
124     aux besoins pour des problèmes réels. Pour certains optimiseurs, le nombre
125     de pas effectif d'arrêt peut être légèrement différent de la limite à cause
126     d'exigences de contrôle interne de l'algorithme.
127
128   CostDecrementTolerance
129     Cette clé indique une valeur limite, conduisant à arrêter le processus
130     itératif d'optimisation lorsque la fonction coût décroît moins que cette
131     tolérance au dernier pas. Le défaut est de 1.e-7, et il est recommandé
132     de l'adapter aux besoins pour des problèmes réels.
133
134   ProjectedGradientTolerance
135     Cette clé indique une valeur limite, conduisant à arrêter le processus
136     itératif d'optimisation lorsque toutes les composantes du gradient projeté
137     sont en-dessous de cette limite. C'est utilisé uniquement par les
138     optimiseurs sous contraintes. Le défaut est -1, qui désigne le défaut
139     interne de chaque optimiseur (usuellement 1.e-5), et il n'est pas recommandé
140     de le changer.
141
142   GradientNormTolerance
143     Cette clé indique une valeur limite, conduisant à arrêter le processus
144     itératif d'optimisation lorsque la norme du gradient est en dessous de cette
145     limite. C'est utilisé uniquement par les optimiseurs sans contraintes. Le
146     défaut est 1.e-5 et il n'est pas recommandé de le changer.
147
148   StoreInternalVariables
149     Cette clé booléenne permet de stocker les variables internes par défaut,
150     principalement l'état courant lors d'un processus itératif. Attention, cela
151     peut être un choix numériquement coûteux dans certains cas de calculs. La
152     valeur par défaut est "False".
153
154   StoreSupplementaryCalculations
155     Cette liste indique les noms des variables supplémentaires qui peuvent être
156     disponibles à la fin de l'algorithme. Cela implique potentiellement des
157     calculs coûteux. La valeur par défaut est une liste vide, aucune de ces
158     variables n'étant calculée et stockée par défaut. Les noms possibles sont
159     dans la liste suivante : ["APosterioriCovariance", "BMA", "OMA", "OMB",
160     "Innovation", "SigmaObs2", "MahalanobisConsistency"].
161
162 *Astuce pour cet algorithme :*
163
164     Comme la commande *"BackgroundError"* est requise pour TOUS les algorithmes
165     de calcul dans l'interface, vous devez fournir une valeur, malgré le fait
166     que cette commande n'est pas requise pour cet algorithme, et ne sera pas
167     utilisée. La manière la plus simple est de donner "1" comme un STRING.
168
169 Voir aussi
170 ++++++++++
171
172 Références vers d'autres sections :
173   - :ref:`section_ref_algorithm_3DVAR`
174
175 Références bibliographiques :
176   - [Byrd95]_
177   - [Morales11]_