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

Decodes a NEATGenome into an evaluable phenotype: a forward pass over the genome's own irregular connection graph. More...

#include <algorithm>
#include <cmath>
#include <functional>
#include <map>
#include <stdexcept>
#include <vector>
#include "pulsatrix/neat_genome.hpp"
Include dependency graph for neat_phenotype.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  pulsatrix
 

Functions

std::vector< double > pulsatrix::EvaluateNEATPhenotype (const NEATGenome &genome, const std::vector< double > &inputs)
 Evaluates genome's phenotype forward pass on inputs (one value per Input node, ordered by ascending node ID; the Bias node, if present, is always implicitly 1.0 and is not part of inputs).
 

Detailed Description

Decodes a NEATGenome into an evaluable phenotype: a forward pass over the genome's own irregular connection graph.

Note
Deliberately NOT a Module subclass, and does not use ComputationGraph/Autograd at all – per this campaign's own Risk Register (non-negotiable #5 has no established LRP literature for irregular/evolved topologies), a NEAT genome's arbitrary connection graph is explicitly excluded from Module/LRP compliance as a logged scope cut, not a silent gap. NEAT itself never needs backpropagation through this phenotype in the first place – it trains via evolution (selection + mutation over the genome), not gradient descent, so no backward pass is genuinely needed here.
Activation function: the original paper's own steepened sigmoid, 1/(1 + exp(-4.9x)), applied to every non-input node (Stanley & Miikkulainen 2002's own choice, cited directly rather than substituted for a different activation without comment).