pulsatrix
Loading...
Searching...
No Matches
neat_genome.hpp File Reference

NEAT genome (Stanley & Miikkulainen, "Evolving Neural Networks through Augmenting Topologies," Evolutionary Computation 10(2), 2002): a connection-gene list with global historical markings (innovation numbers) plus the two structural mutations (add-connection, add-node) that grow topology from a minimal starting point. More...

#include <algorithm>
#include <map>
#include <random>
#include <stdexcept>
#include <utility>
#include <vector>
Include dependency graph for neat_genome.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pulsatrix::NodeGene
 One node in a NEAT genome's topology. More...
 
struct  pulsatrix::ConnectionGene
 One connection in a NEAT genome: an edge between two node IDs, its weight, whether it is currently active, and its historical marking (innovation number). Disabled connections are kept, not removed – NEAT's own design, preserving historical alignment for crossover (a future mission's concern, not built here). More...
 
class  pulsatrix::InnovationTracker
 The global historical-marking registry: the same structural mutation (an identical new connection, or an identical connection-split creating a new node) occurring in different genomes receives the same innovation number / new node ID if it has already been recorded, and a fresh one otherwise. This is the concrete mechanism that lets two differently-shaped genomes' genes be meaningfully aligned by innovation number – NEAT's own defining idea (not built here: crossover itself is a future mission; this class only maintains the registry crossover would eventually consume). More...
 
class  pulsatrix::NEATGenome
 A NEAT genome: its node and connection genes, growable via structural mutation. More...
 

Namespaces

namespace  pulsatrix
 

Detailed Description

NEAT genome (Stanley & Miikkulainen, "Evolving Neural Networks through Augmenting Topologies," Evolutionary Computation 10(2), 2002): a connection-gene list with global historical markings (innovation numbers) plus the two structural mutations (add-connection, add-node) that grow topology from a minimal starting point.

Note
Feedforward-only, logged as a deliberate scope reduction matching this project's own standing precedent (the Reinforcement Learning campaign's own "feedforward-only for now" scope note) – MutateAddConnection's RNG-driven wrapper only ever proposes a connection that cannot create a cycle (checked via reachability, not merely assumed safe), rather than NEAT's own original recurrent-connection-capable design.
Phenotype decode (turning a genome into an evaluable Module-based network) is deliberately NOT this file's job – this mission's own scope is the genome and its structural mutations only; decode is Phase 3 Mission 1's job.