NaNEAT is a NEAT library made from scratch that's mostly for my own use. It is multi-threaded, and designed that way to become one day to be extended to a horizontally scalable microservice.
NEAT (Neuro-Evolution of Augmenting Topologies) is a genetic algorithm developed by Dr. Kenneth O. Stanley in 2002. Being based on the neuroevolution technique which evolves both topology and weights of an artificial neural network, NEAT starts out with a population of minimal structures and adds structure as necessary in order to minimize the number of parameters being searched. This allows the network topology to grow only as it benefits the solution, and through its learning process the structure of the neural network complexifies.
go get -v github.com/nanitefactory/naneat
Video: https://www.youtube.com/watch?v=rjrheRsWXR4
In order to conduct the XOR test implemented in this package, test run func naneat.TestMain(*testing.M)
.
go test -run TestMain
And the code below initiates a NEAT context that runs with 3 agents.
conf := naneat.NewConfigurationSimple(1, 2, 1)
experimenter := naneat.New(conf)
agent1, agent2, agent3 := naneat.NewAgent(), naneat.NewAgent(), naneat.NewAgent()
experimenter.RegisterMeasurer(agent1)
experimenter.RegisterMeasurer(agent2)
experimenter.RegisterMeasurer(agent3)
go experimenter.Run()
(Further detail of that sample is included in the standard test code in this package.)
Version | Tag | Published |
---|---|---|
v0.0.0-20200210195116-116bf7b360b0 | 2yrs ago | |
v0.0.0-20200210194106-7bfe94fd26ab | 2yrs ago | |
v0.0.0-20200210190055-c08d91160961 | 2yrs ago | |
v0.0.0-20200210183648-bc16f3a88638 | 2yrs ago |