From 750f2eadf871869458716e13d007d934972f76c9 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Tue, 27 May 2014 22:23:19 +0200 Subject: [PATCH] Documentation minor corrections and improvements --- doc/en/reference.rst | 35 ++++++++++------ doc/fr/reference.rst | 40 ++++++++++++------- .../daAlgorithms/ParticleSwarmOptimization.py | 20 +++++----- 3 files changed, 59 insertions(+), 36 deletions(-) diff --git a/doc/en/reference.rst b/doc/en/reference.rst index 76b8746..1acc0a0 100644 --- a/doc/en/reference.rst +++ b/doc/en/reference.rst @@ -367,7 +367,7 @@ acronyms or particular names can be found in the :ref:`genindex` or the Bounds This key allows to define upper and lower bounds for every state variable - being optimized. Bounds can be given by a list of list of pairs of + being optimized. Bounds have to be given by a list of list of pairs of lower/upper bounds for each variable, with possibly ``None`` every time there is no bound. The bounds can always be specified, but they are taken into account only by the constrained optimizers. @@ -430,7 +430,7 @@ acronyms or particular names can be found in the :ref:`genindex` or the Bounds This key allows to define upper and lower bounds for every state variable - being optimized. Bounds can be given by a list of list of pairs of + being optimized. Bounds have to be given by a list of list of pairs of lower/upper bounds for each variable, with possibly ``None`` every time there is no bound. The bounds can always be specified, but they are taken into account only by the constrained optimizers. @@ -521,10 +521,9 @@ acronyms or particular names can be found in the :ref:`genindex` or the Bounds This key allows to define upper and lower bounds for every state variable - being optimized. Bounds can be given by a list of list of pairs of + being optimized. Bounds have to be given by a list of list of pairs of lower/upper bounds for each variable, with extreme values every time there - is no bound. The bounds can always be specified, but they are taken into - account only by the constrained optimizers. + is no bound (``None`` is not allowed when there is no bound). ConstrainedBy This key allows to define the method to take bounds into account. The @@ -557,10 +556,9 @@ acronyms or particular names can be found in the :ref:`genindex` or the Bounds This key allows to define upper and lower bounds for every state variable - being optimized. Bounds can be given by a list of list of pairs of + being optimized. Bounds have to be given by a list of list of pairs of lower/upper bounds for each variable, with extreme values every time there - is no bound. The bounds can always be specified, but they are taken into - account only by the constrained optimizers. + is no bound (``None`` is not allowed when there is no bound). ConstrainedBy This key allows to define the method to take bounds into account. The @@ -618,11 +616,19 @@ acronyms or particular names can be found in the :ref:`genindex` or the QualityCriterion This key indicates the quality criterion, minimized to find the optimal state estimate. The default is the usual data assimilation criterion named - "DA", the augmented weighted least squares. The possible criteria has to - be in the following list, where the equivalent names are indicated by "=": - ["AugmentedPonderatedLeastSquares"="APLS"="DA", - "PonderatedLeastSquares"="PLS", "LeastSquares"="LS"="L2", + "DA", the augmented weighted least squares. The possible criteria has to be + in the following list, where the equivalent names are indicated by the sign + "=": ["AugmentedWeightedLeastSquares"="AWLS"="DA", + "WeightedLeastSquares"="WLS", "LeastSquares"="LS"="L2", "AbsoluteValue"="L1", "MaximumError"="ME"] + + BoxBounds + This key allows to define upper and lower bounds for *increments* on every + state variable being optimized (and not on state variables themselves). + Bounds have to be given by a list of list of pairs of lower/upper bounds for + each increment on variable, with extreme values every time there is no bound + (``None`` is not allowed when there is no bound). This key is required and + there is no default values. SetSeed This key allow to give an integer in order to fix the seed of the random @@ -791,6 +797,11 @@ for example:: "EpsilonMinimumExponent" : -8, } +To give the "*AlgorithmParameters*" values by string, one must enclose a +standard dictionary definition between simple quotes, as for example:: + + '{"AmplitudeOfInitialDirection" : 1, "EpsilonMinimumExponent" : -8}' + If an option is specified by the user for an algorithm that doesn't support it, the option is simply left unused and don't stop the treatment. The meaning of the acronyms or particular names can be found in the :ref:`genindex` or the diff --git a/doc/fr/reference.rst b/doc/fr/reference.rst index b2cfce3..bbd5b12 100644 --- a/doc/fr/reference.rst +++ b/doc/fr/reference.rst @@ -387,7 +387,7 @@ trouv Bounds Cette clé permet de définir des bornes supérieure et inférieure pour - chaque variable d'état optimisée. Les bornes peuvent être données par une + chaque variable d'état optimisée. Les bornes doivent être données par une liste de liste de paires de bornes inférieure/supérieure pour chaque variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous @@ -453,7 +453,7 @@ trouv Bounds Cette clé permet de définir des bornes supérieure et inférieure pour - chaque variable d'état optimisée. Les bornes peuvent être données par une + chaque variable d'état optimisée. Les bornes doivent être données par une liste de liste de paires de bornes inférieure/supérieure pour chaque variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous @@ -548,11 +548,10 @@ trouv Bounds Cette clé permet de définir des bornes supérieure et inférieure pour chaque - variable d'état optimisée. Les bornes peuvent être données par une liste de + variable d'état optimisée. Les bornes doivent être données par une liste de liste de paires de bornes inférieure/supérieure pour chaque variable, avec - une valeur extrême chaque fois qu'il n'y a pas de borne. Les bornes peuvent - toujours être spécifiées, mais seuls les optimiseurs sous contraintes les - prennent en compte. + une valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas + une valeur autorisée lorsqu'il n'y a pas de borne). ConstrainedBy Cette clé permet de définir la méthode pour prendre en compte les bornes. Les @@ -585,11 +584,10 @@ trouv Bounds Cette clé permet de définir des bornes supérieure et inférieure pour chaque - variable d'état optimisée. Les bornes peuvent être données par une liste de + variable d'état optimisée. Les bornes doivent être données par une liste de liste de paires de bornes inférieure/supérieure pour chaque variable, avec - une valeur extrême chaque fois qu'il n'y a pas de borne. Les bornes peuvent - toujours être spécifiées, mais seuls les optimiseurs sous contraintes les - prennent en compte. + une valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas + une valeur autorisée lorsqu'il n'y a pas de borne). ConstrainedBy Cette clé permet de définir la méthode pour prendre en compte les bornes. Les @@ -651,10 +649,18 @@ trouv l'estimation optimale de l'état. Le défaut est le critère usuel de l'assimilation de données nommé "DA", qui est le critère de moindres carrés pondérés augmentés. Les critères possibles sont dans la liste suivante, dans - laquelle les noms équivalents sont indiqués par "=" : - ["AugmentedPonderatedLeastSquares"="APLS"="DA", - "PonderatedLeastSquares"="PLS", "LeastSquares"="LS"="L2", - "AbsoluteValue"="L1", "MaximumError"="ME"] + laquelle les noms équivalents sont indiqués par un signe "=" : + ["AugmentedWeightedLeastSquares"="AWLS"="DA", "WeightedLeastSquares"="WLS", + "LeastSquares"="LS"="L2", "AbsoluteValue"="L1", "MaximumError"="ME"] + + BoxBounds + Cette clé permet de définir des bornes supérieure et inférieure pour chaque + incrément de variable d'état optimisée (et non pas chaque variable d'état + elle-même). Les bornes doivent être données par une liste de liste de paires + de bornes inférieure/supérieure pour chaque incrément de variable, avec une + valeur extrême chaque fois qu'il n'y a pas de borne (``None`` n'est pas une + valeur autorisée lorsqu'il n'y a pas de borne). Cette clé est requise et il + n'y a pas de valeurs par défaut. SetSeed Cette clé permet de donner un nombre entier pour fixer la graine du @@ -830,6 +836,12 @@ g "EpsilonMinimumExponent" : -8, } +Pour donner les valeurs de la commande "*AlgorithmParameters*" par une chaîne de +caractères, on doit utiliser des guillemets simples pour fournir une définition +standard de dictionnaire, comme par exemple:: + + '{"AmplitudeOfInitialDirection" : 1, "EpsilonMinimumExponent" : -8}' + Si une option est spécifiée par l'utilisateur pour un algorithme qui ne la supporte pas, cette option est simplement laissée inutilisée et ne bloque pas le traitement. La signification des acronymes ou des noms particuliers peut être diff --git a/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py b/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py index 706e995..862c350 100644 --- a/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py +++ b/src/daComposant/daAlgorithms/ParticleSwarmOptimization.py @@ -64,11 +64,11 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): ) self.defineRequiredParameter( name = "QualityCriterion", - default = "AugmentedPonderatedLeastSquares", + default = "AugmentedWeightedLeastSquares", typecast = str, message = "Critère de qualité utilisé", - listval = ["AugmentedPonderatedLeastSquares","APLS","DA", - "PonderatedLeastSquares","PLS", + listval = ["AugmentedWeightedLeastSquares","AWLS","AugmentedPonderatedLeastSquares","APLS","DA", + "WeightedLeastSquares","WLS","PonderatedLeastSquares","PLS", "LeastSquares","LS","L2", "AbsoluteValue","L1", "MaximumError","ME"], @@ -118,18 +118,18 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): # # Définition de la fonction-coût # ------------------------------ - def CostFunction(x, QualityMeasure="AugmentedPonderatedLeastSquares"): + def CostFunction(x, QualityMeasure="AugmentedWeightedLeastSquares"): _X = numpy.asmatrix(numpy.ravel( x )).T _HX = Hm( _X ) _HX = numpy.asmatrix(numpy.ravel( _HX )).T # - if QualityMeasure in ["AugmentedPonderatedLeastSquares","APLS","DA"]: + if QualityMeasure in ["AugmentedWeightedLeastSquares","AWLS","AugmentedPonderatedLeastSquares","APLS","DA"]: if BI is None or RI is None: raise ValueError("Background and Observation error covariance matrix has to be properly defined!") Jb = 0.5 * (_X - Xb).T * BI * (_X - Xb) Jo = 0.5 * (Y - _HX).T * RI * (Y - _HX) J = float( Jb ) + float( Jo ) - elif QualityMeasure in ["PonderatedLeastSquares","PLS"]: + elif QualityMeasure in ["WeightedLeastSquares","WLS","PonderatedLeastSquares","PLS"]: if RI is None: raise ValueError("Observation error covariance matrix has to be properly defined!") Jb = 0. @@ -162,24 +162,24 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): # Initialisation des bornes # ------------------------- SpaceUp = BoxBounds[:,1] + Xini - Spacelow = BoxBounds[:,0] + Xini + SpaceLow = BoxBounds[:,0] + Xini nbparam = len(SpaceUp) # # Initialisation de l'essaim # -------------------------- - LimitVelocity = numpy.abs(SpaceUp-Spacelow) + LimitVelocity = numpy.abs(SpaceUp-SpaceLow) # PosInsect = [] VelocityInsect = [] for i in range(nbparam) : - PosInsect.append(numpy.random.uniform(low=Spacelow[i], high=SpaceUp[i], size=self._parameters["NumberOfInsects"])) + PosInsect.append(numpy.random.uniform(low=SpaceLow[i], high=SpaceUp[i], size=self._parameters["NumberOfInsects"])) VelocityInsect.append(numpy.random.uniform(low=-LimitVelocity[i], high=LimitVelocity[i], size=self._parameters["NumberOfInsects"])) VelocityInsect = numpy.matrix(VelocityInsect) PosInsect = numpy.matrix(PosInsect) # BestPosInsect = numpy.array(PosInsect) qBestPosInsect = [] - Best = copy.copy(Spacelow) + Best = copy.copy(SpaceLow) qBest = CostFunction(Best,self._parameters["QualityCriterion"]) # for i in range(self._parameters["NumberOfInsects"]): -- 2.39.2