Skip to content
Just another NEAT implementation.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd/naneatviewer
stuff
.gitignore
LICENSE
README.md
banner.go
doc.go
naneat.go
naneat_test.go
visualize.go

README.md

NaNEAT?

GoDoc

삿대질

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

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.

Installation

go get -v github.com/nanitefactory/naneat

Empirical Proofs

Learns to play Metal Slug 3

Metal Slug 3

Video: https://www.youtube.com/watch?v=rjrheRsWXR4

Solves XOR Problem

XOR-Test

Example

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.)

Features

  • Cross-platform throughout desktop environments; Windows, Linux and macOS.
  • The library may not depend on a particular programming language to use.
  • Entire codebase is written in Go which makes it lightweight and easier to maintain.
  • The experiment process is fully visualizable with faiface/pixel.
  • Can save/load the state serialized in JSON.
  • Offers a plain easy interface designed to be multi-threaded and may be said, horizontally scalable.

Todo

  • Performance evaluations
  • More tests and benchmarks
  • Documentation

References

License

MIT

You can’t perform that action at this time.