rlevo_evolution/lib.rs
1//! Tensor-native classical evolutionary algorithms for `rlevo`.
2//!
3//! This crate ships the classical EA families — Genetic Algorithm (GA),
4//! Evolution Strategy (ES), Evolutionary Programming (EP), Differential
5//! Evolution (DE), and Cartesian Genetic Programming (CGP) — on top of the
6//! Burn tensor abstraction, with GPU acceleration via custom `CubeCL` kernels
7//! on hot paths.
8//!
9//! # Surface area
10//!
11//! - [`strategy`] — the central [`Strategy`] trait and
12//! the [`EvolutionaryHarness`] adapter that
13//! wraps any strategy into `rlevo-core::evaluation::BenchEnv`.
14//! - [`function_set`] — the shared [`FunctionSet`] opcode contract (and the
15//! default [`ArithmeticFunctionSet`]) used by both Cartesian GP and Gene
16//! Expression Programming.
17//! - [`genome`] — zero-sized marker types (`Real`, `Binary`, `Integer`,
18//! `Tree`, `Permutation`) that parameterize the operator set.
19//! - [`population`] — [`Population<B, K>`](population::Population), a thin
20//! wrapper around `Tensor<B, 2>` carrying shape metadata.
21//! - [`fitness`] — [`FitnessFn`](fitness::FitnessFn) /
22//! [`BatchFitnessFn`](fitness::BatchFitnessFn), the
23//! [`FromFitnessEvaluable`](fitness::FromFitnessEvaluable) adapter for
24//! `rlevo-core::fitness::FitnessEvaluable`, and the
25//! [`FromLandscape`](fitness::FromLandscape) adapter for landscapes that
26//! carry their own `evaluate` method.
27//! - [`observer`] — [`PopulationObserver`] /
28//! [`PopulationSnapshot`] /
29//! [`SharedPopulationObserver`]:
30//! structured per-generation callback for recorders that need more than
31//! the scalar `tracing` events (full fitness vector, best-individual
32//! index, lineage).
33//! - [`rng`] — deterministic seed streams (splitmix64) for reproducibility.
34//! - [`shaping`] — fitness shaping transforms (centered rank, z-score).
35//! - [`ops`] — selection, crossover, mutation, and replacement operators.
36//! - [`local_search`] — host-side, gradient-free refinement
37//! ([`LocalSearch`] and the four reference
38//! searchers) for memetic algorithms.
39//! - [`probability_model`] — the [`ProbabilityModel`] trait shared by the
40//! estimation-of-distribution (EDA) strategies.
41//! - [`coevolution`] — competitive / cooperative co-evolution
42//! ([`CompetitiveCoEA`], [`CooperativeCoEA`]), the [`CoupledFitness`] trait,
43//! the [`HallOfFameFitness`] cycling mitigation, and the
44//! [`CoEvolutionaryHarness`] `BenchEnv` adapter.
45//! - [`algorithms`] — concrete strategies.
46
47pub mod algorithms;
48pub mod coevolution;
49pub mod fitness;
50pub mod function_set;
51pub mod genome;
52pub mod local_search;
53pub mod module_eval_fn;
54pub mod neuroevolution;
55pub mod observer;
56pub mod ops;
57pub mod param_reshaper;
58pub mod population;
59pub mod probability_model;
60pub mod rng;
61pub(crate) mod sampling;
62pub mod shaping;
63pub mod strategy;
64
65pub use algorithms::eda::{
66 BayesianNetwork, BayesianNetworkParams, CompactGenetic, CompactGeneticParams, DependencyChain,
67 DependencyChainParams, EdaParams, EdaState, EdaStrategy, UnivariateBernoulli,
68 UnivariateBernoulliParams, UnivariateGaussian, UnivariateGaussianParams,
69};
70pub use algorithms::memetic::{CoveragePolicy, MemeticWrapper, WritebackPolicy};
71pub use algorithms::neuroevolution::{
72 ArchNasBuilder, ArchNasFitnessFn, ArchNasStrategy, BatchGraphFitness, GraphFitnessFn,
73 NasBuilderConfig, NasGenome, NasParams, NasState, NeatParams, NeatState, NeatStrategy,
74 VariantEvaluator, WeightOnly,
75};
76pub use coevolution::{
77 CoEAMetrics, CoEAState, CoEvolutionaryAlgorithm, CoEvolutionaryHarness, CompetitiveCoEA,
78 CompetitiveCoEAParams, CooperativeCoEA, CooperativeCoEAParams, CooperativeState,
79 CoupledFitness, HallOfFame, HallOfFameFitness, RepresentativePolicy,
80};
81pub use function_set::{ArithmeticFunctionSet, FunctionSet, Symbol};
82pub use local_search::{HillClimbing, LocalSearch, NelderMead, RandomRestart, SimulatedAnnealing};
83pub use module_eval_fn::ModuleEvalFn;
84pub use neuroevolution::{
85 ActivationFn, BatchPhenotypeEvaluator, ConnectionGene, DensePaddedEvaluator, InnovationId,
86 InnovationRegistry, InterpretedBuilder, InterpretedPhenotype, NodeGene, NodeId, NodeKind,
87 NodeSplit, Phenotype, PhenotypeBuilder, Species, SpeciesId, TopologyGenome,
88 compatibility_distance,
89};
90pub use observer::{PopulationObserver, PopulationSnapshot, SharedPopulationObserver};
91pub use param_reshaper::{ModuleReshaper, ParamReshaper};
92pub use probability_model::ProbabilityModel;
93pub use shaping::ShapingError;
94pub use strategy::{EvolutionaryHarness, Strategy, StrategyMetrics};