Skip to main content

Overview

The search section controls the evolutionary search algorithm, database backend, and context program selection strategy.

Basic Configuration

Search Types

SkyDiscover supports multiple search algorithms, each with different strategies for exploring the solution space. Simple best-first search that maintains the top-k programs by fitness.
str
default:"None"
Path to SQLite database for storing results
bool
default:"true"
Whether to log prompts to the database

AdaEvolve (Adaptive Multi-Island)

Adaptive evolutionary algorithm with multiple islands that adjust search intensity based on improvement history.
configs/adaevolve.yaml
Defined in skydiscover/config.py:380-432
int
default:"20"
Number of programs per island
int
default:"2"
Initial number of islands
int
default:"100"
Maximum size of the unified archive
Enable adaptive search intensity based on improvement signal
float
default:"0.9"
Exponential moving average weight (rho) for improvement signal
float
default:"0.15"
Minimum search intensity (exploitation mode)
float
default:"0.5"
Maximum search intensity (exploration mode)
float
default:"0.4"
Fixed intensity when use_adaptive_search=false
bool
default:"true"
Use UCB (Upper Confidence Bound) for island selection
bool
default:"true"
Enable inter-island migration
int
default:"15"
Migrate every N iterations
int
default:"5"
Number of top programs to migrate
bool
default:"true"
Use quality-diversity archive
float
default:"1.0"
Weight for fitness rank in elite score
float
default:"0.0"
Weight for novelty rank in elite score
str
default:"code"
Diversity metric: code, metric, or hybrid
int
default:"5"
Number of neighbors for novelty calculation
bool
default:"true"
Enable dynamic island spawning
int
default:"5"
Maximum number of islands
float
default:"0.015"
Spawn new island if productivity drops below this
int
default:"30"
Wait N iterations between island spawns
bool
default:"true"
Generate new high-level strategies during stagnation
int
default:"10"
Window for improvement rate calculation
float
default:"0.12"
Trigger paradigm breakthrough below this improvement rate
int
default:"2"
Maximum uses per paradigm
int
default:"3"
Number of paradigms to generate per trigger
int
default:"10"
Maximum tried paradigms to track

OpenEvolve Native (MAP-Elites)

Quality-diversity search using MAP-Elites grids with island-based populations.
configs/openevolve_native.yaml
Defined in skydiscover/config.py:435-450
int
default:"5"
Number of islands in the population
int
default:"40"
Total population size across all islands
int
default:"100"
Size of the MAP-Elites archive
float
default:"0.2"
Probability of exploration (random parent from current island)
float
default:"0.7"
Probability of exploitation (elite from archive)
float
default:"0.1"
Fraction of context programs from top elites
List[str]
default:"[\"complexity\", \"diversity\"]"
Behavioral dimensions for MAP-Elites grid
int
default:"10"
Number of bins per feature dimension

GEPA Native

Guided Evolution for Program Adaptation with elite pool, epsilon-greedy selection, and LLM-mediated merge.
Defined in skydiscover/config.py:453-472 Beam search with diversity weighting.
Defined in skydiscover/config.py:362-370

Best-of-N

Generate N candidates and select the best one.
Defined in skydiscover/config.py:373-377

EvoX (Co-Evolution)

Label-guided co-evolutionary search.
configs/evox.yaml
Defined in skydiscover/config.py:339-359

SearchConfig Parameters

Defined in skydiscover/config.py:485-493
str
default:"topk"
Search algorithm: topk, adaevolve, openevolve_native, gepa_native, beam_search, best_of_n, or evox
int
default:"4"
Number of example programs to include in generation prompts
str
default:"None"
Override output directory. If None, auto-generates based on search type and timestamp
DatabaseConfig
default:"DatabaseConfig()"
Algorithm-specific database configuration

CLI Overrides

Override search type from command line:

Choosing a Search Algorithm

Top-K

Best for: Quick experiments, simple optimizationPros: Fast, simple, low overheadCons: Limited exploration

AdaEvolve

Best for: Complex optimization, long runsPros: Adaptive, robust, handles stagnationCons: More computational overhead

OpenEvolve Native

Best for: Quality-diversity, exploring trade-offsPros: Diverse solutions, explores full spaceCons: Requires good feature dimensions

GEPA

Best for: Merging diverse solutionsPros: LLM-mediated combination, smart gatingCons: Higher LLM token usage

Next Steps

LLM Configuration

Configure models for search

Evaluator Configuration

Set up program evaluation