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.
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.
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
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
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
"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
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
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
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
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
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
"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
)
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"],
#
# 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.
# 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"]):