1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! Topology-evolving neuroevolution (NEAT) — the host-side graph data model.
//!
//! This module holds the building blocks shared by NEAT: the graph genome
//! ([`topology`]), the per-run innovation registry ([`innovation`]), speciation
//! ([`species`]), and the phenotype builders ([`phenotype`]). The
//! [`NeatStrategy`](crate::algorithms::neuroevolution::neat::NeatStrategy) custom
//! harness that drives them lives in [`crate::algorithms::neuroevolution::neat`].
//!
//! These types are *graphs*, not tensors: unlike the
//! [`Strategy`](crate::strategy::Strategy) genomes elsewhere in the crate,
//! [`TopologyGenome`] is plain host-side data (and is [`Clone`]). A genome is
//! scored either one at a time, through the interpreted [`InterpretedBuilder`]
//! reference path, or a whole population at once, through the device-batched
//! [`DensePaddedEvaluator`]; the two agree to float epsilon.
//!
//! # Orientation
//!
//! NEAT is **maximization** (higher fitness is better) — matching the crate-wide
//! maximise convention. [`Species`] best/stagnation tracking, fitness sharing,
//! and the [`GraphFitnessFn`](crate::algorithms::neuroevolution::neat::GraphFitnessFn)
//! seam all treat higher as better; a cost objective is reconciled into
//! canonical space by the harness/adapter chokepoint, not by hand here.
pub use ;
pub use ;
pub use ;
pub use ;