]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Correction and improvement of memory footprint
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 26 Mar 2019 19:25:04 +0000 (20:25 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 26 Mar 2019 19:38:52 +0000 (20:38 +0100)
doc/fr/ref_observers_requirements.rst
src/daComposant/daAlgorithms/EnsembleKalmanFilter.py

index de4419879e0dfc5f0e8ce232936408c75d8275e9..361058061bfae57cfe1e78b83d91c4e160a4a82b 100644 (file)
@@ -101,7 +101,7 @@ Inventaire des modèles d'*observer* disponibles ("*Template*")
 .. index:: single: ValuePrinter (Observer)
 
 Modèle **ValuePrinter** :
-..........................
+.........................
 
 Imprime sur la sortie standard la valeur courante de la variable.
 
@@ -112,7 +112,7 @@ Imprime sur la sortie standard la valeur courante de la variable.
 .. index:: single: ValueAndIndexPrinter (Observer)
 
 Modèle **ValueAndIndexPrinter** :
-..................................
+.................................
 
 Imprime sur la sortie standard la valeur courante de la variable, en ajoutant son index.
 
@@ -123,7 +123,7 @@ Imprime sur la sortie standard la valeur courante de la variable, en ajoutant so
 .. index:: single: ValueSeriePrinter (Observer)
 
 Modèle **ValueSeriePrinter** :
-...............................
+..............................
 
 Imprime sur la sortie standard la série des valeurs de la variable.
 
@@ -134,7 +134,7 @@ Imprime sur la sortie standard la série des valeurs de la variable.
 .. index:: single: ValueSaver (Observer)
 
 Modèle **ValueSaver** :
-........................
+.......................
 
 Enregistre la valeur courante de la variable dans un fichier du répertoire '/tmp' nommé 'value...txt' selon le nom de la variable et l'étape d'enregistrement.
 
@@ -155,7 +155,7 @@ Enregistre la valeur courante de la variable dans un fichier du répertoire '/tm
 .. index:: single: ValueSerieSaver (Observer)
 
 Modèle **ValueSerieSaver** :
-.............................
+............................
 
 Enregistre la série des valeurs de la variable dans un fichier du répertoire '/tmp' nommé 'value...txt' selon le nom de la variable et l'étape.
 
@@ -176,7 +176,7 @@ Enregistre la série des valeurs de la variable dans un fichier du répertoire '
 .. index:: single: ValuePrinterAndSaver (Observer)
 
 Modèle **ValuePrinterAndSaver** :
-..................................
+.................................
 
 Imprime sur la sortie standard et, en même temps enregistre dans un fichier du répertoire '/tmp', la valeur courante de la variable.
 
@@ -198,7 +198,7 @@ Imprime sur la sortie standard et, en même temps enregistre dans un fichier du
 .. index:: single: ValueIndexPrinterAndSaver (Observer)
 
 Modèle **ValueIndexPrinterAndSaver** :
-.......................................
+......................................
 
 Imprime sur la sortie standard et, en même temps enregistre dans un fichier du répertoire '/tmp', la valeur courante de la variable, en ajoutant son index.
 
@@ -220,7 +220,7 @@ Imprime sur la sortie standard et, en même temps enregistre dans un fichier du
 .. index:: single: ValueSeriePrinterAndSaver (Observer)
 
 Modèle **ValueSeriePrinterAndSaver** :
-.......................................
+......................................
 
 Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du répertoire '/tmp', la série des valeurs de la variable.
 
@@ -242,7 +242,7 @@ Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du
 .. index:: single: ValueGnuPlotter (Observer)
 
 Modèle **ValueGnuPlotter** :
-.............................
+............................
 
 Affiche graphiquement avec Gnuplot la valeur courante de la variable.
 
@@ -264,7 +264,7 @@ Affiche graphiquement avec Gnuplot la valeur courante de la variable.
 .. index:: single: ValueSerieGnuPlotter (Observer)
 
 Modèle **ValueSerieGnuPlotter** :
-..................................
+.................................
 
 Affiche graphiquement avec Gnuplot la série des valeurs de la variable.
 
@@ -286,7 +286,7 @@ Affiche graphiquement avec Gnuplot la série des valeurs de la variable.
 .. index:: single: ValuePrinterAndGnuPlotter (Observer)
 
 Modèle **ValuePrinterAndGnuPlotter** :
-.......................................
+......................................
 
 Imprime sur la sortie standard et, en même temps, affiche graphiquement avec Gnuplot la valeur courante de la variable.
 
@@ -309,7 +309,7 @@ Imprime sur la sortie standard et, en même temps, affiche graphiquement avec Gn
 .. index:: single: ValueSeriePrinterAndGnuPlotter (Observer)
 
 Modèle **ValueSeriePrinterAndGnuPlotter** :
-............................................
+...........................................
 
 Imprime sur la sortie standard et, en même temps, affiche graphiquement avec Gnuplot la série des valeurs de la variable.
 
@@ -332,7 +332,7 @@ Imprime sur la sortie standard et, en même temps, affiche graphiquement avec Gn
 .. index:: single: ValuePrinterSaverAndGnuPlotter (Observer)
 
 Modèle **ValuePrinterSaverAndGnuPlotter** :
-............................................
+...........................................
 
 Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du répertoire '/tmp' et affiche graphiquement la valeur courante de la variable .
 
@@ -365,7 +365,7 @@ Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du
 .. index:: single: ValueSeriePrinterSaverAndGnuPlotter (Observer)
 
 Modèle **ValueSeriePrinterSaverAndGnuPlotter** :
-.................................................
+................................................
 
 Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du répertoire '/tmp' et affiche graphiquement la série des valeurs de la variable.
 
@@ -398,7 +398,7 @@ Imprime sur la sortie standard et, en même temps, enregistre dans un fichier du
 .. index:: single: ValueMean (Observer)
 
 Modèle **ValueMean** :
-.......................
+......................
 
 Imprime sur la sortie standard la moyenne de la valeur courante de la variable.
 
@@ -410,7 +410,7 @@ Imprime sur la sortie standard la moyenne de la valeur courante de la variable.
 .. index:: single: ValueStandardError (Observer)
 
 Modèle **ValueStandardError** :
-................................
+...............................
 
 Imprime sur la sortie standard l'écart-type de la valeur courante de la variable.
 
@@ -422,7 +422,7 @@ Imprime sur la sortie standard l'écart-type de la valeur courante de la variabl
 .. index:: single: ValueVariance (Observer)
 
 Modèle **ValueVariance** :
-...........................
+..........................
 
 Imprime sur la sortie standard la variance de la valeur courante de la variable.
 
@@ -434,7 +434,7 @@ Imprime sur la sortie standard la variance de la valeur courante de la variable.
 .. index:: single: ValueL2Norm (Observer)
 
 Modèle **ValueL2Norm** :
-.........................
+........................
 
 Imprime sur la sortie standard la norme L2 de la valeur courante de la variable.
 
@@ -447,7 +447,7 @@ Imprime sur la sortie standard la norme L2 de la valeur courante de la variable.
 .. index:: single: ValueRMS (Observer)
 
 Modèle **ValueRMS** :
-......................
+.....................
 
 Imprime sur la sortie standard la racine de la moyenne des carrés (RMS), ou moyenne quadratique, de la valeur courante de la variable.
 
index 19e808e1714e4c866275fdbcd18eab7a2f022ce3..e65ede606b42c00ed550ab5bc02a2bbaf3ab4f9b 100644 (file)
@@ -181,26 +181,21 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             #
             Xfm = numpy.asmatrix(numpy.ravel(Xn_predicted.mean(axis=1, dtype=mfp))).T
             Hfm = numpy.asmatrix(numpy.ravel(HX_predicted.mean(axis=1, dtype=mfp))).T
-            Af  = Xn_predicted - Xfm
-            Hf  = HX_predicted - Hfm
             #
             PfHT, HPfHT = 0., 0.
             for i in range(__m):
-                PfHT  += Af[:,i] * Hf[:,i].T
-                HPfHT += Hf[:,i] * Hf[:,i].T
+                Exfi = Xn_predicted[:,i] - Xfm
+                Eyfi = HX_predicted[:,i] - Hfm
+                PfHT  += Exfi * Eyfi.T
+                HPfHT += Eyfi * Eyfi.T
             PfHT  = (1./(__m-1)) * PfHT
             HPfHT = (1./(__m-1)) * HPfHT
+            K     = PfHT * ( R + HPfHT ).I
+            del PfHT, HPfHT
             #
-            K = PfHT * ( R + HPfHT ).I
-            #
-            Yo = numpy.asmatrix(numpy.zeros((__p,__m)))
             for i in range(__m):
                 ri = numpy.asmatrix(numpy.random.multivariate_normal(numpy.zeros(__p), Rn)).T
-                Yo[:,i] = Ynpu + ri
-            #
-            for i in range(__m):
-                Xn[:,i] = Xn_predicted[:,i] + K * (Yo[:,i] - HX_predicted[:,i])
-            del PfHT, HPfHT
+                Xn[:,i] = Xn_predicted[:,i] + K * (Ynpu + ri - HX_predicted[:,i])
             #
             Xa = Xn.mean(axis=1, dtype=mfp)
             #
@@ -268,13 +263,11 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 if self._toStore("CostFunctionJAtCurrentOptimum"):
                     self.StoredVariables["CostFunctionJAtCurrentOptimum" ].store( self.StoredVariables["CostFunctionJ" ][IndexMin] )
             if self._toStore("APosterioriCovariance"):
-                Ht = HO["Tangent"].asMatrix(ValueForMethodForm = Xa)
-                Ht = Ht.reshape(__p,__n) # ADAO & check shape
-                Pf = 0.
+                Pn = 0.
                 for i in range(__m):
-                    Pf += Af[:,i] * Af[:,i].T
-                Pf = (1./(__m-1)) * Pf
-                Pn = (1. - K * Ht) * Pf
+                    Eai = Xn[:,i] - Xa
+                    Pn += Eai * Eai.T
+                Pn  = (1./(__m-1)) * Pn
                 self.StoredVariables["APosterioriCovariance"].store( Pn )
             if self._parameters["EstimationOf"] == "Parameters" \
                 and J < previousJMinimum: