Overview
EvoX is a meta-evolution algorithm that dynamically evolves the optimization strategy itself using LLMs. Unlike traditional algorithms with fixed search strategies, EvoX treats the search algorithm as a program that can be evolved alongside the solutions.Research Paper
Read the full EvoX paper on ArXiv
Key Concept
EvoX implements co-evolution: it simultaneously evolves two things:- Solution programs: The actual solutions to your optimization problem
- Search algorithms: The strategy used to generate and select solution programs
Self-Adaptation
The search strategy adapts itself based on what works for your specific problem
Meta-Learning
Learns optimal exploration/exploitation balance automatically
Variation Operators
Auto-generates problem-specific diverge and refine prompts
Stagnation-Driven
Evolves search strategy when solution progress stagnates
How It Works
Co-Evolution Loop
- Solution Evolution: Use current search algorithm to evolve solutions
- Stagnation Detection: Track solution improvement over a window
- Search Evolution: When stagnant, evolve the search algorithm
- Strategy Switch: Load new search algorithm and continue
Search Algorithm Scoring
Each search algorithm is evaluated based on:Variation Operators
EvoX auto-generates two types of mutation operators:- Diverge: Encourages exploration of new solution spaces
- Refine: Encourages exploitation of known good solutions
Configuration
Basic Usage
Configuration File
EvoX requires a special configuration that points to:- Your solution problem (the main optimization task)
- An initial search algorithm (starting strategy)
- A search algorithm evaluator (how to score search strategies)
Configuration Options
Path to initial search algorithm Python file (must define a Database class)
Path to search algorithm evaluator (scores search strategies)
Optional config file for search algorithm evolution
Auto-generate diverge/refine prompts based on problem description
Fraction of iterations to wait before considering search evolution (stagnation threshold)
Minimum improvement to reset stagnation counter
Initial Search Algorithm
Your initial search algorithm should be a Python file defining a Database class:Search Algorithm Evaluator
The evaluator scores how well a search algorithm performs:The search evaluator is typically simple because EvoX automatically computes improvement metrics. The evaluator mainly exists for consistency with the framework.
When to Use EvoX
Best For
Best For
- Problems where the optimal search strategy is unknown
- Long discovery runs where search adaptation provides value
- Problems with complex fitness landscapes
- Research on meta-learning and algorithm design
Avoid When
Avoid When
- Short runs (< 50 iterations) - not enough time for meta-evolution
- Well-understood problems with known optimal strategies
- Limited LLM budget (meta-evolution uses extra LLM calls)
- Need for deterministic/reproducible search behavior
Performance
EvoX achieves state-of-the-art results on multiple benchmarks:- Frontier-CS: ~34% median improvement over baseline algorithms
- Adaptive to problem: Learns problem-specific search strategies
- Meta-optimization: Discovers novel search patterns not in initial algorithm
Example: Custom Problem
Advanced Features
Fallback Mechanism
If a newly evolved search algorithm causes errors, EvoX automatically:- Reverts to the previous working algorithm
- Migrates any successful solutions found during the failed attempt
- Continues evolution with the stable algorithm
Migration Between Algorithms
When switching to a new search algorithm, EvoX:- Copies all existing solutions to the new database
- Preserves prompt history and metadata
- Recalculates best program tracking
Comprehensive Logging
EvoX logs each evolved search algorithm to the output directory with:- Full source code
- Performance metrics
- Variation operators used
- Database statistics before and after
Related Algorithms
- AdaEvolve - Fixed adaptive search with island architecture
- GEPA Native - Pareto-efficient search with reflective prompting
- Top-K - Simple baseline to start EvoX with