Skip to content
klokare edited this page Jan 24, 2018 · 4 revisions

I came to NEAT rather late into the game, around the same time I started learning Go. The checkers problem described in Blondie24 lit a fire in my brain and Google searches ultimately led me to papers about HyperNEAT. From there, other papers and articles from Stanley, Risi, Green, and many others merely made that fire grow larger. By approaching NEAT after reading topics like ES-HyperNEAT and Novelty Search, I could see how these new concepts built upon the original idea but also required, sometimes significant, changes to original implementation. In a almost certainly foolish burst of ambition, I set out to create the first Go-based NEAT library with the added self-imposed pressure of utilising only the papers and articles online as my guide and not by porting an existing library.

The first version came online a few years ago and Dr. Stanley kindly added it to the master list. My XOR example worked. Well, mostly worked. Whereas Stanley's original version had a mean failure rate of only 36.5 per 1000 runs (13 per 1000 if you switch the new weight function from random() to gaussian()), my implementation had a failure rate over 100! Changing some parameters or allowing for many more iterations lowered that failure but left me unhappy for not being able to approach Stanley's results using his parameters. This led me to tinker with, and ultimately break, my library and, in poor stewardship of open source software, I allowed that broken library to linger out on Github.

evo attempts to make up for my early foolishness by reaffirming the original goal (a solid library based on articles and papers) but incorporating everything learned after years of programming in Go, participating in other projects, and reading the advances the community continues to make in neuroevolution.

In the meantime, Jin Yeom released another Go-based, NEAT library. His efforts not only provide another implementation for the community to use and study, but also served as inspiration for me to be deliberate about releasing and maintaining evo. Thanks, Jin.

Clone this wiki locally