Skip to content

About

Python implementation of the NEAT neuroevolution algorithm

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Tests Docs Coverage Status Downloads

About

NEAT (NeuroEvolution of Augmenting Topologies) is a method developed by Kenneth O. Stanley for evolving arbitrary neural networks. This project is a pure-Python implementation of NEAT with no dependencies beyond the standard library. It was forked from the excellent project by @MattKallada.

For further information regarding general concepts and theory, please see the publications page of Stanley's current website.

neat-python is licensed under the 3-clause BSD license. It is currently only supported on Python 3.8 through 3.14, and pypy3.

Features

  • Pure Python implementation with no dependencies beyond the standard library
  • Supports Python 3.8-3.14 and PyPy 3
  • Reproducible evolution - Set random seeds for deterministic, repeatable experiments
  • Parallel fitness evaluation using multiprocessing
  • Network export to JSON format for interoperability
  • Comprehensive documentation and examples

Getting Started

If you want to try neat-python, please check out the repository, start playing with the examples (examples/xor is a good place to start) and then try creating your own experiment.

The documentation is available on Read The Docs.

Network Export

neat-python supports exporting trained networks to a JSON format that is framework-agnostic and human-readable. This allows you to:

  • Convert networks to other formats (ONNX, TensorFlow, PyTorch, etc.) using third-party tools
  • Inspect and debug network structure
  • Share networks across platforms and languages
  • Archive trained networks independently of neat-python

Example:

import neat
from neat.export import export_network_json

# After training...
winner_net = neat.nn.FeedForwardNetwork.create(winner, config)

# Export to JSON
export_network_json(
    winner_net,
    filepath='my_network.json',
    metadata={'fitness': winner.fitness, 'generation': 42}
)

See docs/network-json-format.md for complete format documentation and guidance for creating converters to other frameworks.

Citing

Here are APA and Bibtex entries you can use to cite this project in a publication. The listed authors are the originators and/or maintainers of all iterations of the project up to this point. If you have contributed and would like your name added to the citation, please submit an issue or email [email protected].

APA

McIntyre, A., Kallada, M., Miguel, C. G., Feher de Silva, C., & Netto, M. L. neat-python [Computer software]

Bibtex

@software{McIntyre_neat-python,
author = {McIntyre, Alan and Kallada, Matt and Miguel, Cesar G. and Feher de Silva, Carolina and Netto, Marcio Lobo},
title = {{neat-python}}
}

Thank you!

Many thanks to the folks who have cited this repository in their own work.

About

Python implementation of the NEAT neuroevolution algorithm

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages