Skip to content

Commit 3e38b73

Browse files
committed
Add iteration_found field to track when best program was discovered
1 parent 7928fd9 commit 3e38b73

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

openevolve/controller.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ async def run(
149149
code=self.initial_program_code,
150150
language=self.language,
151151
metrics=initial_metrics,
152+
iteration_found=start_iteration
152153
)
153154

154155
self.database.add(initial_program)
@@ -235,7 +236,7 @@ async def run(
235236
)
236237

237238
# Add to database
238-
self.database.add(child_program)
239+
self.database.add(child_program, iteration=i+1)
239240

240241
# Log progress
241242
iteration_time = time.time() - iteration_start
@@ -380,6 +381,7 @@ def _save_checkpoint(self, iteration: int) -> None:
380381
{
381382
"id": best_program.id,
382383
"generation": best_program.generation,
384+
"iteration_found": best_program.iteration_found,
383385
"iteration": iteration,
384386
"metrics": best_program.metrics,
385387
"language": best_program.language,
@@ -435,6 +437,7 @@ def _save_best_program(self, program: Optional[Program] = None) -> None:
435437
{
436438
"id": program.id,
437439
"generation": program.generation,
440+
"iteration_found": program.iteration_found,
438441
"timestamp": program.timestamp,
439442
"parent_id": program.parent_id,
440443
"metrics": program.metrics,

openevolve/database.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class Program:
3232
parent_id: Optional[str] = None
3333
generation: int = 0
3434
timestamp: float = field(default_factory=time.time)
35+
iteration_found: int = 0 # Track which iteration this program was found
3536

3637
# Performance metrics
3738
metrics: Dict[str, float] = field(default_factory=dict)
@@ -90,17 +91,24 @@ def __init__(self, config: DatabaseConfig):
9091

9192
logger.info(f"Initialized program database with {len(self.programs)} programs")
9293

93-
def add(self, program: Program) -> str:
94+
def add(self, program: Program, iteration: int = None) -> str:
9495
"""
9596
Add a program to the database
9697
9798
Args:
9899
program: Program to add
100+
iteration: Current iteration (defaults to last_iteration)
99101
100102
Returns:
101103
Program ID
102104
"""
103105
# Store the program
106+
# If iteration is provided, update the program's iteration_found
107+
if iteration is not None:
108+
program.iteration_found = iteration
109+
# Update last_iteration if needed
110+
self.last_iteration = max(self.last_iteration, iteration)
111+
104112
self.programs[program.id] = program
105113

106114
# Calculate feature coordinates for MAP-Elites

0 commit comments

Comments
 (0)