]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Improving output for function repetition algorithm
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 25 Jun 2013 20:31:32 +0000 (22:31 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 25 Jun 2013 20:31:32 +0000 (22:31 +0200)
doc/en/reference.rst
src/daComposant/daAlgorithms/FunctionRepetitionTest.py
src/daComposant/daAlgorithms/FunctionTest.py

index f2261fb0b5231fa7888274e1fb4a704a07498a8d..8260b750b4c304c72ceac754d845e42999925f2a 100644 (file)
@@ -739,9 +739,13 @@ each algorithm, the required commands/keywords are given, being described in
     *"CheckingPoint",
     "ObservationOperator"*
 
+  NumberOfPrintedDigits
+    This key indicates the number of digits of precision for floating point
+    printed output. The default is 8, with a minimum of 0.
+
   NumberOfRepetition
     This key indicates the number of time to repeat the function evaluation. The
-    default is 2.
+    default is 2, with a minimum of 1.
   
   SetDebug
     This key requires the activation, or not, of the debug mode during the
index 53eefefc92edfbc46b067ffa8da059e5443f927e..080bdefae6c7a0a0a9976e4f335881463eb60d50 100644 (file)
@@ -24,12 +24,19 @@ import logging
 from daCore import BasicObjects, PlatformInfo
 m = PlatformInfo.SystemUsage()
 
-import numpy
+import numpy, copy
 
 # ==============================================================================
 class ElementaryAlgorithm(BasicObjects.Algorithm):
     def __init__(self):
         BasicObjects.Algorithm.__init__(self, "FUNCTIONREPETITIONTEST")
+        self.defineRequiredParameter(
+            name     = "NumberOfPrintedDigits",
+            default  = 8,
+            typecast = int,
+            message  = "Nombre de chiffres affichés pour les impressions de réels",
+            minval   = 0,
+            )
         self.defineRequiredParameter(
             name     = "NumberOfRepetition",
             default  = 2,
@@ -61,6 +68,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         Xn = numpy.asmatrix(numpy.ravel( Xb )).T
         #
         # ----------
+        _p = self._parameters["NumberOfPrintedDigits"]
         if len(self._parameters["ResultTitle"]) > 0:
             msg  = "     ====" + "="*len(self._parameters["ResultTitle"]) + "====\n"
             msg += "        " + self._parameters["ResultTitle"] + "\n"
@@ -69,14 +77,14 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         #
         msg  = "===> Information before launching:\n"
         msg += "     -----------------------------\n"
-        msg += "     Characteristics of input parameter X, internally converted:\n"
+        msg += "     Characteristics of input vector X, internally converted:\n"
         msg += "       Type...............: %s\n"%type( Xn )
         msg += "       Lenght of vector...: %i\n"%max(numpy.matrix( Xn ).shape)
-        msg += "       Minimum value......: %.5e\n"%numpy.min( Xn )
-        msg += "       Maximum value......: %.5e\n"%numpy.max( Xn )
-        msg += "       Mean of vector.....: %.5e\n"%numpy.mean( Xn )
-        msg += "       Standard error.....: %.5e\n"%numpy.std( Xn )
-        msg += "       L2 norm of vector..: %.5e\n"%numpy.linalg.norm( Xn )
+        msg += ("       Minimum value......: %."+str(_p)+"e\n")%numpy.min( Xn )
+        msg += ("       Maximum value......: %."+str(_p)+"e\n")%numpy.max( Xn )
+        msg += ("       Mean of vector.....: %."+str(_p)+"e\n")%numpy.mean( Xn )
+        msg += ("       Standard error.....: %."+str(_p)+"e\n")%numpy.std( Xn )
+        msg += ("       L2 norm of vector..: %."+str(_p)+"e\n")%numpy.linalg.norm( Xn )
         print(msg)
         #
         if self._parameters["SetDebug"]:
@@ -87,6 +95,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             print("===> Beginning of evaluation, without activating debug\n")
         #
         # ----------
+        Ys = []
         for i in range(self._parameters["NumberOfRepetition"]):
             print("     %s\n"%("-"*75,))
             print("===> Repetition step number %i on a total of %i\n"%(i+1,self._parameters["NumberOfRepetition"]))
@@ -98,21 +107,49 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             #
             msg  = "===> Information after launching:\n"
             msg += "     ----------------------------\n"
-            msg += "     Characteristics of output parameter Y, to compare to other calculations:\n"
+            msg += "     Characteristics of output vector Y, to compare to other calculations:\n"
             msg += "       Type...............: %s\n"%type( Y )
             msg += "       Lenght of vector...: %i\n"%max(numpy.matrix( Y ).shape)
-            msg += "       Minimum value......: %.5e\n"%numpy.min( Y )
-            msg += "       Maximum value......: %.5e\n"%numpy.max( Y )
-            msg += "       Mean of vector.....: %.5e\n"%numpy.mean( Y )
-            msg += "       Standard error.....: %.5e\n"%numpy.std( Y )
-            msg += "       L2 norm of vector..: %.5e\n"%numpy.linalg.norm( Y )
+            msg += ("       Minimum value......: %."+str(_p)+"e\n")%numpy.min( Y )
+            msg += ("       Maximum value......: %."+str(_p)+"e\n")%numpy.max( Y )
+            msg += ("       Mean of vector.....: %."+str(_p)+"e\n")%numpy.mean( Y )
+            msg += ("       Standard error.....: %."+str(_p)+"e\n")%numpy.std( Y )
+            msg += ("       L2 norm of vector..: %."+str(_p)+"e\n")%numpy.linalg.norm( Y )
             print(msg)
+            #
+            Ys.append( copy.copy( numpy.ravel(Y) ) )
         #
         print("     %s\n"%("-"*75,))
         if self._parameters["SetDebug"]:
             print("===> End evaluation, deactivating debug if necessary\n")
             logging.getLogger().setLevel(CUR_LEVEL)
         #
+        msg  = ("     %s\n"%("-"*75,))
+        msg += ("\n===> Statistical analysis of the outputs obtained throught repeated evaluations\n")
+        Yy = numpy.array( Ys )
+        msg += ("\n     Characteristics of the whole set of outputs Y:\n")
+        msg += ("       Number of evaluations.........................: %i\n")%len( Ys )
+        msg += ("       Minimum value of the whole set of outputs.....: %."+str(_p)+"e\n")%numpy.min( Yy )
+        msg += ("       Maximum value of the whole set of outputs.....: %."+str(_p)+"e\n")%numpy.max( Yy )
+        msg += ("       Mean of vector of the whole set of outputs....: %."+str(_p)+"e\n")%numpy.mean( Yy )
+        msg += ("       Standard error of the whole set of outputs....: %."+str(_p)+"e\n")%numpy.std( Yy )
+        Ym = numpy.mean( numpy.array( Ys ), axis=0 )
+        msg += ("\n     Characteristics of the vector Ym, mean of the outputs Y:\n")
+        msg += ("       Size of the mean of the outputs...............: %i\n")%Ym.size
+        msg += ("       Minimum value of the mean of the outputs......: %."+str(_p)+"e\n")%numpy.min( Ym )
+        msg += ("       Maximum value of the mean of the outputs......: %."+str(_p)+"e\n")%numpy.max( Ym )
+        msg += ("       Mean of the mean of the outputs...............: %."+str(_p)+"e\n")%numpy.mean( Ym )
+        msg += ("       Standard error of the mean of the outputs.....: %."+str(_p)+"e\n")%numpy.std( Ym )
+        Ye = numpy.mean( numpy.array( Ys ) - Ym, axis=0 )
+        msg += "\n     Characteristics of the mean of the differences between the outputs Y and their mean Ym:\n"
+        msg += ("       Size of the mean of the differences...........: %i\n")%Ym.size
+        msg += ("       Minimum value of the mean of the differences..: %."+str(_p)+"e\n")%numpy.min( Ye )
+        msg += ("       Maximum value of the mean of the differences..: %."+str(_p)+"e\n")%numpy.max( Ye )
+        msg += ("       Mean of the mean of the differences...........: %."+str(_p)+"e\n")%numpy.mean( Ye )
+        msg += ("       Standard error of the mean of the differences.: %."+str(_p)+"e\n")%numpy.std( Ye )
+        msg += ("\n     %s\n"%("-"*75,))
+        print(msg)
+        #
         logging.debug("%s Taille mémoire utilisée de %.1f Mo"%(self._name, m.getUsedMemory("M")))
         logging.debug("%s Terminé"%self._name)
         #
index f19ec16de56a100fd6ba9dca01acf1a35ea88459..059a6b38e190a282e202b7198969c9434ef35974 100644 (file)
@@ -62,7 +62,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         #
         msg  = "===> Information before launching:\n"
         msg += "     -----------------------------\n"
-        msg += "     Characteristics of input parameter X, internally converted:\n"
+        msg += "     Characteristics of input vector X, internally converted:\n"
         msg += "       Type...............: %s\n"%type( Xn )
         msg += "       Lenght of vector...: %i\n"%max(numpy.matrix( Xn ).shape)
         msg += "       Minimum value......: %.5e\n"%numpy.min( Xn )
@@ -86,7 +86,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         #
         msg  = "===> Information after launching:\n"
         msg += "     ----------------------------\n"
-        msg += "     Characteristics of output parameter Y, to compare to observation:\n"
+        msg += "     Characteristics of output vector Y, to compare to observation:\n"
         msg += "       Type...............: %s\n"%type( Y )
         msg += "       Lenght of vector...: %i\n"%max(numpy.matrix( Y ).shape)
         msg += "       Minimum value......: %.5e\n"%numpy.min( Y )