Skip to content

Can Different Islands Be Configured With Different Prompts to Support Diverse Evolutionary Directions? #293

Closed

Description

@Huahuatii

I've used several projects and found that when configuring 2-3 islands, the search process tends to converge very early, limiting diversity. I am wondering whether it's possible or worthwhile to configure different evolutionary tasks or prompts for each island, so that they can explore different directions. This might improve diversity and help prevent premature convergence. Is this feature supported or are there any plans to implement it?

Activity

  1. codelion commented on Oct 15, 2025

    @codelion
    Member

    I think this will be a good addition, at the moment it is not supported.

  2. Mqw7373 commented on Sep 28, 2026

    @Mqw7373
    Contributor

    Hi, I’d like to work on this issue. Following the island-selection work in #493, I’d start with a small, backward-compatible option for per-island system prompt overrides. Islands without an override would keep the existing prompt, and I’d add tests to ensure parallel iterations use the prompt for the correct island.
    Does that scope fit what you had in mind, or would you prefer per-island overrides for the full prompt template?

  3. codelion commented on Sep 28, 2026

    @codelion
    Member

    Thanks, that scope sounds right, and building on #493 makes sense. Please start with per-island system prompt overrides only; we can look at full template overrides later if there's demand.

    A few things that would help it land smoothly:

    • Config shape: an optional list under prompt, e.g. island_system_messages: ["...", null, "..."], indexed by island. null (or a missing entry) falls back to prompt.system_message. Please validate the length against database.num_islands when the config loads, and raise a clear error if it's too long.
    • Which island: use the island the child will be placed on (sampling_island in the database snapshot), not parent.metadata["island"]. A parent drawn from the archive can come from another island, so keying on the parent would sometimes apply the wrong island's prompt.
    • Template names: entries should accept either literal text or a template name, the same way system_message does today.
    • Tests: the parallel test you mentioned, plus:
      • the default behaviour is unchanged when the option isn't set
      • a missing or null entry falls back to the default
      • an override survives a checkpoint save and resume
      • a config with more entries than islands is rejected
    • Docs: add the option to configs/default_config.yaml and a short example to configs/island_config_example.yaml.

    Note that #494 touches process_parallel.py and will land soon, so you may need to rebase onto main. Looking forward to the PR!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions