pulsatrix
Loading...
Searching...
No Matches
Evolutionary Computation

A from-scratch, DEAP-free genetic-algorithm core (population/fitness/selection/ crossover/mutation, NSGA-II), plus neuroevolution (NEAT, Evolution Strategies), evolutionary hyperparameter optimization (CMA-ES), Population Based Training, and evolutionary generative-model training (E-GAN) built on top of it. More...

Files

file  cma_es.hpp
 A CMA-ES-*style* ask-tell evolutionary strategy (Hansen & Ostermeier's Covariance Matrix Adaptation Evolution Strategy) for continuous hyperparameter search: an adaptive mean, a per-dimension adaptive scale (separable/diagonal covariance, Ros & Hansen, "A Simple Modification in CMA-ES Achieving Linear Time and Space Complexity," PPSN 2008), and an adaptive global step size.
 
file  crossover.hpp
 Genetic-algorithm crossover operators: one-point, two-point, uniform (generic sequence genotypes), and blend/BLX-alpha, simulated binary (SBX) (real-valued genotypes).
 
file  egan_mutation.hpp
 E-GAN's own three named "mutation" objectives (Wang et al. 2019, "Evolutionary Generative Adversarial Networks") plus its sample-quality/diversity fitness metric. In E-GAN, "mutation" means training a copy of a generator against a different loss function, not perturbing its weights directly – a structurally different kind of mutation than this campaign's own Phase 3 NEAT/ES operators, which do perturb weights.
 
file  egan_training.hpp
 E-GAN's own full generational training loop (Wang et al. 2019): each generation, every population member independently attempts every given mutation objective (Phase 5 Mission 1) via a fresh weight-copy offspring, keeps whichever mutation scored the best combined fitness, then the shared discriminator trains on a real batch plus the (now-mutated) population's own pooled fake output (Phase 5 Mission 0).
 
file  evolution_strategies.hpp
 Evolution Strategies (Salimans et al. 2017, "Evolution Strategies as a Scalable Alternative to Reinforcement Learning"): a black-box, gradient-free optimizer over an arbitrary flat parameter vector, driven entirely by a scalar fitness function – zero inherent RL dependency, applicable to any fixed-topology network's flattened weight vector or any other real-valued parameterization.
 
file  evolutionary_loop.hpp
 The shared six-step evolutionary-loop skeleton (evaluate -> select parents -> vary via crossover/mutation -> evaluate offspring -> survivor-select -> loop), generic over which survivor-selection policy (survivor_selection.hpp) and which offspring-production recipe (selection + crossover + mutation, composed by the caller) is used.
 
file  fixed_topology_xor_network.hpp
 A small, fixed-topology (2 input -> 2 hidden -> 1 output, both layers sigmoid) MLP whose weights are a flat parameter vector, plus a plain analytic fitness function scoring it against the four XOR patterns – the "fixed-topology network" and "plain analytic fitness function" this campaign's Evolution Strategies mission needs, deliberately using the same XOR benchmark and the same fitness convention (4.0 minus sum of squared error) as Mission 2's NEAT proof, for a direct same-problem cross-check between the two techniques.
 
file  generator_population.hpp
 E-GAN's own population-of-generators infrastructure (Wang et al. 2019, "Evolutionary Generative Adversarial Networks"): N independently-parameterized generator Modules, and the concrete mechanism for training one shared discriminator against fake samples pooled from the whole population – in E-GAN, the discriminator's own training distribution is the union of every population member's output, not one generator's alone, which is what gives the discriminator (and, in turn, each generator's own training signal) a harder, more diverse target than a single- generator GAN ever sees.
 
file  hpo_genotype.hpp
 Decodes a real-valued genotype (a unit-hypercube point, one gene per parameter, each in [0, 1]) into a full hyperparameter Configuration – the encoding this campaign's GA operators (crossover.hpp/mutation.hpp, all defined over std::vector<double>) evolve directly, decoded only when a genotype needs to be evaluated.
 
file  individual.hpp
 A genetic-algorithm candidate solution: a genotype paired with its fitness.
 
file  mutation.hpp
 Genetic-algorithm mutation operators: bit-flip (generic boolean genotypes) and Gaussian, polynomial (real-valued genotypes).
 
file  neat_evolution.hpp
 NEAT's own generational evolutionary loop: fitness evaluation, speciation, fitness sharing, proportional offspring allocation, and mutation-only reproduction.
 
file  neat_genome.hpp
 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.
 
file  neat_phenotype.hpp
 Decodes a NEATGenome into an evaluable phenotype: a forward pass over the genome's own irregular connection graph.
 
file  neat_speciation.hpp
 NEAT speciation (Stanley & Miikkulainen 2002): a compatibility-distance metric over two genomes' gene lists, population grouping by that metric, and fitness sharing – the mechanism that protects a structurally novel but not-yet-optimized genome from being immediately out-competed before its innovation has a chance to be refined.
 
file  neat_xor_fitness.hpp
 XOR fitness function for NEAT – Stanley & Miikkulainen 2002's own validation task, chosen here for the same reason it was chosen there: XOR is the canonical not-linearly-separable problem, so a genome that solves it starting from a fully connected (no-hidden-node) minimal topology has genuinely grown new structure to do so, not merely tuned weights on an already-sufficient network shape.
 
file  nsga2.hpp
 NSGA-II multi-objective survivor selection (Deb, Pratap, Agarwal, Meyarivan, "A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II," IEEE TEVC 6(2), 2002): fast non-dominated sorting, crowding distance, and truncation selection.
 
file  pbt.hpp
 Population Based Training (Jaderberg et al. 2017, "Population Based Training of Neural Networks"): a population of live, incrementally-trained trials periodically truncation-selected – the bottom fraction exploits (copies weights and hyperparameters from a uniformly-randomly-chosen top performer) then explores (perturbs the copied hyperparameters) – producing a hyperparameter schedule (different effective hyperparameters at different points in training) rather than a single fixed configuration.
 
file  pbt_trial.hpp
 Extends the sibling HPO campaign's own ResumableTrial (successive_halving.hpp) with the weight/hyperparameter read-write capability Population Based Training's own exploit/explore step needs.
 
file  selection.hpp
 Genetic-algorithm selection operators (tournament, roulette/fitness-proportionate, linear-rank) over a population of Individual<Genotype, FitnessT>.
 
file  survivor_selection.hpp
 Survivor-selection policies for the evolutionary-loop skeleton (evolutionary_loop.hpp): generational replacement, (mu+lambda), (mu,lambda).
 

Detailed Description

A from-scratch, DEAP-free genetic-algorithm core (population/fitness/selection/ crossover/mutation, NSGA-II), plus neuroevolution (NEAT, Evolution Strategies), evolutionary hyperparameter optimization (CMA-ES), Population Based Training, and evolutionary generative-model training (E-GAN) built on top of it.