Evolution Strategy dates to Rechenberg and Schwefel's work in 1960s Berlin and is the conceptual ancestor of CMA-ES. The (μ+λ) variant maintains μ parents, generates λ Gaussian-perturbed offspring each generation, and selects the best μ individuals from the combined parent + offspring pool. HumpDay's
EvolutionStrategy uses a fixed step size σ=0.2 (no covariance adaptation — that's CMA-ES's contribution).
Interactive 3D Visualization
See Evolution Strategy in action on 3D optimization surfaces:
Loading 3D visualization...
Requires WebGL support
Implementation Details
| Component | Details | Links |
|---|---|---|
| Original Algorithm |
Ingo Rechenberg & Hans-Paul Schwefel Mutation-driven evolutionary search (μ+λ) selection over combined parent+offspring pool Published: 1965 (Rechenberg), 1975 (Schwefel) |
Wikipedia |
| Humpday Python |
Pure-Python Implementation μ=10 parents, λ=min(30, n_trials/3) offspring Gaussian mutation with fixed step size σ=0.2, clipped to the unit cube No required dependencies File: humpday/optimizers/evolutionary_algorithms.py |
Python Code |
| Humpday JavaScript |
Browser Implementation Pure-JavaScript port of the (μ+λ)-ES for the in-browser demo Class: EvolutionStrategy |
JavaScript Code |
Performance Characteristics
- Best for: Continuous unconstrained objectives where rotation-invariance isn't critical and a fixed-σ baseline suffices.
- Worst for: Ill-conditioned problems — without covariance adaptation, σ can't match the basin geometry the way CMA-ES does.
- Per generation: up to λ evaluations; sort by fitness, keep μ best.
- Relative to mealpy
OriginalESatn_trials=200, n_dim=2: HumpDay wins across sphere, Rosenbrock, and Ackley. See SOTA status for the live numbers.
Educational Resources
Algorithm Overview
- Initialize μ parents uniformly at random in the unit cube.
- Mutate: pick a parent at random, perturb by σ·𝒩(0,I), clip to the unit cube. Repeat λ times.
- Select: sort the combined (parent + offspring) pool by fitness and keep the best μ.
- Repeat until the evaluation budget is exhausted.
Notation: the "+" in (μ+λ) indicates elitism — parents compete against their own offspring. The alternative (μ,λ) variant discards parents each generation; HumpDay implements the elitist (μ+λ) form.