]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Code improvements for warning on iteration control
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 31 Mar 2022 18:27:35 +0000 (20:27 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Thu, 31 Mar 2022 18:27:35 +0000 (20:27 +0200)
src/daComposant/daAlgorithms/3DVAR.py
src/daComposant/daAlgorithms/4DVAR.py
src/daComposant/daAlgorithms/DerivativeFreeOptimization.py
src/daComposant/daAlgorithms/DifferentialEvolution.py
src/daComposant/daAlgorithms/NonLinearLeastSquares.py
src/daComposant/daAlgorithms/ParticleSwarmOptimization.py
src/daComposant/daAlgorithms/QuantileRegression.py
src/daComposant/daAlgorithms/TabuSearch.py
src/daComposant/daCore/BasicObjects.py

index 996c7eca1aed139e3f65ebb4b6fc0d427f67af91..355426b83e1e27f195e02660f02c7e3058613182 100644 (file)
@@ -71,6 +71,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = -1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "CostDecrementTolerance",
index 0a45328040d4552a15bc9447622a0509880bda2c..a18d94dae29d87b33986ff4a6ee3fc58cada7d1f 100644 (file)
@@ -67,6 +67,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = -1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "CostDecrementTolerance",
index 7ad0c038c2e2dfd743ddc84baf70e0f3591d5d7b..9a561c2b77b33d6f978b15d1dd7c3ed8c02e4ce0 100644 (file)
@@ -47,6 +47,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = -1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "MaximumNumberOfFunctionEvaluations",
index df66f0df4b5829a65eb96bc27c9ed1f9b2bcbb09..1a4ed93897dfa839dcdfa3dde57837b59564c6a5 100644 (file)
@@ -55,6 +55,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de générations",
             minval   = 0,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "MaximumNumberOfFunctionEvaluations",
index ffdbb0768fdc63d04d50f1c4ed86df9eb70b217d..e99b0ac8ac4a009d50951066733b88d6221719e1 100644 (file)
@@ -67,6 +67,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = -1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "CostDecrementTolerance",
index 808de355c7247777e22496de021123e623048fb3..1a0402d9256d0e4e9c9230abfc9e8bac168b5b4e 100644 (file)
@@ -33,6 +33,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = 0,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "MaximumNumberOfFunctionEvaluations",
index 6f675383a44061e91b401a2407d80cd49d7425b9..3c13072501f0a25abe4acf11dfc76ee53a3d6b96 100644 (file)
@@ -49,6 +49,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = 1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "CostDecrementTolerance",
index 09b4bd856a4a7c2513b71e9183d6b17042622b67..ef6303b4a6dc4f1ef9716591f6978264ba6040dc 100644 (file)
@@ -33,6 +33,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             typecast = int,
             message  = "Nombre maximal de pas d'optimisation",
             minval   = 1,
+            oldname  = "MaximumNumberOfSteps",
             )
         self.defineRequiredParameter(
             name     = "SetSeed",
index 4b435c6e50d180183ee471474d262107b0ec6662..a2199378ecca3b436b2d3c9a7f9cb06b41758bda 100644 (file)
@@ -32,6 +32,7 @@ import logging
 import copy
 import time
 import numpy
+import warnings
 from functools import partial
 from daCore import Persistence, PlatformInfo, Interfaces
 from daCore import Templates
@@ -662,6 +663,7 @@ class Algorithm(object):
         self.__variable_names_not_public = {"nextStep":False} # Duplication dans AlgorithmAndParameters
         self.__canonical_parameter_name = {} # Correspondance "lower"->"correct"
         self.__canonical_stored_name = {}    # Correspondance "lower"->"correct"
+        self.__replace_by_the_new_name = {}  # Nouveau nom à partir d'un nom ancien
         #
         self.StoredVariables = {}
         self.StoredVariables["APosterioriCorrelations"]              = Persistence.OneMatrix(name = "APosterioriCorrelations")
@@ -905,7 +907,7 @@ class Algorithm(object):
         """
         raise NotImplementedError("Mathematical assimilation calculation has not been implemented!")
 
-    def defineRequiredParameter(self, name = None, default = None, typecast = None, message = None, minval = None, maxval = None, listval = None, listadv = None):
+    def defineRequiredParameter(self, name = None, default = None, typecast = None, message = None, minval = None, maxval = None, listval = None, listadv = None, oldname = None):
         """
         Permet de définir dans l'algorithme des paramètres requis et leurs
         caractéristiques par défaut.
@@ -921,8 +923,12 @@ class Algorithm(object):
             "listval"  : listval,
             "listadv"  : listadv,
             "message"  : message,
+            "oldname"  : oldname,
             }
         self.__canonical_parameter_name[name.lower()] = name
+        if oldname is not None:
+            self.__canonical_parameter_name[oldname.lower()] = name # Conversion
+            self.__replace_by_the_new_name[oldname.lower()] = name
         logging.debug("%s %s (valeur par défaut = %s)", self._name, message, self.setParameterValue(name))
 
     def getRequiredParameters(self, noDetails=True):
@@ -1008,6 +1014,13 @@ class Algorithm(object):
                 __inverse_fromDico_keys[self.__canonical_parameter_name[k.lower()]] = k
         #~ __inverse_fromDico_keys = dict([(self.__canonical_parameter_name[k.lower()],k) for k in fromDico.keys()])
         __canonic_fromDico_keys = __inverse_fromDico_keys.keys()
+        #
+        for k in __inverse_fromDico_keys.values():
+            if k.lower() in self.__replace_by_the_new_name:
+                __newk = self.__replace_by_the_new_name[k.lower()]
+                __msg = "the parameter '%s' used in '%s' algorithm case is deprecated and has to be replaced by '%s'. Please update your code."%(k,self._name,__newk)
+                warnings.warn(__msg, FutureWarning, stacklevel=50)
+        #
         for k in self.__required_parameters.keys():
             if k in __canonic_fromDico_keys:
                 self._parameters[k] = self.setParameterValue(k,fromDico[__inverse_fromDico_keys[k]])