Skip to content

Instantly share code, notes, and snippets.

@nahiyan
Last active September 12, 2020 14:31
Show Gist options
  • Save nahiyan/a9b9a50318127b61bd3a40f0075f39da to your computer and use it in GitHub Desktop.
Save nahiyan/a9b9a50318127b61bd3a40f0075f39da to your computer and use it in GitHub Desktop.
Darwin

Darwin

A Modular, and Extensible, Biological Micro-Evolution Simulator.

Motivation

These days, AI is taking over the jobs of humans. Most of these AIs are powered by neural networks. Training neural networks is commonly seen as a process of making a neural network learn from examples. However, there are cases where it'd be much more suitable to let the neural networks learn by themselves, and often times we lack examples to use to train neural networks. Again, we have nowhere to look, but nature itself - darwinian evolution, which comprises of mutation and natural selection, is one of the coolest ways to get the job done. The applications are endless, and it'd be a shame to repeat the processes of training a neural network through evolution. Thus, the idea of "Darwin" came to existence - it's a modular biological micro-evolution simulator - which can be used to efficiently simulate evolution of neural networks through induced selection, which in turn can be used to train neural networks. You can focus on the training, and simulation, itself while Darwin handles the rest.

Core Concepts

Darwin comprises of a core, which handles the evolution of neural networks, and provides all the essential features. Extensions, which themselves are modules, can be fit into Darwin, powered by the core, to create simulations with custom environments, objects, selection, etc.

Darwin deals with mutation of objects of specific class, and utilizes induced selection to make them evolve. Through extensions, you can define objects of your own class, which can be a neural network, and define your own version of induced selection.

For example, you can make an extension which simulates evolution of biological organisms, each controlled by neural networks. You can program the environment as you desire. Moreover, you can program the selection procedure. The core module provides all the common things you need, and also acts as a platform/foundation/base for your simulation to run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment