Find the Right Version of NEAT for Your Needs

Since the original release of NEAT C++ over a decade ago, independent developers have continued to produce and release new versions of NEAT and its variants (e.g. HyperNEAT, novelty search, ES-HyperNEAT, etc.) for different platforms and languages. While the aim of this page is to make all these packages available, the hope is also to help you find the right one for you, and to clarify which ones are most popular and therefore most validated.

Classic NEAT HyperNEAT Novelty Search ES-HyperNEAT

If you want to share your own NEAT-related software on this page, please email kstanley@eecs.ucf.edu

To discuss NEAT-related software with other users, visit the NEAT Users Group

Classic NEAT (NeuroEvolution of Augmenting Topologies)

These packages offer the original NEAT algorithm.

NEAT Highly recommended: Popular Packages with Good Track Records

C# SharpNEAT. Colin Green wrote this version of NEAT in C#. Includes the XOR, predator/prey, pole balancing, and many other experiments. Among the most widely used NEAT packages.

C++ NEAT C++ Software Package for Linux. Ken Stanley's original C++ source code, intended for Linux. (Fernando Torres also hosts a reorganized version of this code at github.)

C++ Real-time NEAT C++ Software Package. A public version of the rtNEAT source code used in NERO. Provided with a public noncommercial research license. Examples of real-time main loops are provided.

C++ AccNEAT (accelerated NEAT) by Sean Dougherty. This version is an extension of the original C++ version by Ken Stanley but with several important changes that lead to significant acceleration (up to orders of magnitude). See the link for more information.

C++/Python MultiNEAT C++ with Python Bindings (Github at https://github.com/peter-ch/MultiNEAT) by Peter Chervenski. This package includes Python bindings with pickleable Genomes available through Boost.Python and is heavily commented. Also includes HyperNEAT, ES-HyperNEAT, and novelty search implementations.

Java Another NEAT Java Implementation (ANJI) Derek James and Philip Tucker wrote this alternate version NEAT in Java. It includes XOR and Tic Tac Toe.

Java NEAT JAVA. Ugo Vierucci wrote this version of NEAT based on Ken Stanley's original C++ source code.

Delphi Delphi NEAT Mattias Fagerlund wrote this version of NEAT in Delphi. It includes a number of nice graphical demos of evolved behavior. Mattias' coolest demos depict NEAT evolving various mobility strategies for 3D artificial creatures.

NEAT Newer Packages: More Recent Releases

Python NEAT Gym by Simon Levy and Coletta Fuller. Makes it possible to train, test, and visualize OpenAI Gym environments with the NEAT algorithm and variants including HyperNEAT, ES-HyperNEAT, and novelty search. Requires installation of neat-python and PURPLES (links and instructions are provided).

PyTorch PyTorch NEAT by Alex Gajewski. PyTorch NEAT builds upon NEAT-Python by providing functions that can turn a NEAT-Python genome into either a recurrent PyTorch network or a PyTorch CPPN for use in HyperNEAT or Adaptive HyperNEAT. It also provides environments in which to test NEAT and Adaptive HyperNEAT, and a more involved example using the CPPN infrastructure with Adaptive HyperNEAT on a T-maze.

Go GoNEAT by Iaroslav Omelianenko. This NEAT implementation in Go includes XOR (classic and with disconnected inputs), single and double pole-balancing experiments, and both Markovian and non-Markovian variants of the double pole-balancing version.

Lisp NEAT-Lisp by Dmitrii Korobeinikov. The first NEAT implementaton in Common Lisp. An XOR experiment and a novel experiment on pushing a ball in a physical simulator are included.

Elixir NEAT-Ex by Stuart Hunt. The first NEAT implementaton in the Elixir language. An XOR experiment and an experiment in evolving fish called FishSim is included.

Go NEAT Go by Scott Hummer. The first NEAT implementation in the Go language includes an XOR experiment and network visualizations.

Go Another NEAT Go by Jin Yeom. A newer implementation in the Go language also includes an XOR experiment.

Lua NEATEvolve.lua by SethBling. This source code implements the "MarI/O" demo of NEAT evolving a solution to a level of Super Mario World that received over 1,000,000 views on YouTube in two days in June 2015. See the video here.

C++ NEAT Visualizer SFML C++ by Eric Laukien. Variant of NEAT with implicit speciation instead of the usual explicit speciation, which means that organisms are not explcitly grouped into species, but they can only reproduce with other genes that are similar enough and fitness is modified according to compatibility. Includes a special visualization system and XOR.

Ruby RubyNEAT by Fred Mitchell. The only NEAT implementation available in Ruby includes XOR and parity examples.

C# for Unity UnityNEAT by Daniel Jallov. For those wanting to integrate NEAT into a gaming platform: SharpNEAT is ported in this package from pure C# 4.0 to Unity 4.x and 5 (using Mono 2.6). A car racing demo is included to make getting started easy.

NEAT Other Packages: Less Tested

These packages are not necessarily flawed but may involve some risk because they have received less usage and attention.

C++ Microsoft Windows NEAT C++ (See a screenshot ). Mat Buckland wrote this version of NEAT for Windows. It comes with an animated minesweepers experiment.

Matlab Matlab NEAT . Christian Mayr wrote this version of NEAT for Matlab. Includes the XOR experiment.

Java NEAT 4J. Matt Simmerson produced this Java-based version of NEAT, which comes with XOR and supports distributed evolution over multiple processes.

Python NEAT Python. Cesar G. Miguel and Carolina Feher da Silva maintain this project to bring NEAT to Python. XOR is included and the project continues to be developed. It can be checked out from the SVN repository and requires Python 2.5.

C# / Java / Silverlight Encog NEAT is part of a larger Neural Network Framework by Heaton Research. It is licensed under the LGPL and is available C#, Java and Silverlight.

Objective C ObjectiveNEAT is an implementation of NEAT by Ben Trewhella in Objective C, supporting applications on Mac / iOS devices. It comes with an implementation of XOR. Documentation is here.

Java XNET NEAT is part of the XNet simulation and evolution library by Michael Roberts that is included in this package.

HyperNEAT (Hypercube-based NEAT)

These packages contain the HyperNEAT extension of NEAT.

HyperNEAT Highly recommended: Popular Packages with Good Track Records

C# HyperSharpNEAT C# by David D'Ambrosio. This package extends Colin Green's original SharpNEAT (which originally did not include HyperNEAT) to run as HyperNEAT. A scalable robot food gathering domain is included.

C# SharpNEAT 2 HyperNEAT by Colin Green. Colin Green's new SharpNEAT version 2 also includes a complete extension of NEAT to HyperNEAT by Colin Green (as opposed to the above extension by David D'Ambrosio) . The boxes experiment is included.

C# HyperSharpNEAT-compatible multiagent robotics simulator and experimental platform By David D'Ambrosio, Joel Lehman, and Sebastian Risi. Includes a full multi-robot simulator with room-clearing experiment, visualization tools, sample genomes, and a nice GUI. Based on the D'Ambrosio extension of SharpNEAT. Other multiagent experiments can be implemented with it as well.

C++/Python MultiNEAT C++ with Python Bindings (Github at https://github.com/peter-ch/MultiNEAT) by Peter Chervenski. This package includes Python bindings with pickleable Genomes available through Boost.Python and is heavily commented. Peter explains how to use the HyperNEAT component: "The user only has to supply all the coordinates (through Python or C++) of inputs, hidden and outputs for the substrate and use the substrate each time with Genome.BuildHyperNEATPhenotype(). The Substrate class returns the number of inputs/outputs of the required CPPN and this data should be used when creating the CPPN seed genome." Also includes novelty search.

HyperNEAT Newer Packages: More Recent Releases

PyTorch PyTorch NEAT by Alex Gajewski. PyTorch NEAT builds upon NEAT-Python by providing functions that can turn a NEAT-Python genome into either a recurrent PyTorch network or a PyTorch CPPN for use in HyperNEAT or Adaptive HyperNEAT. It also provides environments in which to test NEAT and Adaptive HyperNEAT, and a more involved example using the CPPN infrastructure with Adaptive HyperNEAT on a T-maze.

Java Another HyperNEAT Implementation (AHNI) [Java] by Oliver Coleman. This Java-based version of HyperNEAT was produced by Oliver Coleman at The University of New South Wales by extending the pre-existing ANJI version of NEAT (which is written by Derek James and Philip Tucker). It includes visual processing experiments and vision-based RL experiments. Oliver also published an undergraduate thesis that explains these experiments in detail.

HyperNEAT Other Packages: Less Tested

These packages are not necessarily flawed but may involve some risk because they have received less usage and attention.

C# Keepaway HyperNEAT C# by Phillip Verbancsics. This version of HyperNEAT is in C# but it is coded entirely separate from the other C# versions. It comes with RoboCup Keepaway and a clone of the original RoboCup server entirely rewritten in C# for much faster speed.

C++ HyperNEAT C++ by Jason Gauci. Includes the scalable big box/little box visual discrimination task and a convenient GUI for exploring the substrate. Note that while this system is well-validated and tested, some have reported difficulty compiling it. (Updates may alleviate the compiling issue.)

Novelty Search

Packages below implement the novelty search algorithm.

Novelty Search Highly recommended: Popular Packages with Good Track Records

C++ Novelty Search C++ by Joel Lehman implements the novelty search algorithm introduced by Lehman and Stanley. The classic medium and hard maze experiments are included.

Novelty Search Newer Packages: More Recent Releases

Go GoNEAT Novelty Search by Iaroslav Omelianenko. This NEAT+novelty search implementation in Go includes a deceptive maze experiment.

C++/Python MultiNEAT C++ (Github at https://github.com/peter-ch/MultiNEAT) by Peter Chervenski includes an implementation of novelty search.

C# QD Maze Simulator with Novelty Search by Justin Pugh and Lisa Soros (built upon SharpNEAT 1.0 by Colin Green). This software includes a SharpNEAT implementation of novelty search along with a number of Quality Diversity (QD) algorithms (as described in Confronting the Challenge of Quality Diversity. A multi-maze experimental domain (a maze with multiple solution paths) is included as well.

C++ Multi-objective Novelty Search by Jean-Baptiste Mouret reproduces original Maze experiments from Lehman and Stanley.

Java Another HyperNEAT Implementation (AHNI) [Java] by Oliver Coleman. This Java-based package was produced by Oliver Coleman at The University of New South Wales by extending the pre-existing ANJI version of NEAT (which is written by Derek James and Philip Tucker) to HyperNEAT. It also includes a version of novelty search.

ES-HyperNEAT (Evolvable Substrate HyperNEAT)

ES-HyperNEAT packages can evolve the HyperNEAT substrate in addition to its weights.

ES-HyperNEAT Highly recommended

C# ES-HyperNEAT C# by Sebastian Risi. Implemented as an extension to the HyperSharpNEAT-Compatible Multiagent Simulator and Experimental Platform.

ES-HyperNEAT Incomplete/Experimental

C++/Python MultiNEAT C++ (Github at https://github.com/peter-ch/MultiNEAT) by Peter Chervenski includes an implementation of ES-HyperNEAT that is contributed by Vik Chudinov.

Java Another HyperNEAT Implementation (AHNI) [Java] by Oliver Coleman. This package contains an unvalidated attempt to implement ES-HyperNEAT. Attempts to fix it and make it functional are welcome!