From 6a9bd051327ade1b0262968dd2dd581f61198960 Mon Sep 17 00:00:00 2001 From: octo-patch Date: Sun, 19 Apr 2026 09:17:07 +0800 Subject: [PATCH] fix: use _sample_inspirations in sample_from_island for consistent inspiration selection (fixes #437) --- openevolve/database.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/openevolve/database.py b/openevolve/database.py index eca5eab0bb..ceeb0d58c2 100644 --- a/openevolve/database.py +++ b/openevolve/database.py @@ -447,21 +447,11 @@ def sample_from_island( parent = self._sample_from_island_weighted(island_id) sampling_mode = "weighted" - # Select inspirations from the same island + # Select inspirations from the same island using the same strategy as sample() if num_inspirations is None: num_inspirations = 5 # Default for backward compatibility - # Get other programs from the island for inspirations - other_programs = [pid for pid in island_programs if pid != parent.id] - - if len(other_programs) < num_inspirations: - # Not enough programs in island, use what we have - inspiration_ids = other_programs - else: - # Sample inspirations - inspiration_ids = random.sample(other_programs, num_inspirations) - - inspirations = [self.programs[pid] for pid in inspiration_ids if pid in self.programs] + inspirations = self._sample_inspirations(parent, n=num_inspirations) logger.debug( f"Sampled parent {parent.id} and {len(inspirations)} inspirations from island {island_id} "