.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. index:: single: Bounds
Bounds
- *List of pairs of real values*. This key allows to define upper and lower
- bounds for every state variable 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 (``None`` is not allowed when there is no
- bound).
+ *List of pairs of real values*. This key allows to define pairs of upper and
+ lower bounds for every state variable 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 (``None`` is not allowed
+ when there is no bound).
Example:
``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,1.e99],[-1.e99,1.e99]]}``
.. index:: single: Bounds
Bounds
- *List of pairs of real values*. This key allows to define upper and lower
- bounds for every state variable 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.
+ *List of pairs of real values*. This key allows to define pairs of upper and
+ lower bounds for every state variable 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.
Example:
``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
.. index:: single: BoxBounds
BoxBounds
- *List of pairs of real values*. 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
+ *List of pairs of real values*. This key allows to define pairs of 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.
--- /dev/null
+.. index:: single: StateBoundsForQuantiles
+
+StateBoundsForQuantiles
+ *List of pairs of real values*. This key allows to define pairs of upper and
+ lower bounds for every state variable used for quantile simulations. 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.
+
+ If these bounds are not defined for quantile simulation and if optimization
+ bounds are defined, they are used for quantile simulation. If these bounds
+ for quantile simulation are defined, they are used regardless of the
+ optimization bounds defined. If this variable is set to ``None``, then no
+ bounds are used for the states used in the quantile simulation regardless of
+ the optimization bounds defined.
+
+ Exemple :
+ ``{"StateBoundsForQuantiles":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
.. index:: single: Bounds
Bounds
- *Liste de paires de valeurs réelles*. Cette clé permet de définir des bornes
- supérieure et inférieure pour chaque variable d'état optimisée. Les bornes
- doivent être données par une liste de liste de paires de bornes
+ *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+ de bornes supérieure et inférieure pour 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 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).
.. index:: single: Bounds
Bounds
- *Liste de paires de valeurs réelles*. Cette clé permet de définir des bornes
- supérieure et inférieure pour chaque variable d'état optimisée. Les bornes
- doivent être données par une liste de liste de paires de bornes
+ *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+ de bornes supérieure et inférieure pour 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 contraintes les prennent en compte.
.. index:: single: BoxBounds
BoxBounds
- *Liste de paires de valeurs réelles*. 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.
+ *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+ de 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.
Exemple :
``{"BoxBounds":[[-0.5,0.5], [0.01,2.], [0.,1.e99], [-1.e99,1.e99]]}``
--- /dev/null
+.. index:: single: StateBoundsForQuantiles
+
+StateBoundsForQuantiles
+ *Liste de paires de valeurs réelles*. Cette clé permet de définir des paires
+ de bornes supérieure et inférieure pour chaque variable d'état utilisée dans
+ la simulation des quantiles. 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.
+
+ En l'absence de définition de ces bornes pour la simulation des quantiles et
+ si des bornes d'optimisation sont définies, ce sont ces dernières qui sont
+ utilisées pour la simulation des quantiles. Si ces bornes pour la simulation
+ des quantiles sont définies, elles sont utilisées quelles que soient les
+ bornes d'optimisation définies. Si cette variable est définie à ``None``,
+ alors aucune borne n'est utilisée pour les états utilisés dans la simulation
+ des quantiles quelles que soient les bornes d'optimisation définies.
+
+ Exemple :
+ ``{"StateBoundsForQuantiles":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
message = "Liste des paires de bornes",
)
self.defineRequiredParameter( # Pas de type
- name = "QBounds",
+ name = "StateBoundsForQuantiles",
message = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
)
- self.defineRequiredParameter(
- name = "ConstrainedBy",
- default = "EstimateProjection",
- typecast = str,
- message = "Prise en compte des contraintes",
- listval = ["EstimateProjection"],
- )
self.defineRequiredParameter(
name = "InitializationPoint",
typecast = numpy.ravel,
listval = ["Linear", "NonLinear"]
)
self.defineRequiredParameter( # Pas de type
- name = "QBounds",
+ name = "StateBoundsForQuantiles",
message = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
)
- self.defineRequiredParameter(
- name = "ConstrainedBy",
- default = "EstimateProjection",
- typecast = str,
- message = "Prise en compte des contraintes",
- listval = ["EstimateProjection"],
- )
self.requireInputArguments(
mandatory= ("Xb", "Y", "HO", "R", "B"),
)
listval = ["Linear", "NonLinear"]
)
self.defineRequiredParameter( # Pas de type
- name = "QBounds",
+ name = "StateBoundsForQuantiles",
message = "Liste des paires de bornes pour les états utilisés en estimation des quantiles",
)
- self.defineRequiredParameter(
- name = "ConstrainedBy",
- default = "EstimateProjection",
- typecast = str,
- message = "Prise en compte des contraintes",
- listval = ["EstimateProjection"],
- )
self.requireInputArguments(
mandatory= ("Xb", "Y", "HO", "R", "B"),
)
logging.debug("%s Bounds taken into account"%(self._name,))
else:
self._parameters["Bounds"] = None
- if ("QBounds" in self._parameters) and isinstance(self._parameters["QBounds"], (list, tuple)) and (len(self._parameters["QBounds"]) > 0):
+ if ("StateBoundsForQuantiles" in self._parameters) and isinstance(self._parameters["StateBoundsForQuantiles"], (list, tuple)) and (len(self._parameters["StateBoundsForQuantiles"]) > 0):
logging.debug("%s Bounds for quantiles states taken into account"%(self._name,))
# Attention : contrairement à Bounds, pas de défaut à None, sinon on ne peut pas être sans bornes
#
raise ValueError("The number \"%s\" of bound pairs for the state (X) components is different of the size \"%s\" of the state itself." \
%(len(self.__P["Bounds"]),max(__Xb_shape)))
#
- if ("QBounds" in self.__P) \
- and (isinstance(self.__P["QBounds"], list) or isinstance(self.__P["QBounds"], tuple)) \
- and (len(self.__P["QBounds"]) != max(__Xb_shape)):
+ if ("StateBoundsForQuantiles" in self.__P) \
+ and (isinstance(self.__P["StateBoundsForQuantiles"], list) or isinstance(self.__P["StateBoundsForQuantiles"], tuple)) \
+ and (len(self.__P["StateBoundsForQuantiles"]) != max(__Xb_shape)):
raise ValueError("The number \"%s\" of bound pairs for the quantile state (X) components is different of the size \"%s\" of the state itself." \
- %(len(self.__P["QBounds"]),max(__Xb_shape)))
+ %(len(self.__P["StateBoundsForQuantiles"]),max(__Xb_shape)))
#
return 1
nbsamples = selfA._parameters["NumberOfSamplesForQuantiles"]
#
# Traitement des bornes
- if "QBounds" in selfA._parameters: LBounds = selfA._parameters["QBounds"] # Prioritaire
- else: LBounds = selfA._parameters["Bounds"] # Défaut raisonnable
+ if "StateBoundsForQuantiles" in selfA._parameters:
+ LBounds = selfA._parameters["StateBoundsForQuantiles"] # Prioritaire
+ elif "Bounds" in selfA._parameters:
+ LBounds = selfA._parameters["Bounds"] # Défaut raisonnable
+ else:
+ LBounds = None
if LBounds is not None:
def NoneRemove(paire):
bmin, bmax = paire
for i in range(nbsamples):
if selfA._parameters["SimulationForQuantiles"] == "Linear" and HtM is not None:
dXr = numpy.matrix(numpy.random.multivariate_normal(numpy.ravel(Xa),A) - numpy.ravel(Xa)).T
- if LBounds is not None and selfA._parameters["ConstrainedBy"] == "EstimateProjection":
+ if LBounds is not None: # "EstimateProjection" par défaut
dXr = numpy.max(numpy.hstack((dXr,LBounds[:,0]) - Xa),axis=1)
dXr = numpy.min(numpy.hstack((dXr,LBounds[:,1]) - Xa),axis=1)
dYr = numpy.matrix(numpy.ravel( HtM * dXr )).T
if selfA._toStore("SampledStateForQuantiles"): Xr = Xa + dXr
elif selfA._parameters["SimulationForQuantiles"] == "NonLinear" and Hm is not None:
Xr = numpy.matrix(numpy.random.multivariate_normal(numpy.ravel(Xa),A)).T
- if LBounds is not None and selfA._parameters["ConstrainedBy"] == "EstimateProjection":
+ if LBounds is not None: # "EstimateProjection" par défaut
Xr = numpy.max(numpy.hstack((Xr,LBounds[:,0])),axis=1)
Xr = numpy.min(numpy.hstack((Xr,LBounds[:,1])),axis=1)
Yr = numpy.matrix(numpy.ravel( Hm( Xr ) )).T