]> SALOME platform Git repositories - modules/adao.git/blob - doc/fr/ref_algorithm_DerivativeFreeOptimization.rst
Salome HOME
Documentation and source correction and improvements for DFO
[modules/adao.git] / doc / fr / ref_algorithm_DerivativeFreeOptimization.rst
1 ..
2    Copyright (C) 2008-2015 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: DerivativeFreeOptimization
25 .. _section_ref_algorithm_DerivativeFreeOptimization:
26
27 Algorithme de calcul "*DerivativeFreeOptimization*"
28 ----------------------------------------------------
29
30 .. warning::
31
32   dans sa présente version, cet algorithme est expérimental, et reste donc
33   susceptible de changements dans les prochaines versions.
34
35 Description
36 +++++++++++
37
38 Cet algorithme réalise une estimation d'état d'un système dynamique par
39 minimisation d'une fonctionnelle d'écart :math:`J` sans gradient. C'est une
40 méthode qui n'utilise pas les dérivées de la fonctionnelle d'écart. Elle entre
41 dans la même catégorie que
42 l':ref:`section_ref_algorithm_ParticleSwarmOptimization`.
43
44 C'est une méthode d'optimisation permettant la recherche du minimum global d'une
45 fonctionnelle d'erreur :math:`J` quelconque de type :math:`L^1`, :math:`L^2` ou
46 :math:`L^{\infty}`, avec ou sans pondérations. La fonctionnelle d'erreur par
47 défaut est celle de moindres carrés pondérés augmentés, classiquement utilisée
48 en assimilation de données.
49
50 Commandes requises et optionnelles
51 ++++++++++++++++++++++++++++++++++
52
53 .. index:: single: AlgorithmParameters
54 .. index:: single: Background
55 .. index:: single: BackgroundError
56 .. index:: single: Observation
57 .. index:: single: ObservationError
58 .. index:: single: ObservationOperator
59 .. index:: single: Minimizer
60 .. index:: single: MaximumNumberOfSteps
61 .. index:: single: MaximumNumberOfFunctionEvaluations
62 .. index:: single: StateVariationTolerance
63 .. index:: single: CostDecrementTolerance
64 .. index:: single: QualityCriterion
65 .. index:: single: StoreSupplementaryCalculations
66
67 Les commandes requises générales, disponibles dans l'interface en édition, sont
68 les suivantes:
69
70   Background
71     *Commande obligatoire*. Elle définit le vecteur d'ébauche ou
72     d'initialisation, noté précédemment :math:`\mathbf{x}^b`. Sa valeur est
73     définie comme un objet de type "*Vector*" ou de type "*VectorSerie*".
74
75   BackgroundError
76     *Commande obligatoire*. Elle définit la matrice de covariance des erreurs
77     d'ébauche, notée précédemment :math:`\mathbf{B}`. Sa valeur est définie
78     comme un objet de type "*Matrix*", de type "*ScalarSparseMatrix*", ou de
79     type "*DiagonalSparseMatrix*".
80
81   Observation
82     *Commande obligatoire*. Elle définit le vecteur d'observation utilisé en
83     assimilation de données ou en optimisation, et noté précédemment
84     :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de type "*Vector*"
85     ou de type "*VectorSerie*".
86
87   ObservationError
88     *Commande obligatoire*. Elle définit la matrice de covariance des erreurs
89     d'ébauche, notée précédemment :math:`\mathbf{R}`. Sa valeur est définie
90     comme un objet de type "*Matrix*", de type "*ScalarSparseMatrix*", ou de
91     type "*DiagonalSparseMatrix*".
92
93   ObservationOperator
94     *Commande obligatoire*. Elle indique l'opérateur d'observation, noté
95     précédemment :math:`H`, qui transforme les paramètres d'entrée
96     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
97     observations :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de
98     type "*Function*" ou de type "*Matrix*". Dans le cas du type "*Function*",
99     différentes formes fonctionnelles peuvent être utilisées, comme décrit dans
100     la section :ref:`section_ref_operator_requirements`. Si un contrôle
101     :math:`U` est inclus dans le modèle d'observation, l'opérateur doit être
102     appliqué à une paire :math:`(X,U)`.
103
104 Les commandes optionnelles générales, disponibles dans l'interface en édition,
105 sont indiquées dans la :ref:`section_ref_assimilation_keywords`. De plus, les
106 paramètres de la commande "*AlgorithmParameters*" permettent d'indiquer les
107 options particulières, décrites ci-après, de l'algorithme. On se reportera à la
108 :ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette
109 commande.
110
111 Les options de l'algorithme sont les suivantes:
112
113   Minimizer
114     Cette clé permet de changer le minimiseur pour l'optimiseur. Le choix par
115     défaut est "POWELL", et les choix possibles sont "POWELL" (minimisation sans
116     contrainte de type Powell modifiée, voir [Powell]_), "SIMPLEX" (minimisation
117     sans contrainte de type simplexe ou Nelder-Mead, voir [Nelder]_). Il est
118     conseillé de conserver la valeur par défaut.
119
120     Exemple : ``{"Minimizer":"POWELL"}``
121
122   MaximumNumberOfSteps
123     Cette clé indique le nombre maximum d'itérations possibles en optimisation
124     itérative. Le défaut est 15000, qui est une limite arbitraire. Il est ainsi
125     fortement recommandé d'adapter ce paramètre aux besoins pour des problèmes
126     réels. Pour certains optimiseurs, le nombre de pas effectif d'arrêt peut
127     être légèrement différent de la limite à cause d'exigences de contrôle
128     interne de l'algorithme.
129
130     Exemple : ``{"MaximumNumberOfSteps":50}``
131
132   MaximumNumberOfFunctionEvaluations
133     Cette clé indique le nombre maximum d'évaluations possibles de la
134     fonctionnelle à optimiser. Le défaut est 15000, qui est une limite
135     arbitraire. Le calcul peut dépasser ce nombre lorsqu'il doit finir une
136     boucle externe d'optimisation. Il est fortement recommandé d'adapter ce
137     paramètre aux besoins pour des problèmes réels.
138
139     Exemple : ``{"MaximumNumberOfFunctionEvaluations":50}``
140
141   StateVariationTolerance
142     Cette clé indique la variation relative maximale de l'état lors pour l'arrêt
143     par convergence sur l'état. Le défaut est de 1.e-4, et il est recommandé
144     de l'adapter aux besoins pour des problèmes réels.
145
146     Exemple : ``{"StateVariationTolerance":1.e-4}``
147
148   CostDecrementTolerance
149     Cette clé indique une valeur limite, conduisant à arrêter le processus
150     itératif d'optimisation lorsque la fonction coût décroît moins que cette
151     tolérance au dernier pas. Le défaut est de 1.e-7, et il est recommandé
152     de l'adapter aux besoins pour des problèmes réels.
153
154     Exemple : ``{"CostDecrementTolerance":1.e-7}``
155
156   QualityCriterion
157     Cette clé indique le critère de qualité, qui est minimisé pour trouver
158     l'estimation optimale de l'état. Le défaut est le critère usuel de
159     l'assimilation de données nommé "DA", qui est le critère de moindres carrés
160     pondérés augmentés. Les critères possibles sont dans la liste suivante, dans
161     laquelle les noms équivalents sont indiqués par un signe "=" :
162     ["AugmentedWeightedLeastSquares"="AWLS"="DA", "WeightedLeastSquares"="WLS",
163     "LeastSquares"="LS"="L2", "AbsoluteValue"="L1",  "MaximumError"="ME"].
164
165     Exemple : ``{"QualityCriterion":"DA"}``
166
167   StoreSupplementaryCalculations
168     Cette liste indique les noms des variables supplémentaires qui peuvent être
169     disponibles à la fin de l'algorithme. Cela implique potentiellement des
170     calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
171     aucune de ces variables n'étant calculée et stockée par défaut. Les noms
172     possibles sont dans la liste suivante : ["CurrentState", "CostFunctionJ",
173     "SimulatedObservationAtBackground", "SimulatedObservationAtCurrentState",
174     "SimulatedObservationAtOptimum"].
175
176     Exemple : ``{"StoreSupplementaryCalculations":["CurrentState", "CostFunctionJ"]}``
177
178 Informations et variables disponibles à la fin de l'algorithme
179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
180
181 En sortie, après exécution de l'algorithme, on dispose d'informations et de
182 variables issues du calcul. La description des
183 :ref:`section_ref_output_variables` indique la manière de les obtenir par la
184 méthode nommée ``get`` de la variable "*ADD*" du post-processing. Les variables
185 d'entrée, mises à disposition de l'utilisateur en sortie pour faciliter
186 l'écriture des procédures de post-processing, sont décrites dans
187 l':ref:`subsection_r_o_v_Inventaire`.
188
189 Les sorties non conditionnelles de l'algorithme sont les suivantes:
190
191   Analysis
192     *Liste de vecteurs*. Chaque élément est un état optimal :math:`\mathbf{x}*`
193     en optimisation ou une analyse :math:`\mathbf{x}^a` en assimilation de
194     données.
195
196     Exemple : ``Xa = ADD.get("Analysis")[-1]``
197
198   CostFunctionJ
199     *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart
200     :math:`J`.
201
202     Exemple : ``J = ADD.get("CostFunctionJ")[:]``
203
204   CostFunctionJb
205     *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart
206     :math:`J^b`, c'est-à-dire de la partie écart à l'ébauche.
207
208     Exemple : ``Jb = ADD.get("CostFunctionJb")[:]``
209
210   CostFunctionJo
211     *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart
212     :math:`J^o`, c'est-à-dire de la partie écart à l'observation.
213
214     Exemple : ``Jo = ADD.get("CostFunctionJo")[:]``
215
216   CurrentState
217     *Liste de vecteurs*. Chaque élément est un vecteur d'état courant utilisé
218     au cours du déroulement de l'algorithme d'optimisation.
219
220     Exemple : ``Xs = ADD.get("CurrentState")[:]``
221
222 Les sorties conditionnelles de l'algorithme sont les suivantes:
223
224   SimulatedObservationAtBackground
225     *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à
226     partir de l'ébauche :math:`\mathbf{x}^b`.
227
228     Exemple : ``hxb = ADD.get("SimulatedObservationAtBackground")[-1]``
229
230   SimulatedObservationAtCurrentState
231     *Liste de vecteurs*. Chaque élément est un vecteur observé à l'état courant,
232     c'est-à-dire dans l'espace des observations.
233
234     Exemple : ``Ys = ADD.get("SimulatedObservationAtCurrentState")[-1]``
235
236   SimulatedObservationAtOptimum
237     *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à
238     partir de l'analyse ou de l'état optimal :math:`\mathbf{x}^a`.
239
240     Exemple : ``hxa = ADD.get("SimulatedObservationAtOptimum")[-1]``
241
242 Voir aussi
243 ++++++++++
244
245 Références vers d'autres sections :
246   - :ref:`section_ref_algorithm_ParticleSwarmOptimization`
247
248 Références bibliographiques :
249   - [Nelder]_
250   - [Powell]_