Skip to main content
Search algorithms determine which programs to evolve and how to evolve them. SkyDiscover includes multiple algorithms with different trade-offs.

Algorithm Overview

Simple Algorithms

Top-K

Strategy: Always refine the best program.
When to use:
  • Quick prototyping
  • Problems with clear improvement gradient
  • Baseline for comparison
Configuration:
Implementation: skydiscover/search/topk/database.py:10

Best-of-N

Strategy: Generate N variants from the same parent before switching.
When to use:
  • Exhaustive local search around promising solutions
  • Reducing variance in stochastic generation
Configuration:
Implementation: skydiscover/search/best_of_n/database.py:11
Strategy: Maintain a fixed-width beam of promising candidates, expanding in breadth-first manner.
Selection Strategies:
  • best: Always highest-scoring in beam
  • stochastic: Weighted random by score
  • round_robin: Cycle through beam members
  • diversity_weighted: Balance score and diversity (default)
When to use:
  • Problems requiring breadth-first exploration
  • Avoiding premature convergence
  • Structured solution spaces
Configuration:
Implementation: skydiscover/search/beam_search/database.py:28

Advanced Algorithms

OpenEvolve Native

Strategy: MAP-Elites archive + island-based evolution. Key Features:
  1. MAP-Elites Archive: Grid of behavior dimensions, each cell stores best program
  2. Multi-island: Independent populations with periodic migration
  3. Diversity Pressure: Explicitly rewards novel behaviors
When to use:
  • Need both high quality AND diversity
  • Problems with multiple distinct solution types
  • Long-running discovery (100+ iterations)
Configuration:
Implementation: skydiscover/search/openevolve_native/database.py

GEPA Native

Strategy: Pareto-efficient search with acceptance gating and code merge. Key Features:
  1. Pareto Frontier: Track programs optimal on ≥1 metric
  2. Acceptance Gating: Only add programs that improve OR are Pareto-optimal
  3. LLM-Mediated Merge: Combine features from multiple high-performing programs
Pareto Frontier Example:
When to use:
  • Multi-objective optimization (speed vs accuracy, cost vs quality)
  • Quality focus over diversity
  • Constrained evaluation budget
Configuration:
Implementation: skydiscover/search/gepa_native/database.py

AdaEvolve ⭐

Strategy: Multi-island adaptive search with UCB selection and paradigm breakthroughs. Architecture:
Key Mechanisms:
  1. Heterogeneous Islands: Each island optimizes different objectives:
    • balanced: Quality + diversity
    • quality: Pure fitness maximization
    • diversity: Novelty search
    • pareto: Multi-objective optimization
  2. UCB Island Selection: Allocate iterations to productive islands:
  3. Adaptive Search Intensity:
    • High productivity → exploit (sample from top programs)
    • Low productivity → explore (sample diverse programs)
  4. Migration: Periodically share best programs between islands
  5. Paradigm Breakthroughs: Detect stagnation and spawn new exploration directions
When to use:
  • Production use — best general-purpose algorithm
  • Unknown problem structure
  • Need robustness across diverse benchmarks
Configuration:
Performance:
  • Frontier-CS: 34% median improvement over competitors
  • Math tasks: Matches AlphaEvolve on 6/8 benchmarks
  • Systems: 41% cost reduction on cloud scheduling
Implementation: skydiscover/search/adaevolve/database.py:150

EvoX 🧠

Strategy: Co-evolves the search strategy itself using meta-learning. Key Idea: Treat the search algorithm as a program that can also be evolved. Two-Level Evolution:
  1. Solution Level: Evolve candidate programs (standard)
  2. Meta Level: Evolve the search strategy that generates programs
Meta-Evolution Process:
1

Initialize

Start with a baseline search strategy (e.g., top-k)
2

Run Discovery

Use current strategy to evolve solutions for N iterations
3

Evaluate Strategy

Score strategy based on improvement achieved
4

Evolve Strategy

LLM generates improved search strategy based on performance
5

Repeat

Use new strategy for next discovery phase
Strategy Evaluation Metrics:
When to use:
  • Research on learning-to-search
  • Very long runs (200+ iterations)
  • Problems where optimal search strategy is unknown
Configuration:
Papers: Implementation: skydiscover/search/evox/controller.py

Algorithm Comparison

Convergence Speed

Diversity vs Quality

Choosing an Algorithm

Recommended: adaevolveBest general-purpose algorithm. Works well without tuning.

Writing Custom Algorithms

See skydiscover/search/README.md for detailed guide. Simple Algorithm (Database only):
Register in skydiscover/search/route.py:
Advanced Algorithm (Database + Controller): Override run_discovery() for cross-iteration behavior:

Architecture

How algorithms integrate with the framework

Evaluators

Writing effective evaluation functions