CodeReclaimers / neat-python

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

Multiobjective Fitness: NSGA-II #215

Open hugoaboud opened 3 years ago

hugoaboud commented 3 years ago

Hi, I've been working on an implementation of NSGA-II as a Reproduction method for NEAT, in order to allow dealing with multiple fitness values. The readme presents all the details.

A small 2D hoverboard example was designed to benchmark the NSGA-II in comparison to the DefaultReproduction method. All the details and result comparisons are described on the hoverboard readme.

hoverboard

It has shown promising results, and was built with minimal (and backwards-compatible) modifications to the original library code. I hope you find it interesting. I'll outline here the commits that modify the original lib files:

coveralls commented 3 years ago

Coverage Status

Coverage decreased (-5.6%) to 90.53% when pulling 73618fdfb393df8b6816213547b2ade419151afc on hugoaboud:master into c2b79c88667a1798bfe33c00dd8e251ef8be41fa on CodeReclaimers:master.

coveralls commented 3 years ago

Coverage Status

Coverage decreased (-5.6%) to 90.563% when pulling 73618fdfb393df8b6816213547b2ade419151afc on hugoaboud:master into c2b79c88667a1798bfe33c00dd8e251ef8be41fa on CodeReclaimers:master.

CodeReclaimers commented 2 years ago

Thanks for the pull request, and sorry it's taken me so long to get around to commenting here. Adding some kind of support for multiple objectives is a good idea, and I'll see if I can get this integrated in the near future.