Skip to main content

Module isotropic_es

Module isotropic_es 

Expand description

The regression sentinel for Cmaes: the same evolution strategy with the covariance update deleted.

CMA-ES’s headline claim is that it learns the shape of the landscape into its covariance C, which is what lets it solve an ill-conditioned, rotated problem that an axis-aligned searcher cannot. A claim like that is only worth asserting if something would notice when it stopped being true — so this module ships the ablation the oracle measures against: (μ/μ_w, λ)-ES with cumulative step-size adaptation and C ≡ I.

§It is an ablation, not a second algorithm

Everything except the covariance is the same as the real sampler’s (crates/atune/src/cmaes/mod.rs), on purpose:

PieceHereCmaes
population λ, parents μ = ⌊λ/2⌋4 + ⌊3 ln d⌋same
recombination weights, μ_effln((λ+1)/2) − ln i, normalizedsame
mean updatem ← m + σ·y_wsame
step-size path p_σ, damping d_σ, χ_dsame formulaesame
step sizeσ ← σ·exp((c_σ/d_σ)(‖p_σ‖/χ_d − 1))same
offspringx = clamp(m + σ·z)x = clamp(m + σ·B·D·z)
C, p_c, rank-one, rank-μ, eigendecompositionabsentpresent
RNGChaCha8Rng seeded seed_for_name(sampler_seed, "cmaes")same
normalsbox_muller, pairwisesame
mixed spacescontinuous floats driven, the rest Randomsame

The RNG tag is deliberately the same string, so for a given (study seed, trial number) both samplers consume the identical z stream: the sentinel is a paired comparison in which the covariance is the only moving part. That is what makes “the isotropic variant loses the ill-conditioned margin” a statement about covariance adaptation rather than about two unrelated searchers.

§Why it is here and not in the facade

It is a benchmark fixture. atune ships one CMA-ES; shipping a second, deliberately weakened one as public API would be a maintenance liability and an invitation to use it. atune_bench is publish = false, which is exactly where an ablation belongs (the same reasoning that put DeKnobs::degenerate’s crippled DEHB behind a bench-only knob).

§Determinism

Identical to the real sampler’s: every draw comes from a ChaCha8Rng keyed on the trial’s sampler_seed, never ambient entropy, so a single-worker run with a fixed study seed is fully reproducible (docs/design/09-implementation.md §5, promise 3). Like every stateful sampler it is history-dependent, so it does not get promise 2 under parallelism — and, being a bench fixture, it never persists state at all (state returns None).

Structs§

IsotropicEs
(μ/μ_w, λ)-ES with cumulative step-size adaptation and no covariance adaptation — the CMA-ES ablation the M4.3 oracle’s sentinel runs.