CodeReclaimers/neat-python
Python implementation of the NEAT neuroevolution algorithm
3 Releases
Latest: 2mo ago
v2.0.1Latest
Patch release with bug fixes and Python 3.12+ compatibility improvements found during a code quality review.
Version 2.0.0v2.0.0
The CTRNN (Continuous-Time Recurrent Neural Network) implementation now supports per-node evolvable time constants. In v1.x, all nodes shared a single fixed time constant passed at network creation time. In v2.0, each node carries its own time constant as an evolved gene attribute, allowing the network to operate across multiple timescales simultaneously. This is a breaking API change: CTRNN.create(genome, config, time_constant) is now CTRNN.create(genome, config). Existing feedforward and discrete-time recurrent configurations require no changes.
Version 1.1.0v1.1.0
✨ Added
- Reproducibility Support: Evolution can now be made deterministic by setting a random seed
- Optional `seed` parameter in `[NEAT]` config section
- Optional `seed` parameter in `Population.__init__()`
- Optional `seed` parameter in `ParallelEvaluator.__init__()` for reproducible parallel evaluation
- Comprehensive documentation in `docs/reproducibility.rst`
- Fully backward compatible: Existing code works without changes
- New Examples:
- Inverted Double Pendulum example using Gymnasium
- + 2 more
📋 Changed
- Switch to pyproject.toml instead of setup.py
- Dropped support for Python 3.6 and 3.7; neat-python now requires Python 3.8 or newer
- Modernized internal implementation to use Python 3 features (f-strings, type hints, etc.)
🐛 Fixed
- Add-node mutation bias behavior: New nodes now start with zero bias for more neutral mutations
- Checkpoint Generation Semantics: Clarified checkpoint numbering and generation alignment
- Population Size Drift: Fixed population size mismatches
- Orphaned Nodes Bug: Fixed handling of nodes with no incoming connections
- For complete details, see the [CHANGELOG](https://github.com/CodeReclaimers/neat-python/blob/master/CHANGELOG.md).
- ---
- Install: `pip install neat-python==1.1.0`