Introduction
This project is a JavaScript-based implementation of NEAT (Neuroevolution of Augmenting Topologies), an evolutionary algorithm developed by Kenneth O. Stanley and Risto Miikkulainen. Originally introduced in their 2002 paper, Evolving Neural Networks Through Augmenting Topologies, NEAT presents a novel approach to evolving artificial neural networks by optimizing both network weights and structures over generations.
In this implementation, NEAT’s principles are faithfully applied, emphasizing the algorithm’s core components: speciation, crossover, and structural mutation. These elements enable neural networks to adapt in complexity as they evolve, making NEAT a unique approach to neuroevolutionary algorithms.
This implementation offers a clear, accessible codebase for those exploring NEAT and has achieved results comparable to the benchmarks demonstrated in the original paper, providing a solid foundation for further exploration and development.
Features
- Faithful to the original paper — implements NEAT as described by Stanley and Miikkulainen: innovation numbers as historical markings, speciation to protect innovation, and complexification from minimal initial networks.
- Node.js & browser — ships as an npm package and a single browser bundle; the same API runs on the server and on the client.
- Fully configurable — speciation, mutation rates, activation functions and fitness functions are all tunable, or bring your own.