Salome HOME
Minor documentation and code review corrections (33) V9_10_0b1
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 1 Nov 2022 08:44:34 +0000 (09:44 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 1 Nov 2022 08:44:34 +0000 (09:44 +0100)
Linf

doc/en/snippets/QualityCriterion.rst
doc/en/theory.rst
doc/fr/snippets/QualityCriterion.rst
doc/fr/theory.rst
src/daComposant/daAlgorithms/DerivativeFreeOptimization.py
src/daComposant/daAlgorithms/DifferentialEvolution.py
src/daComposant/daAlgorithms/ParticleSwarmOptimization.py
src/daComposant/daAlgorithms/SamplingTest.py
src/daComposant/daAlgorithms/TabuSearch.py
src/daComposant/daCore/BasicObjects.py

index 1ff2d33313cc5205bdaa52b93e10b662a3e906d7..abb86889c89b5bee6ac22fa0a54d5d380377c15f 100644 (file)
@@ -8,7 +8,7 @@ QualityCriterion
   indicated by the sign "<=>":
   ["AugmentedWeightedLeastSquares" <=> "AWLS" <=> "DA",
   "WeightedLeastSquares" <=> "WLS", "LeastSquares" <=> "LS" <=> "L2",
-  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME"].
+  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME" <=> "Linf"].
 
   Example:
   ``{"QualityCriterion":"DA"}``
index 18a5c38c2fc0801830e03df5c98907d9782d3e7e..b7047e6156879b0d10aa5950316b26e809c89903 100644 (file)
@@ -561,35 +561,36 @@ The most classical instances of error measurements are recalled or specified
 below, indicating their identifiers in ADAO for the possible selection of a
 quality criterion:
 
-- the objective function for the augmented weighted least squares error measurement (which is the basic default functional in all data assimilation algorithms, often named "*3D-Var*" objective function, and which is known for the quality criteria in ADAO as "*AugmentedWeightedLeastSquares*", "*AWLS*" or "*DA*") is:
+- the objective function for the augmented weighted least squares error measurement (which is the basic default functional in all data assimilation algorithms, often named "*3D-Var*" objective function, and which is known in the quality criteria for ADAO as "*AugmentedWeightedLeastSquares*", "*AWLS*" or "*DA*") is:
 
     .. index:: single: AugmentedWeightedLeastSquares (QualityCriterion)
     .. index:: single: AWLS (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{x}-\mathbf{x}^b)^T.\mathbf{B}^{-1}.(\mathbf{x}-\mathbf{x}^b)+\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
 
-- the objective function for the weighted least squares error measurement (which is the squared :math:`L^2` weighted norm of the innovation, with a :math:`1/2` coefficient to be homogeneous with the previous one, and which is known for the quality criteria in ADAO as "*WeightedLeastSquares*" or "*WLS*") is:
+- the objective function for the weighted least squares error measurement (which is the squared :math:`L^2` weighted norm of the innovation, with a :math:`1/2` coefficient to be homogeneous with the previous one, and which is known in the quality criteria for ADAO as "*WeightedLeastSquares*" or "*WLS*") is:
 
     .. index:: single: WeightedLeastSquares (QualityCriterion)
     .. index:: single: WLS (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
 
-- the objective function for the least squares error measurement (which is the squared :math:`L^2` norm of the innovation, with a :math:`1/2` coefficient to be homogeneous with the previous ones, and which is known for the quality criteria in ADAO as "*LeastSquares*", "*LS*" or "*L2*") is:
+- the objective function for the least squares error measurement (which is the squared :math:`L^2` norm of the innovation, with a :math:`1/2` coefficient to be homogeneous with the previous ones, and which is known in the quality criteria for ADAO as "*LeastSquares*", "*LS*" or "*L2*") is:
 
     .. index:: single: LeastSquares (QualityCriterion)
     .. index:: single: LS (QualityCriterion)
     .. index:: single: L2 (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})=\frac{1}{2}||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^2}^2
 
-- the objective function for the absolute error value measurement (which is the :math:`L^1` norm of the innovation, and which is known for the quality criteria in ADAO as "*AbsoluteValue*" or "*L1*") is:
+- the objective function for the absolute error value measurement (which is the :math:`L^1` norm of the innovation, and which is known in the quality criteria for ADAO as "*AbsoluteValue*" or "*L1*") is:
 
     .. index:: single: AbsoluteValue (QualityCriterion)
     .. index:: single: L1 (QualityCriterion)
     .. math:: J(\mathbf{x})=||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^1}
 
-- the objective function for the maximum error value measurement (which is the :math:`L^{\infty}` norm, and which is known for the quality criteria in ADAO as "*MaximumError*" or "*ME*") is:
+- the objective function for the maximum error value measurement (which is the :math:`L^{\infty}` norm, and which is known in the quality criteria for ADAO as "*MaximumError*", "*ME*" or "*Linf*") is:
 
     .. index:: single: MaximumError (QualityCriterion)
     .. index:: single: ME (QualityCriterion)
+    .. index:: single: Linf (QualityCriterion)
     .. math:: J(\mathbf{x})=||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^{\infty}}
 
 These error measures may be not differentiable for the last two, but some
index d10b181cf6806cf3124e1ee8bd7b5d975f4d29c2..f052636551ad7865731d0ef972832745bbc59880 100644 (file)
@@ -8,7 +8,7 @@ QualityCriterion
   suivante, dans laquelle les noms équivalents sont indiqués par un signe "<=>" :
   ["AugmentedWeightedLeastSquares" <=> "AWLS" <=> "DA",
   "WeightedLeastSquares" <=> "WLS", "LeastSquares" <=> "LS" <=> "L2",
-  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME"].
+  "AbsoluteValue" <=> "L1", "MaximumError" <=> "ME" <=> "Linf"].
 
   Exemple :
   ``{"QualityCriterion":"DA"}``
index c609c4de7efade725eefe06fd39666eb3c8c7fb2..fe63f0890d2525049303466a1b3a7b5cdf6e6a89 100644 (file)
@@ -585,10 +585,10 @@ méthodes sont un coût numérique souvent bien supérieur pour trouver les
 estimations d'états, et fréquemment aucune garantie de convergence en temps
 fini. Ici, on ne mentionne que quelques méthodes disponibles dans ADAO :
 
-- *optimisation sans dérivées (Derivative Free Optimization ou DFO)* (voir :ref:`section_ref_algorithm_DerivativeFreeOptimization`),
-- *optimisation par essaim de particules (Particle Swarm Optimization ou PSO)* (voir :ref:`section_ref_algorithm_ParticleSwarmOptimization`),
-- *évolution différentielle (Differential Evolution ou DE)* (voir :ref:`section_ref_algorithm_DifferentialEvolution`),
-- *régression de quantile (Quantile Regression ou QR)* (voir :ref:`section_ref_algorithm_QuantileRegression`).
+- *Optimisation sans dérivées (Derivative Free Optimization ou DFO)* (voir :ref:`section_ref_algorithm_DerivativeFreeOptimization`),
+- *Optimisation par essaim de particules (Particle Swarm Optimization ou PSO)* (voir :ref:`section_ref_algorithm_ParticleSwarmOptimization`),
+- *Ã\89volution différentielle (Differential Evolution ou DE)* (voir :ref:`section_ref_algorithm_DifferentialEvolution`),
+- *Régression de quantile (Quantile Regression ou QR)* (voir :ref:`section_ref_algorithm_QuantileRegression`).
 
 En second lieu, les méthodes d'optimisation cherchent usuellement à minimiser
 des mesures quadratiques d'erreurs, car les propriétés naturelles de ces
@@ -601,35 +601,36 @@ réduire**. Par exemple, on peut citer une *erreur en valeur absolue*, une
 classiques de mesures d'erreurs, en indiquant leur identifiant dans ADAO pour
 la sélection éventuelle d'un critère de qualité :
 
-- la fonction objectif pour la mesure d'erreur par moindres carrés pondérés et augmentés (qui est la fonctionnelle de base par défaut de tous les algorithmes en assimilation de données, souvent nommée la fonctionnelle du "*3D-Var*", et qui est connue pour les critères de qualité dans ADAO sous les noms de "*AugmentedWeightedLeastSquares*", "*AWLS*" ou "*DA*") est :
+- la fonction objectif pour la mesure d'erreur par moindres carrés pondérés et augmentés (qui est la fonctionnelle de base par défaut de tous les algorithmes en assimilation de données, souvent nommée la fonctionnelle du "*3D-Var*", et qui est connue dans les critères de qualité pour ADAO sous les noms de "*AugmentedWeightedLeastSquares*", "*AWLS*" ou "*DA*") est :
 
     .. index:: single: AugmentedWeightedLeastSquares (QualityCriterion)
     .. index:: single: AWLS (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{x}-\mathbf{x}^b)^T.\mathbf{B}^{-1}.(\mathbf{x}-\mathbf{x}^b)+\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
 
-- la fonction objectif pour la mesure d'erreur par moindres carrés pondérés (qui est le carré de la norme pondérée :math:`L^2` de l'innovation, avec un coefficient :math:`1/2` pour être homogène à la précédente, et qui est connue pour les critères de qualité dans ADAO sous les noms de "*WeightedLeastSquares*" ou "*WLS*") est :
+- la fonction objectif pour la mesure d'erreur par moindres carrés pondérés (qui est le carré de la norme pondérée :math:`L^2` de l'innovation, avec un coefficient :math:`1/2` pour être homogène à la précédente, et qui est connue dans les critères de qualité pour ADAO sous les noms de "*WeightedLeastSquares*" ou "*WLS*") est :
 
     .. index:: single: WeightedLeastSquares (QualityCriterion)
     .. index:: single: WLS (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
 
-- la fonction objectif pour la mesure d'erreur par moindres carrés (qui est le carré de la norme :math:`L^2` de l'innovation, avec un coefficient :math:`1/2` pour être homogène aux précédentes, et qui est connue pour les critères de qualité dans ADAO sous les noms de "*LeastSquares*", "*LS*" ou "*L2*") est :
+- la fonction objectif pour la mesure d'erreur par moindres carrés (qui est le carré de la norme :math:`L^2` de l'innovation, avec un coefficient :math:`1/2` pour être homogène aux précédentes, et qui est connue dans les critères de qualité pour ADAO sous les noms de "*LeastSquares*", "*LS*" ou "*L2*") est :
 
     .. index:: single: LeastSquares (QualityCriterion)
     .. index:: single: LS (QualityCriterion)
     .. index:: single: L2 (QualityCriterion)
     .. math:: J(\mathbf{x})=\frac{1}{2}(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})=\frac{1}{2}||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^2}^2
 
-- la fonction objectif pour la mesure d'erreur en valeur absolue (qui est la norme :math:`L^1` de l'innovation, et qui est connue pour les critères de qualité dans ADAO sous les noms de "*AbsoluteValue*" ou "*L1*") est :
+- la fonction objectif pour la mesure d'erreur en valeur absolue (qui est la norme :math:`L^1` de l'innovation, et qui est connue dans les critères de qualité pour ADAO sous les noms de "*AbsoluteValue*" ou "*L1*") est :
 
     .. index:: single: AbsoluteValue (QualityCriterion)
     .. index:: single: L1 (QualityCriterion)
     .. math:: J(\mathbf{x})=||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^1}
 
-- la fonction objectif pour la mesure d'erreur maximale (qui est la norme :math:`L^{\infty}` de l'innovation, et qui est connue pour les critères de qualité dans ADAO sous les noms de "*MaximumError*" ou "*ME*") est :
+- la fonction objectif pour la mesure d'erreur maximale (qui est la norme :math:`L^{\infty}` de l'innovation, et qui est connue dans les critères de qualité pour ADAO sous les noms de "*MaximumError*", "*ME*" ou "*Linf*") est :
 
     .. index:: single: MaximumError (QualityCriterion)
     .. index:: single: ME (QualityCriterion)
+    .. index:: single: Linf (QualityCriterion)
     .. math:: J(\mathbf{x})=||\mathbf{y}^o-\mathbf{H}.\mathbf{x}||_{L^{\infty}}
 
 Ces mesures d'erreurs peuvent ne être pas différentiables comme pour les deux
@@ -640,9 +641,9 @@ sont un coût numérique souvent bien supérieur pour trouver les estimations
 d'états, et pas de garantie de convergence en temps fini. Ici encore, on ne
 mentionne que quelques méthodes qui sont disponibles dans ADAO :
 
-- *optimisation sans dérivées (Derivative Free Optimization ou DFO)* (voir :ref:`section_ref_algorithm_DerivativeFreeOptimization`),
-- *optimisation par essaim de particules (Particle Swarm Optimization ou PSO)* (voir :ref:`section_ref_algorithm_ParticleSwarmOptimization`),
-- *évolution différentielle (Differential Evolution ou DE)* (voir :ref:`section_ref_algorithm_DifferentialEvolution`).
+- *Optimisation sans dérivées (Derivative Free Optimization ou DFO)* (voir :ref:`section_ref_algorithm_DerivativeFreeOptimization`),
+- *Optimisation par essaim de particules (Particle Swarm Optimization ou PSO)* (voir :ref:`section_ref_algorithm_ParticleSwarmOptimization`),
+- *Ã\89volution différentielle (Differential Evolution ou DE)* (voir :ref:`section_ref_algorithm_DifferentialEvolution`).
 
 Le lecteur intéressé par le sujet de l'optimisation pourra utilement commencer
 sa recherche grâce au point d'entrée [WikipediaMO]_.
index 9a561c2b77b33d6f978b15d1dd7c3ed8c02e4ce0..d36ce2cc5a56203be379575cefe0bf550448f4d3 100644 (file)
@@ -78,7 +78,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "WeightedLeastSquares", "WLS",
                 "LeastSquares", "LS", "L2",
                 "AbsoluteValue", "L1",
-                "MaximumError", "ME",
+                "MaximumError", "ME", "Linf",
                 ],
             )
         self.defineRequiredParameter(
@@ -167,7 +167,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             elif QualityMeasure in ["AbsoluteValue","L1"]:
                 Jb  = 0.
                 Jo  = numpy.sum( numpy.abs(_Innovation) )
-            elif QualityMeasure in ["MaximumError","ME"]:
+            elif QualityMeasure in ["MaximumError","ME", "Linf"]:
                 Jb  = 0.
                 Jo  = numpy.max( numpy.abs(_Innovation) )
             #
index 1a4ed93897dfa839dcdfa3dde57837b59564c6a5..21340ccf7662a0cf5032d223c3b5258169641e8f 100644 (file)
@@ -102,7 +102,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "WeightedLeastSquares", "WLS",
                 "LeastSquares", "LS", "L2",
                 "AbsoluteValue", "L1",
-                "MaximumError", "ME",
+                "MaximumError", "ME", "Linf",
                 ],
             )
         self.defineRequiredParameter(
@@ -193,7 +193,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             elif QualityMeasure in ["AbsoluteValue","L1"]:
                 Jb  = 0.
                 Jo  = numpy.sum( numpy.abs(_Innovation) )
-            elif QualityMeasure in ["MaximumError","ME"]:
+            elif QualityMeasure in ["MaximumError","ME", "Linf"]:
                 Jb  = 0.
                 Jo  = numpy.max( numpy.abs(_Innovation) )
             #
index 1a0402d9256d0e4e9c9230abfc9e8bac168b5b4e..99aa7df48dad906e755c3a3c80a58b794048ecd1 100644 (file)
@@ -79,7 +79,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "WeightedLeastSquares", "WLS",
                 "LeastSquares", "LS", "L2",
                 "AbsoluteValue", "L1",
-                "MaximumError", "ME",
+                "MaximumError", "ME", "Linf",
                 ],
             )
         self.defineRequiredParameter(
@@ -165,7 +165,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             elif QualityMeasure in ["AbsoluteValue","L1"]:
                 Jb  = 0.
                 Jo  = numpy.sum( numpy.abs(_Innovation) )
-            elif QualityMeasure in ["MaximumError","ME"]:
+            elif QualityMeasure in ["MaximumError","ME", "Linf"]:
                 Jb  = 0.
                 Jo  = numpy.max( numpy.abs(_Innovation) )
             #
index 66bf30b0dbaa41ef500ac076869b6856b995bb20..ae99ad866df30c0fd7736b95c8ef2ed3bd474aae 100644 (file)
@@ -64,7 +64,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "WeightedLeastSquares","WLS",
                 "LeastSquares", "LS", "L2",
                 "AbsoluteValue", "L1",
-                "MaximumError", "ME",
+                "MaximumError", "ME", "Linf",
                 ],
             listadv  = [
                 "AugmentedPonderatedLeastSquares", "APLS",
@@ -146,7 +146,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 elif QualityMeasure in ["AbsoluteValue","L1"]:
                     Jb  = 0.
                     Jo  = float( numpy.sum( numpy.abs(Y0 - _HX), dtype=mfp ) )
-                elif QualityMeasure in ["MaximumError","ME"]:
+                elif QualityMeasure in ["MaximumError","ME", "Linf"]:
                     Jb  = 0.
                     Jo  = numpy.max( numpy.abs(Y0 - _HX) )
                 #
index ef6303b4a6dc4f1ef9716591f6978264ba6040dc..de32f7e2a015ad431b6bf7c07b9134b0b630f2af 100644 (file)
@@ -71,7 +71,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 "WeightedLeastSquares", "WLS",
                 "LeastSquares", "LS", "L2",
                 "AbsoluteValue", "L1",
-                "MaximumError", "ME",
+                "MaximumError", "ME", "Linf",
                 ],
             )
         self.defineRequiredParameter(
@@ -198,7 +198,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             elif QualityMeasure in ["AbsoluteValue","L1"]:
                 Jb  = 0.
                 Jo  = numpy.sum( numpy.abs(_Innovation) )
-            elif QualityMeasure in ["MaximumError","ME"]:
+            elif QualityMeasure in ["MaximumError","ME", "Linf"]:
                 Jb  = 0.
                 Jo  = numpy.max( numpy.abs(_Innovation) )
             #
index 2b3b1b439b934f79ab4f997d52be3f07a6972b8b..a82bb1af5719a5db5ea40655058d73936c114b5f 100644 (file)
@@ -681,6 +681,8 @@ class Algorithm(object):
             - CurrentOptimum : état optimal courant lors d'itérations
             - CurrentState : état courant lors d'itérations
             - CurrentStepNumber : pas courant d'avancement dans les algorithmes en évolution, à partir de 0
+            - ForecastCovariance : covariance de l'état prédit courant lors d'itérations
+            - ForecastState : état prédit courant lors d'itérations
             - GradientOfCostFunctionJ  : gradient de la fonction-coût globale
             - GradientOfCostFunctionJb : gradient de la partie ébauche de la fonction-coût
             - GradientOfCostFunctionJo : gradient de la partie observations de la fonction-coût
@@ -694,8 +696,6 @@ class Algorithm(object):
             - MahalanobisConsistency : indicateur de consistance des covariances
             - OMA : Observation moins Analyse : Y - Xa
             - OMB : Observation moins Background : Y - Xb
-            - ForecastCovariance : covariance de l'état prédit courant lors d'itérations
-            - ForecastState : état prédit courant lors d'itérations
             - Residu : dans le cas des algorithmes de vérification
             - SampledStateForQuantiles : échantillons d'états pour l'estimation des quantiles
             - SigmaBck2 : indicateur de correction optimale des erreurs d'ébauche