]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation improvements on convergence control
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Fri, 4 Feb 2022 15:24:03 +0000 (16:24 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Fri, 4 Feb 2022 15:24:03 +0000 (16:24 +0100)
doc/en/advanced.rst
doc/en/ref_operator_requirements.rst
doc/en/snippets/CostDecrementTolerance.rst
doc/en/snippets/CostDecrementTolerance_6.rst
doc/en/snippets/MaximumNumberOfSteps.rst
doc/fr/advanced.rst
doc/fr/ref_operator_requirements.rst
doc/fr/snippets/CostDecrementTolerance.rst
doc/fr/snippets/CostDecrementTolerance_6.rst
doc/fr/snippets/MaximumNumberOfSteps.rst

index fa07a6b3c9c0071981408f72e5b5eb54c091a4cc..3ba300f4dde5b1342a50daf819c7b9c08a3710d0 100644 (file)
@@ -488,6 +488,83 @@ operator function before and during enabling parallelism...
 It is also recalled that one have to choose the type "*multi*" for the default
 container in order to launch the scheme, to allow a really parallel execution.
 
+.. _subsection_iterative_convergence_control:
+
+Convergence control for calculation cases and iterative algorithms
+------------------------------------------------------------------
+
+.. index:: single: Convergence
+.. index:: single: Iterative convergence
+
+There are many reasons to want to control the convergence of available
+calculation cases or algorithms in ADAO. For example, one may want
+*repeatability* of optimal solutions, certified *quality*, *stability* of
+optimal search conditions in studies, *saving of global computation time*, etc.
+Moreover, we notice that the methods used in ADAO are frequently iterative,
+reinforcing the interest of this convergence control.
+
+By default, **the available calculation cases or algorithms in ADAO give access
+to multiple ways to control their convergence, specially adapted to each
+method**. These controls are derived from classical optimization theory and
+from the possibilities of each algorithm. The default values of the controls
+are chosen to ensure an optimal search for high quality simulation functions
+with "*standard*" behavior (regularity, physical and numerical quality...),
+which is not necessarily the main property of real simulations due to various
+constraints. It is therefore quite normal to adapt the convergence criteria to
+the study cases encountered, but it is an expert approach to establish the
+correct adaptation.
+
+There are fairly generic ways to control the optimal search and the convergence
+of algorithms. We indicate here the most useful ones, in a non-exhaustive way,
+and with the significant restriction that there are many exceptions to the
+recommendations made. To go further, this generic information must be completed
+by the information specific to each algorithm or calculation case, indicated in
+the documentation of the different :ref:`section_reference_assimilation`.
+
+**A first way is to limit the default number of iterations in the iterative
+search processes**. Even if this is not the best theoretical way to control the
+algorithm, it is very effective in a real study process. For this purpose, the
+keyword "*MaximumNumberOfSteps*" exists in all cases of calculations that
+support it, and its default value is usually set to an equivalent of infinity
+so that it is not the stopping criterion. This is the case for calculations
+based on variational methods such as :ref:`section_ref_algorithm_3DVAR`,
+:ref:`section_ref_algorithm_4DVAR` and
+:ref:`section_ref_algorithm_NonLinearLeastSquares`, but this is also the case
+for other ones like the :ref:`section_ref_algorithm_DerivativeFreeOptimization`
+or :ref:`section_ref_algorithm_QuantileRegression`. In practice, a value
+between 10 and 30 is recommended to make this control parameter effective and
+still obtain an optimal search of good quality. For an optimal search of
+sufficient quality, this restriction should not be set too strictly, i.e. a
+limit of 30 should be better than 10.
+
+**A second way to control convergence is to adapt the relative decrement
+tolerance in the minimization of the cost functional considered**. This
+tolerance is controlled by the keyword "*CostDecrementTolerance*" in the
+algorithms that support it. The default value is rather strict, it is chosen
+for a theoretical convergence control when the numerical simulations are of
+high numerical quality. In practice, it can be adapted without hesitation to be
+between :math:`10^{-5}` and :math:`10^{-2}`. This adaptation allows in
+particular to reduce or avoid the difficulties of optimal search which are
+manifested by many successive iterations on almost identical states.
+
+**A third way to improve convergence is to adapt the default setting of the
+finite difference approximation, primarily for the observation operator**. The
+control of this property is done with the keyword "*DifferentialIncrement*"
+which sets the definition using the :ref:`section_ref_operator_one`. Its
+default value is 1%, and it can usually be adjusted between :math:`10^{-5}` and
+:math:`10^{-3}` (although it is wise to check carefully the relevance of its
+value, it is easy in ADAO to change this parameter). The convergence criterion
+must then be adjusted so that it does not exceed the order of magnitude of this
+approximation. In practice, it is sufficient to set the
+"*CostDecrementTolerance*" criterion to approximately the same precision (i.e.
+with an order of magnitude more or less) as the "*DifferentialIncrement*"
+criterion.
+
+From experience, it is *a priori* not recommended to use other means to control
+convergence, even if they exist. These parameter adjustments are simple to
+implement, and it is favorable to try them (in twin experiments or not) because
+they solve many problems encountered in practice.
+
 .. _subsection_new_adao_version:
 
 Switching from a version of ADAO to a newer one
index 6ed8939247c17204894bb84c223be88449b3f4e4..889e384ead679ba97c6ff8805914d03474ccc6bd 100644 (file)
@@ -140,7 +140,9 @@ possible, :ref:`subsection_ref_parallel_df` can be used. In all cases, an
 internal cache mechanism is used to restrict the number of operator evaluations
 at the minimum possible in a sequential or parallel execution scheme for
 numerical approximations of the tangent and adjoint operators, to avoid
-redundant calculations.
+redundant calculations. One can refer to the section dealing with
+:ref:`subsection_iterative_convergence_control` to discover the interaction
+with the convergence parameters.
 
 This first operator definition form allows easily to test the functional form
 before its use in an ADAO case, greatly reducing the complexity of operator
index d06d4adef3ea37c9e0a01f52ef0e381cad6eaa20..7b7b4a2faf7252189f9e41a6b7828b66c54e798c 100644 (file)
@@ -4,7 +4,9 @@ CostDecrementTolerance
   *Real value*. This key indicates a limit value, leading to stop successfully
   the iterative optimization process when the cost function decreases less than
   this tolerance at the last step. The default is 1.e-7, and it is recommended
-  to adapt it to the needs on real problems.
+  to adapt it to the needs on real problems. One can refer to the section
+  describing ways for ref:`subsection_iterative_convergence_control` for more
+  detailed recommendations.
 
   Example:
   ``{"CostDecrementTolerance":1.e-7}``
index 5d4230c8955fdf92223dff821f797b1d634444ac..fe4a2a7c7a2456b5b1cbd2f5ca59a7c7d09aefd4 100644 (file)
@@ -4,7 +4,9 @@ CostDecrementTolerance
   *Real value*. This key indicates a limit value, leading to stop successfully
   the iterative optimization process when the cost function decreases less than
   this tolerance at the last step. The default is 1.e-6, and it is recommended
-  to adapt it to the needs on real problems.
+  to adapt it to the needs on real problems. One can refer to the section
+  describing ways for ref:`subsection_iterative_convergence_control` for more
+  detailed recommendations.
 
   Example:
   ``{"CostDecrementTolerance":1.e-6}``
index 77f95763c60cf70518ac020bf7f2b270d8d9fcbc..cf4634f76ddaa6264f2a64bd63e72fbfedd0bf4e 100644 (file)
@@ -6,7 +6,9 @@ MaximumNumberOfSteps
   limit on iterations. It is then recommended to adapt this parameter to the
   needs on real problems. For some optimizers, the effective stopping step can
   be slightly different of the limit due to algorithm internal control
-  requirements.
+  requirements. One can refer to the section describing ways for
+  ref:`subsection_iterative_convergence_control` for more detailed
+  recommendations.
 
   Example:
   ``{"MaximumNumberOfSteps":100}``
index 1ba88c71887754a40dbd2ca910d851a03502073c..dcb8bfea53129476c0b4c32cb90708faef7cd113 100644 (file)
@@ -531,6 +531,91 @@ On rappelle aussi qu'il faut choisir dans YACS un container par défaut de type
 "*multi*" pour le lancement du schéma, pour permettre une exécution
 véritablement parallèle.
 
+.. _subsection_iterative_convergence_control:
+
+Contrôler la convergence pour des cas de calculs et algorithmes itératifs
+-------------------------------------------------------------------------
+
+.. index:: single: Convergence
+.. index:: single: Convergence itérative
+
+Il existe de nombreuses raisons de vouloir contrôler la convergence des cas de
+calculs ou algorithmes disponibles dans ADAO. Par exemple, on peut vouloir de
+la *reproductibilité* des solutions optimales, une *qualité* certifiée, une
+*stabilité* des conditions de recherche optimale en études, une *économie du
+temps de calcul* global, etc. De plus, on remarque que les méthodes utilisées
+dans ADAO sont fréquemment itératives, renforçant l'intérêt de ce contrôle de
+convergence.
+
+Par défaut, **les cas de calculs ou algorithmes disponibles dans ADAO donnent
+accès à de multiples moyens de contrôler leur convergence, spécialement adaptés
+à chaque méthode**. Ces moyens de contrôle sont issus de la théorie classique
+de l'optimisation et des capacités de chaque algorithme. Les valeurs par défaut
+des contrôles sont choisies pour assurer une recherche optimale de qualité sur
+des fonctions de simulation aux comportements "*standards*" (régularité,
+qualité physique et numérique...), ce qui n'est pas forcément la propriété
+principale des simulations réelles en raison de contraintes variées. Il est
+donc tout à fait normal d'adapter les critères de convergence aux cas d'études
+rencontrés, mais c'est une démarche d'expertise que d'établir la bonne
+adaptation.
+
+Il existe des manières assez génériques de contrôler la recherche optimale et
+la convergence des algorithmes. On en indique ici les plus utiles, de manière
+non exhaustive, et avec l'importante réserve qu'il y a fréquemment des
+exceptions aux recommandations formulées. Pour aller plus loin, ces
+informations génériques sont impérativement à compléter par les informations
+spécifiques à chaque algorithme ou cas de calcul, indiquées dans la
+documentation des différents :ref:`section_reference_assimilation`.
+
+**Un premier moyen est de limiter le nombre d'itérations par défaut dans les
+processus de recherches itératives**. Même si ce n'est pas la meilleure manière
+théorique de contrôler l'algorithme, elle est très efficace dans un processus
+d'étude réelle. Pour cela, le mot-clé "*MaximumNumberOfSteps*" existe dans tous
+les cas de calculs qui le supportent, et sa valeur par défaut est usuellement
+fixée à un équivalent de l'infini pour que ce ne soit pas le critère d'arrêt.
+C'est le cas pour les calculs à base de méthodes variationnelles comme les
+:ref:`section_ref_algorithm_3DVAR`, :ref:`section_ref_algorithm_4DVAR` et
+:ref:`section_ref_algorithm_NonLinearLeastSquares`, mais c'est aussi le cas
+pour d'autres comme les :ref:`section_ref_algorithm_DerivativeFreeOptimization`
+ou :ref:`section_ref_algorithm_QuantileRegression`. Dans la pratique, on
+recommande une valeur comprise entre 10 et 30 pour rendre ce paramètre de
+contrôle effectif et obtenir quand même une recherche optimale de bonne
+qualité. Pour une recherche optimale de qualité suffisante, il convient de ne
+pas fixer cette restriction trop strictement, c'est-à-dire qu'une limite de 30
+devrait être mieux que 10.
+
+**Un second moyen de contrôle de la convergence est d'adapter la tolérance de
+décroissance relative dans la minimisation de la fonctionnelle de coût
+considérée**. Cette tolérance est contrôlée par le mot-clé
+"*CostDecrementTolerance*" dans les algorithmes qui le supportent. La valeur
+par défaut est plutôt stricte, elle est choisie pour un contrôle théorique de
+convergence lorsque les simulations numériques sont d'une qualité numérique
+importante. Dans la pratique, elle peut être adaptée sans hésitation pour
+valoir entre :math:`10^{-5}` et :math:`10^{-2}`. Cette adaptation permet en
+particulier de réduire ou d'éviter les difficultés de recherche optimale qui se
+manifestent par de nombreuses itérations successives portant sur des états
+presque identiques.
+
+**Un troisième moyen d'améliorer la convergence est d'adapter le réglage par
+défaut de l'approximation par différences finies, essentiellement pour
+l'opérateur d'observation**. Le contrôle de cette propriété se fait à l'aide du
+mot-clé "*DifferentialIncrement*" qui paramètre la définition à l'aide de la
+:ref:`section_ref_operator_one`. Sa valeur par défaut est de 1%, et il peut
+généralement être ajusté entre :math:`10^{-5}` et :math:`10^{-3}` (même s'il
+est sage de vérifier soigneusement la pertinence de sa valeur, il est aisé dans
+ADAO de modifier ce paramètre). Le critère de convergence doit ensuite être
+ajusté de telle sorte qu'il ne surpasse pas l'ordre de grandeur de cette
+approximation. En pratique, on peut se contenter de fixer le critère
+"*CostDecrementTolerance*" à peu près à la même précision (c'est-à-dire avec un
+ordre de grandeur de plus ou de moins) que le critère
+"*DifferentialIncrement*".
+
+Par expérience, il n'est *a priori* pas recommandé d'utiliser d'autres moyens
+de contrôler la convergence, même s'il en existe. Ces ajustements de paramètres
+sont simples à mettre en œuvre, et il est favorable de les essayer (en
+expériences jumelles ou pas) car ils résolvent de nombreux problèmes rencontrés
+en pratique.
+
 .. _subsection_new_adao_version:
 
 Passer d'une version d'ADAO à une nouvelle
index 3312a6adb73e27b54de56749dd2ed7e17a4fec2e..ad7cbf36c452cf611b55d6f8c1a7c2cbf37a7e7c 100644 (file)
@@ -144,7 +144,9 @@ fois plus cher que le premier ordre). Si nécessaire et si possible, on peut
 interne permet de limiter le nombre d'évaluations de l'opérateur au minimum
 possible du point de vue de l'exécution séquentielle ou parallèle des
 approximations numériques des opérateurs tangent et adjoint, pour éviter des
-calculs redondants.
+calculs redondants. On se reportera à la partie permettant de
+:ref:`subsection_iterative_convergence_control` pour connaître l'interaction
+avec les paramètres relatifs à la convergence.
 
 Cette première forme de définition de l'opérateur permet aisément de tester la
 forme fonctionnelle avant son usage dans un cas ADAO, réduisant notablement la
index 7312572a6b5b72a12769095c75a75b983624b91e..6ad2f8ce76dada7c2dcbbc3a6fc41be3e895b44d 100644 (file)
@@ -4,7 +4,10 @@ CostDecrementTolerance
   *Valeur réelle*. Cette clé indique une valeur limite, conduisant à arrêter le
   processus itératif d'optimisation lorsque la fonction coût décroît moins que
   cette tolérance au dernier pas. Le défaut est de 1.e-7, et il est recommandé
-  de l'adapter aux besoins pour des problèmes réels.
+  de l'adapter aux besoins pour des problèmes réels. On peut se reporter à la
+  partie décrivant les manières de
+  :ref:`subsection_iterative_convergence_control` pour des recommandations plus
+  détaillées.
 
   Exemple :
   ``{"CostDecrementTolerance":1.e-7}``
index 9f420a6e0a37e9b4cd8f62bfaa5400697db92e38..084a81ab25e240468cfd21734730d8777795b547 100644 (file)
@@ -4,7 +4,10 @@ CostDecrementTolerance
   *Valeur réelle*. Cette clé indique une valeur limite, conduisant à arrêter le
   processus itératif d'optimisation lorsque la fonction coût décroît moins que
   cette tolérance au dernier pas. Le défaut est de 1.e-6, et il est recommandé
-  de l'adapter aux besoins pour des problèmes réels.
+  de l'adapter aux besoins pour des problèmes réels. On peut se reporter à la
+  partie décrivant les manières de
+  :ref:`subsection_iterative_convergence_control` pour des recommandations plus
+  détaillées.
 
   Exemple :
   ``{"CostDecrementTolerance":1.e-6}``
index 15da0964851f586931637b1337b253d5c54c7a4b..d56cce31feaaa537bc9f80ada4eb243f72efe8f8 100644 (file)
@@ -6,7 +6,10 @@ MaximumNumberOfSteps
   absence de limite sur les itérations. Il est ainsi recommandé d'adapter ce
   paramètre aux besoins pour des problèmes réels. Pour certains optimiseurs, le
   nombre de pas effectif d'arrêt peut être légèrement différent de la limite à
-  cause d'exigences de contrôle interne de l'algorithme.
+  cause d'exigences de contrôle interne de l'algorithme. On peut se reporter à
+  la partie décrivant les manières de
+  :ref:`subsection_iterative_convergence_control` pour des recommandations plus
+  détaillées.
 
   Exemple :
   ``{"MaximumNumberOfSteps":100}``