You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Can Different Islands Be Configured With Different Prompts to Support Diverse Evolutionary Directions? #293
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?
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?
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!
Activity
codelion commentedon Oct 15, 2025
I think this will be a good addition, at the moment it is not supported.
Mqw7373 commentedon Sep 28, 2026
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?
codelion commentedon Sep 28, 2026
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:
prompt, e.g.island_system_messages: ["...", null, "..."], indexed by island.null(or a missing entry) falls back toprompt.system_message. Please validate the length againstdatabase.num_islandswhen the config loads, and raise a clear error if it's too long.sampling_islandin the database snapshot), notparent.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.system_messagedoes today.nullentry falls back to the defaultconfigs/default_config.yamland a short example toconfigs/island_config_example.yaml.Note that #494 touches
process_parallel.pyand will land soon, so you may need to rebase onto main. Looking forward to the PR!