Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mishig25/neuroevolution-robots
Neuroevolution demo through TensorFlow.js, Neataptic, and Box2D
https://github.com/mishig25/neuroevolution-robots
evolutionary-algorithms genetic-algorithm neural-network tensorflow tensorflow-experiments
Last synced: about 1 month ago
JSON representation
Neuroevolution demo through TensorFlow.js, Neataptic, and Box2D
- Host: GitHub
- URL: https://github.com/mishig25/neuroevolution-robots
- Owner: mishig25
- License: mit
- Created: 2018-12-05T07:47:56.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-03T19:19:05.000Z (over 4 years ago)
- Last Synced: 2024-11-22T04:31:19.963Z (about 1 month ago)
- Topics: evolutionary-algorithms, genetic-algorithm, neural-network, tensorflow, tensorflow-experiments
- Language: JavaScript
- Homepage: https://mishig25.github.io/neuroevolution-robots/
- Size: 1.78 MB
- Stars: 37
- Watchers: 4
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Neuroevolution-Bots
Neuroevolution-Bots is a personal project that demonstrates [neuroevolution](https://en.wikipedia.org/wiki/Neuroevolution) in a browser environment using [TensorFlow.js](https://js.tensorflow.org/), [Neataptic](https://github.com/wagenaartje/neataptic) (for neural nets) and HTML5 Canvas (for graphics). I tried to create a scaled down 2D version of the popular [Gym's Humanoid-v2 environment](https://gym.openai.com/envs/Humanoid-v2/) using [Planck.js](http://piqnt.com/planck.js/), a JavaScript rewrite of Box2D.![screen capture from demo](https://github.com/mishig25/neuroevolution-robots/raw/master/ss.gif)
The bots in the simulation have simple brains (neural nets) that control their movements. Input to the brains: bot's head position in the world space and angles of bot's leg and knee joints; output of the brains: rotation forces to bot's leg and knee joints. After every iteration, a fitness function chooses the most fit bots to the next iteration (fitness score of bot: how much the bot traveled to the right + whether bot fell down or not).
Two variations of neuroevolution are available:
* [NEAT](http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf) (network architecture and weights are updated) (using [Neataptic.js](https://github.com/wagenaartje/neataptic))
* Vanilla Neuroevolution (only network weights are updated) (using [Tensorflow.js](https://www.tensorflow.org/js))## TRY THE DEMO: [here](https://mishig25.github.io/neuroevolution-robots/)
References and inspirations:
* [Uber's blogpost on Deep Neuroevolution](https://eng.uber.com/deep-neuroevolution/)
* [Evolving AI Lab posts](http://www.evolvingai.org/robotics)
* [Roboschool by OpenAI](https://github.com/openai/roboschool)
* [Evolution Simulator by Aditya Thebe](https://github.com/adityathebe/evolutionSimulator)
* [Tweet by hardmaru](https://twitter.com/hardmaru/status/1007150247829594112?lang=en)License:
MIT