Overview
OpenEvolve Native is a faithful SkyDiscover port of the OpenEvolve algorithm, implementing MAP-Elites (a quality-diversity algorithm) with an island-based population model. It maintains a feature map that preserves diverse solutions across multiple behavioral dimensions.MAP-Elites
Maintains archive of best programs in each region of feature space
Island Populations
Multiple independent populations with periodic migration
Quality-Diversity
Optimizes both fitness and behavioral diversity
Adaptive Sampling
Balances exploration, exploitation, and random search
Key Concepts
MAP-Elites Archive
MAP-Elites discretizes the behavior space into a grid and maintains the best solution in each cell:Feature Dimensions
OpenEvolve Native supports both built-in and custom feature dimensions: Built-in features:complexity: Length of solution codediversity: Average distance from reference setscore: Fitness value itself
Island Architecture
Multiple independent populations (islands) evolve in parallel:- Each island has its own MAP-Elites grid
- Islands evolve independently most of the time
- Periodic migration exchanges top solutions between islands
- Prevents premature convergence to single approach
Configuration
Basic Usage
Configuration File
Configuration Options
int
default:"5"
Number of independent island populations
int
default:"40"
Maximum total programs across all islands
int
default:"100"
Size of elite archive (best programs)
list
default:"['complexity', 'diversity']"
List of feature dimensions for MAP-Elites grid. Can be:
- Built-in:
"complexity","diversity","score" - Custom: Any metric name from your evaluator
int | dict
default:"10"
Number of bins per feature dimension.Single value (same for all dimensions):Per-dimension (different resolution):
float
default:"0.2"
Fraction of iterations to sample random parent from island (exploration)
float
default:"0.7"
Fraction of iterations to sample elite parent from archive (exploitation)
int
default:"10"
Number of generations between island migrations
float
default:"0.1"
Fraction of island population to migrate (top programs)
float
default:"0.1"
Fraction of context programs to sample from island elite
int
default:"20"
Number of programs in reference set for diversity calculation
How It Works
Sampling Strategy
On each iteration, OpenEvolve selects a parent using a probabilistic strategy:- Exploration (0.2): Try diverse approaches
- Exploitation (0.7): Refine known good solutions
- Global search (0.1): Avoid island isolation
MAP-Elites Insertion
When a new program is generated:- Calculate features: Determine feature coordinates (e.g., complexity=5, diversity=3)
- Find cell: Locate corresponding grid cell
- Compare: Is new program better than current cell occupant?
- Update: If yes, replace cell occupant
Migration Process
Everymigration_interval generations:
- Select migrants: Top
migration_ratefraction from each island - Ring topology: Island i sends to islands i+1 and i-1
- Copy programs: Migrants are copied (not moved)
- Prevent duplicates: Skip if target island already has identical solution
When to Use OpenEvolve Native
Best For
Best For
- Problems with multiple complementary solutions
- Need for behavioral diversity (not just fitness)
- Multi-objective optimization with trade-offs
- Long runs (150+ iterations) where quality-diversity pays off
- Problems with custom feature dimensions
Avoid When
Avoid When
- Single optimal solution exists
- Short runs (< 50 iterations) - not enough time for MAP-Elites to fill
- No meaningful behavioral dimensions
- Need for maximum simplicity
Example: Algorithm Design
Custom Feature Dimensions
Optimize sorting algorithms with custom features:Monitoring OpenEvolve Native
Island Status
MAP-Elites Coverage
Archive Quality
Feature Space Visualization
Visualize the MAP-Elites grid (2D example):Advanced Usage
Custom Feature Bins per Dimension
Asymmetric Migration
Customize migration topology:Comparison with Other Algorithms
Tips for Best Results
1
Choose Meaningful Features
Feature dimensions should capture behavioral differences that matter for your problem. Don’t just use
complexity and diversity by default.2
Balance Feature Bins
- Too few bins (< 5): Insufficient diversity
- Too many bins (> 20): Sparse coverage, slow fill
- Sweet spot: 8-12 bins per dimension
3
Tune Exploration/Exploitation
Adjust based on problem:
- Unknown landscape: Higher exploration (0.3-0.4)
- Refinement needed: Higher exploitation (0.7-0.8)
4
Monitor Coverage
Track MAP-Elites coverage over time. If coverage plateaus early, features may be too correlated.
Related Algorithms
- AdaEvolve - Island-based with adaptive intensity
- GEPA Native - Pareto frontier instead of MAP-Elites
- EvoX - Can evolve the OpenEvolve strategy itself