Explore with HDOSE

Suggest edits
Documentation > Explore

HDOSE description 🔗

The High Dimension Origin Space Exploration (HDOSE) method is used to explore the multiple antecedents of a pattern when the input space is of high dimension (i.e. > 6). It generates input parameter values that produce a pattern described by a set of constraints on the objectives (i.e. objectives should be under given thresholds or close to given values). HDOSE optimize the fitness and keeps and archives the solutions that are good enough. New solutions are added to the archive when their input values are distant of at least a distance d = 1.0 of all existing solution in the archive (the distance L1 is used). When the archive size reaches 500 a new value for d is computed to shrink the archive size under 500 given that all the solutions present in the archive are distant of at least d. The hook arguments for the HDOSEEvolution are:
  • output: the file in which to store the result,
  • keepHistory: optional, Boolean, keep the history of the results for future analysis,
  • frequency: optional, Long, the frequency in generations where the result should be saved, it is generally set to avoid using too much disk space,
  • keepAll: optional, Boolean, save all the individuals of the population not only the optimal ones.

Example 🔗

This is an example of the HDOSE method in an OpenMOLE script:

val myseed = Val[Long]

val param1 = Val[Array[Double]]
val param2 = Val[Double]
val param3 = Val[Array[Boolean]]
val param4 = Val[Array[Int]]

val output1 = Val[Double]
val output2 = Val[Double]

HDOSEEvolution(
  evaluation = modelTask,
  parallelism = 10,
  termination = 100,
  origin = Seq(
    param1 in Seq.fill(10)(0.0 to 1.0),
    param2 in (-10.0 to 10.0 weight 10.0),
    param3 in Seq.fill(5)(TrueFalse weight 2.0),
    param4 in Seq.fill(10)(0 to 100)
  ),
  objective = Seq(
    output1 under 5.0,
    output2 under 50.0),
  stochastic = Stochastic(seed = myseed)
) hook (workDirectory / "results.omr", frequency = 100)
origin describes the genome of the optimisation. To compute the distance, each part of the genome are normalised. To give more weight to a given part of the genome in the distance computation, use the `weight` keyword.
objective use inequalities to define the pattern to reach. The pattern is reached when all the objectives are under their threshold value. In this example, HDOSE computes a maximal diversity of inputs for which all the outputs are under their respective threshold value.