.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
The state sampling collection can be described using dedicated keywords in the
command set of an algorithm that requires it.
-State sampling :math:`\mathbf{x}` can be provided explicitly or in the form of
-hypercubes, explicit or sampled according to common distributions, or using
-Latin Hypercube Sampling (LHS).
+The sampling of the states :math:`\mathbf{x}` can be provided explicitly or in
+the form of hypercubes, explicit or sampled according to common distributions,
+or using Latin Hypercube Sampling (LHS).
These possible keywords are:
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. image:: images/sampling_04_SampleAsMinMaxLatinHyperCube.png
:align: center
+Implicit state distribution by keyword "*SampleAsMinMaxSobolSequence*"
+.......................................................................
+
+Implicit sample generation command by "*SampleAsMinMaxSobolSequence*" is as
+follows:
+
+.. code-block:: python
+
+ [...]
+ "SampleAsMinMaxSobolSequence":[[0, 4], [0, 4], [2, 25]]
+ [...]
+
+The distribution of states (there will be 36 here by construction principle of
+the Sobol sequence) thus described corresponds to the illustration:
+
+ .. image:: images/sampling_05_SampleAsMinMaxSobolSequence.png
+ :align: center
+
Implicit state distribution by keyword "*SampleAsIndependantRandomVariables*" with normal law
.............................................................................................
The distribution of states thus described corresponds to the illustration:
- .. image:: images/sampling_05_SampleAsIndependantRandomVariables_normal.png
+ .. image:: images/sampling_06_SampleAsIndependantRandomVariables_normal.png
:align: center
Implicit state distribution by keyword "*SampleAsIndependantRandomVariables*" with uniform law
The distribution of states thus described corresponds to the illustration:
- .. image:: images/sampling_06_SampleAsIndependantRandomVariables_uniform.png
+ .. image:: images/sampling_07_SampleAsIndependantRandomVariables_uniform.png
:align: center
Implicit state distribution by keyword "*SampleAsIndependantRandomVariables*" with Weibull law
The distribution of states thus described corresponds to the illustration:
- .. image:: images/sampling_07_SampleAsIndependantRandomVariables_weibull.png
+ .. image:: images/sampling_08_SampleAsIndependantRandomVariables_weibull.png
:align: center
.. index:: single: SampleAsMinMaxLatinHyperCube
+.. index:: single: Latin hypercube
SampleAsMinMaxLatinHyperCube
*List of triplets of pair values*. This key describes the bounded domain in
which the calculations points will be placed, from a *[min,max]* pair for
each state component. The lower bounds are included. This list of pairs,
identical in number to the size of the state space, is augmented by a pair of
- integers *[dim,nb]* containing the dimension of the state space and the
+ integers *[dim,nbr]* containing the dimension of the state space and the
desired number of sample points. Sampling is then automatically constructed
using the Latin hypercube method (LHS).
--- /dev/null
+.. index:: single: SampleAsMinMaxSobolSequence
+.. index:: single: Sobol Sequence
+
+SampleAsMinMaxSobolSequence
+ *List of triplets of pair values*. This key describes the bounded domain in
+ which the calculations points will be placed, from a *[min,max]* pair for
+ each state component. The lower bounds are included. This list of pairs,
+ identical in number to the size of the state space, is augmented by a pair of
+ integers *[dim,nbr]* containing the dimension of the state space and the
+ minimum desired number of sample points (by construction, the number of
+ points generated in the Sobol sequence will be the power of 2 immediately
+ above this minimum number). Sampling is then automatically constructed using
+ the Latin hypercube method (LHS).
+
+ Example :
+ ``{"SampleAsMinMaxSobolSequence":[[0.,1.],[-1,3]]+[[2,11]]}`` for a state space of dimension 2 and 11 sampling points (there will be 16 points in practice).
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
+.. include:: snippets/SampleAsMinMaxSobolSequence.rst
+
.. include:: snippets/SampleAsMinMaxStepHyperCube.rst
.. include:: snippets/SampleAsnUplet.rst
.. image:: images/sampling_04_SampleAsMinMaxLatinHyperCube.png
:align: center
+Répartition implicite d'états par le mot-clé "*SampleAsMinMaxSobolSequence*"
+............................................................................
+
+La commande de génération implicite d'échantillons par
+"*SampleAsMinMaxSobolSequence*" est la suivante :
+
+.. code-block:: python
+
+ [...]
+ "SampleAsMinMaxSobolSequence":[[0, 4, 1], [0, 4, 1], [2, 25]]
+ [...]
+
+La répartition des états (il y en a ici 36 par principe de construction de la
+séquence de Sobol) ainsi décrite correspond à l'illustration :
+
+ .. image:: images/sampling_05_SampleAsMinMaxSobolSequence.png
+ :align: center
+
Répartition implicite d'états par le mot-clé "*SampleAsIndependantRandomVariables*" avec loi normale
....................................................................................................
La répartition des états ainsi décrite correspond à l'illustration :
- .. image:: images/sampling_05_SampleAsIndependantRandomVariables_normal.png
+ .. image:: images/sampling_06_SampleAsIndependantRandomVariables_normal.png
:align: center
Répartition implicite d'états par le mot-clé "*SampleAsIndependantRandomVariables*" avec loi uniforme
La répartition des états ainsi décrite correspond à l'illustration :
- .. image:: images/sampling_06_SampleAsIndependantRandomVariables_uniform.png
+ .. image:: images/sampling_07_SampleAsIndependantRandomVariables_uniform.png
:align: center
Répartition implicite par le mot-clé "*SampleAsIndependantRandomVariables*" avec loi de Weibull
La répartition des états ainsi décrite correspond à l'illustration :
- .. image:: images/sampling_07_SampleAsIndependantRandomVariables_weibull.png
+ .. image:: images/sampling_08_SampleAsIndependantRandomVariables_weibull.png
:align: center
.. index:: single: SampleAsMinMaxLatinHyperCube
+.. index:: single: Latin hypercube
+.. index:: single: Hypercube Latin
SampleAsMinMaxLatinHyperCube
*Liste de triplets de paires réelles*. Cette clé décrit le domaine borné dans
lequel les points de calcul seront placés, sous la forme d'une paire
*[min,max]* pour chaque composante de l'état. Les bornes inférieures sont
incluses. Cette liste de paires, en nombre identique à la taille de l'espace
- des états, est complétée par une paire d'entier *[dim,nb]* comportant la
+ des états, est complétée par une paire d'entier *[dim,nbr]* comportant la
dimension de l'espace des états et le nombre souhaité de points
d'échantillonnage. L'échantillonnage est ensuite construit automatiquement
selon la méthode de l'hypercube Latin (LHS).
--- /dev/null
+.. index:: single: SampleAsMinMaxSobolSequence
+.. index:: single: Sobol Sequence
+.. index:: single: Séquence de Sobol
+
+SampleAsMinMaxSobolSequence
+ *Liste de triplets de paires réelles*. Cette clé décrit le domaine borné dans
+ lequel les points de calcul seront placés, sous la forme d'une paire
+ *[min,max]* pour chaque composante de l'état. Les bornes inférieures sont
+ incluses. Cette liste de paires, en nombre identique à la taille de l'espace
+ des états, est complétée par une paire d'entier *[dim,nbr]* comportant la
+ dimension de l'espace des états et le nombre minimum souhaité de points
+ d'échantillonnage (par construction, le nombre de points générés dans la
+ séquence de Sobol sera la puissance de 2 immédiatement supérieure à ce nombre
+ minimum). L'échantillonnage est ensuite construit automatiquement selon la
+ méthode de séquences de Sobol.
+
+ Exemple :
+ ``{"SampleAsMinMaxSobolSequence":[[0.,1.],[-1,3]]+[[2,11]]}`` pour un espace d'état de dimension 2 et au moins 11 points d'échantillonnage (il y aura 16 points en pratique).
selfA._parameters["SampleAsExplicitHyperCube"],
selfA._parameters["SampleAsMinMaxStepHyperCube"],
selfA._parameters["SampleAsMinMaxLatinHyperCube"],
+ selfA._parameters["SampleAsMinMaxSobolSequence"],
selfA._parameters["SampleAsIndependantRandomVariables"],
Xb,
selfA._parameters["SetSeed"],
typecast = tuple,
message = "Points de calcul définis par un hyper-cube Latin dont on donne les bornes de chaque variable par une paire [min,max], suivi du nombre de points demandés",
)
+ self.defineRequiredParameter(
+ name = "SampleAsMinMaxSobolSequence",
+ default = [],
+ typecast = tuple,
+ message = "Points de calcul définis par une séquence de Sobol dont on donne les bornes de chaque variable par une paire [min,max], suivi de la paire [dimension, nombre minimal de points demandés]",
+ )
self.defineRequiredParameter(
name = "SampleAsIndependantRandomVariables",
default = [],
typecast = tuple,
message = "Points de calcul définis par un hyper-cube Latin dont on donne les bornes de chaque variable par une paire [min,max], suivi du nombre de points demandés",
)
+ self.defineRequiredParameter(
+ name = "SampleAsMinMaxSobolSequence",
+ default = [],
+ typecast = tuple,
+ message = "Points de calcul définis par une séquence de Sobol dont on donne les bornes de chaque variable par une paire [min,max], suivi de la paire [dimension, nombre minimal de points demandés]",
+ )
self.defineRequiredParameter(
name = "SampleAsIndependantRandomVariables",
default = [],
typecast = tuple,
message = "Points de calcul définis par un hyper-cube Latin dont on donne les bornes de chaque variable par une paire [min,max], suivi de la paire [dimension, nombre de points demandés]",
)
+ self.defineRequiredParameter(
+ name = "SampleAsMinMaxSobolSequence",
+ default = [],
+ typecast = tuple,
+ message = "Points de calcul définis par une séquence de Sobol dont on donne les bornes de chaque variable par une paire [min,max], suivi de la paire [dimension, nombre minimal de points demandés]",
+ )
self.defineRequiredParameter(
name = "SampleAsIndependantRandomVariables",
default = [],
self._parameters["SampleAsExplicitHyperCube"],
self._parameters["SampleAsMinMaxStepHyperCube"],
self._parameters["SampleAsMinMaxLatinHyperCube"],
+ self._parameters["SampleAsMinMaxSobolSequence"],
self._parameters["SampleAsIndependantRandomVariables"],
Xb,
self._parameters["SetSeed"],
return _Perturbations
# ==============================================================================
-def EnsembleOfBackgroundPerturbations( __bgCenter, __bgCovariance, __nbMembers, __withSVD = True ):
+def EnsembleOfBackgroundPerturbations(
+ __bgCenter,
+ __bgCovariance,
+ __nbMembers,
+ __withSVD = True,
+ ):
"Génération d'un ensemble de taille __nbMembers-1 d'états aléatoires centrés"
def __CenteredRandomAnomalies(Zr, N):
"""
__SampleAsExplicitHyperCube,
__SampleAsMinMaxStepHyperCube,
__SampleAsMinMaxLatinHyperCube,
+ __SampleAsMinMaxSobolSequence,
__SampleAsIndependantRandomVariables,
__X0,
__Seed = None,
if vt(scipy.version.version) <= vt("1.7.0"):
__msg = "In order to use Latin Hypercube sampling, you must at least use Scipy version 1.7.0 (and you are presently using Scipy %s). A void sample is then generated."%scipy.version.version
warnings.warn(__msg, FutureWarning, stacklevel=50)
- coordinatesList = []
+ sampleList = []
else:
__spDesc = list(__SampleAsMinMaxLatinHyperCube)
- __nbSamp = int(__spDesc.pop()[1])
+ __nbDime,__nbSamp = map(int, __spDesc.pop()) # Réduction du dernier
__sample = scipy.stats.qmc.LatinHypercube(
d = len(__spDesc),
seed = numpy.random.default_rng(__Seed),
)
__sample = __sample.random(n = __nbSamp)
__bounds = numpy.array(__spDesc)[:,0:2]
- l_bounds = __bounds[:,0]
- u_bounds = __bounds[:,1]
- coordinatesList = scipy.stats.qmc.scale(__sample, l_bounds, u_bounds)
- sampleList = coordinatesList
+ __l_bounds = __bounds[:,0]
+ __u_bounds = __bounds[:,1]
+ sampleList = scipy.stats.qmc.scale(__sample, __l_bounds, __u_bounds)
+ # ---------------------------
+ elif len(__SampleAsMinMaxSobolSequence) > 0:
+ import scipy, warnings
+ if vt(scipy.version.version) <= vt("1.7.0"):
+ __msg = "In order to use Latin Hypercube sampling, you must at least use Scipy version 1.7.0 (and you are presently using Scipy %s). A void sample is then generated."%scipy.version.version
+ warnings.warn(__msg, FutureWarning, stacklevel=50)
+ sampleList = []
+ else:
+ __spDesc = list(__SampleAsMinMaxSobolSequence)
+ __nbDime,__nbSamp = map(int, __spDesc.pop()) # Réduction du dernier
+ if __nbDime != len(__spDesc):
+ warnings.warn("Declared space dimension (%i) is not equal to number of bounds (%i), the last one will be used."%(__nbDime, len(__spDesc)), FutureWarning, stacklevel=50)
+ __sample = scipy.stats.qmc.Sobol(
+ d = len(__spDesc),
+ seed = numpy.random.default_rng(__Seed),
+ )
+ __sample = __sample.random_base2(m = int(math.log2(__nbSamp))+1)
+ __bounds = numpy.array(__spDesc)[:,0:2]
+ __l_bounds = __bounds[:,0]
+ __u_bounds = __bounds[:,1]
+ sampleList = scipy.stats.qmc.scale(__sample, __l_bounds, __u_bounds)
# ---------------------------
elif len(__SampleAsIndependantRandomVariables) > 0:
coordinatesList = []
Report in plain TXT
"""
#
+ __slots__ = ()
+ #
default_filename="report.txt"
tags = {
"p":["\n",""],