Explore with High Dimension Samplings

Suggest edits
Documentation > Explore > Samplings

Contents

Specific methods for high dimension spaces 🔗

High dimension spaces must be handled via specific methods of the literature, otherwise, cartesian products would be too memory consuming. OpenMOLE includes two of these methods: Sobol Sequence and Latin Hypercube Sampling, which can be passed as an argument to the DirectSampling task:

Methods' score 🔗

image/svg+xml Output Exploration Input Exploration Sensitivity Optimisation

These two methods perform well in terms of input space exploration (which is normal as they were built for that), however, they are superior to uniform or grid samplings, while sharing the same intrinsic limitations. There is no special way of handling stochasticity of the model, out of standard replications.
These methods are not expensive per se, it depends on the magnitude of the input space you want to be covered.

Latin Hypercube Sampling 🔗

The Latin Hypercube Sampling is a statistical method for generating a near-random sample of parameter values from a multidimensional distribution. The syntax of the LHS sampling in OpenMOLE is the following:

val i = Val[Double]
val j = Val[Double]
val values = Val[Array[Double]]

val my_LHS_sampling =
    LHS(
      100, // Number of points of the LHS
      i in (0.0, 10.0),
      j in (0.0, 5.0),
      values in Vector((0.0, 1.0), (0.0, 10.0), (5.0, 9.0)) // Generate part of the LHS sampling inside the array of values
    )

Use in the DirectSampling task 🔗

Once a sampling is defined, you can just add it to a DirectSampling task (see here for the description of this task), under the sampling argument. For example, supposing you have already declared inputs, outputs, and a model task called myModel, the sampling could be used like this:

val myExploration = DirectSampling(
  evaluation = myModel ,
  sampling = my_lhs_sampling,
  aggregation = mean
)

myExploration hook display

Sobol Sequence 🔗

A Sobol sequence is a quasi-random low-discrepancy sequence. The syntax of the Sobol sequence sampling in OpenMOLE is the following:

val i = Val[Double]
val j = Val[Double]
val values = Val[Array[Double]]

val my_sobol_sampling =
  SobolSampling(
    100, // Number of points
    i in (0.0, 10.0),
    j in (0.0, 5.0),
    values in Vector((0.0, 1.0), (0.0, 10.0), (5.0, 9.0)) // Generate part of the Sobol sampling inside the array of values
  )

Use in the DirectSampling task 🔗

Once a sampling is defined, you can just add it to a DirectSampling task (see here for the description of this task), under the sampling argument. For example, supposing you have already declared inputs, outputs, and a model task called myModel, the sampling could be used like this:

val myExploration = DirectSampling(
  evaluation = myModel ,
  sampling = my_sobol_sampling,
  aggregation = mean
)

myExploration hook display