Skip to content
/ darwin Public

Implementation of the NEAT Genetic Algorithm in Rust

License

Notifications You must be signed in to change notification settings

vspecky/darwin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Darwin (Beta)

Implementation of the NEAT Genetic Algorithm in Rust.

As of 11th August 2020, the Algorithm is complete, tested and usable. I will try and perform optimizations wherever I can.

What is NEAT?

NEAT stands for NeuroEvolution of Augmenting Topologies. It is a Genetic Algorithm that evolves TWEANNs (Topology and Weight Evolving Artificial Neural Networks). This algorithm is a bit different from other Neural Network evolving Genetic Algorithms because here, the Topology of the ANNs is also evolved instead of just the weights.
NEAT derives its inspiration from real world genetics. In genetics, two genotypes cannot cross-over unless their constituent genes have a certain degree of similarity. NEAT reproduces this logic by having a mechanism that keeps track of the history of Innovation (or evolution) over time so we can have a measure of how similar two members of the population (here, Neural Networks) are and also what similarities they share. This allows us to effectively perform crossover between two Neural Networks no matter what the topology is. Additionally, the similarity measure also allows us to perform speciation, so we can group up similar neural networks and have them compete within their own niche. More Info can be gleaned by reading the original paper. (Link is down below)

Basic Usage Example

For a usage example, look at tests/xor.rs.

TODO

  • Minor Optimizations
  • Documentation
  • Genome Serialization for later use

Useful/Interesting Videos Showcasing NEAT

Reference

K. Stanley, R. Miikkulainen (2002) 'Evolving Neural Networks through Augmenting Topologies'

About

Implementation of the NEAT Genetic Algorithm in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages