Island Distribution Scheme

Suggest edits
Documentation > Advanced Concepts

Distribution scheme 🔗

For distributed environments, the island distribution scheme of evolutionary algorithms is especially well adapted. Islands of population evolve for a while on a remote node before being merged back into the global population. A new island is then generated until the termination criterion, i.e. the max total number of individual evaluation, has been reached.
The island scheme is enabled using the by Island syntax. For instance:
// Generate a workflow that orchestrates 100 concurrent islands.
// The workflow stops when 10,000 individuals have been evaluated.
val evolution =
  NSGA2Evolution(
    genome = Seq(x in (0.0, 1.0), y in (0.0, 1.0)),
    objective = Seq(o1, o2),
    evaluation = model,
    termination = 10000,
    parallelism = 100
  ) by Island(5 minutes) hook (workDirectory / "evolution")

// Construction of the complete mole with the execution environment, and the hook.
// Here the generated workflow will run using 4 threads of the local machine.
(evolution on LocalEnvironment(4))