CodeReclaimers / neat-python

Python implementation of the NEAT neuroevolution algorithm
BSD 3-Clause "New" or "Revised" License
1.41k stars 490 forks source link

Checkpointer dumps population after reproduction #213

Open hugoaboud opened 3 years ago

hugoaboud commented 3 years ago

Hi, I'm working on a fork of this repository and I've realized the Checkpointer reporter uses the end_generation callback, so most of the individuals dumped have not been evaluated yet.

Is there a reason why end_generation is the default callback here? It feels kinda wrong.

I needed to store the evaluated population, so I've changed it to use post_evaluate instead. Also, in order to store the best_genome correctly, the call to post_evaluate on population.py was moved past the best_genome evaluation, and best_genome was added to the pickle dump method. All the changes are documented on the commit.

Please let me know if this is desirable on this fork and I'll make a pull request :)