Evolution Experimentation Module Complete

With the Genetic Mutation Engine completed, I wanted to put it to actual use. While it’s fun to put complex SynthNet networks through the mutation process and watch the really cool looking results, manually doing it doesn’t really serve much of a purpose. However, now that the Evolution Experimentation Module is complete, the real power of the mutation engine is unlocked.

Artificial Selection in Action

The Evolution module allows us to take an initial, manually created SynthNet network (as simple or complex as desired), test how effective it is in a task, and then either allow it to reproduce and continue on its genetic line, or prevent reproduction in the case of decreased task effectiveness. It performs this across multiple “breeds”, or equally effective genomes, until a novel mutation shows improved performance, which is considered a new “species”. This, in effect, emulates multiple genetic lines competing at a user-defined task, and artificial selection based on that task dictating the path of evolution of the SynthNet network.

Stores and manages all “breeds”, or equally effective genomes, across all mutations.

Selects for new “species”, or more effective genomes, and blocks reproductions of less effective species.

Detects cancerous (continuous) or unstable (requiring too much processor/memory to be feasibly used) networks and does not select for them.

Can be used with any user-defined (programmed) task with a result that can be quantitatively graded, allowing full flexibility to direct artificial selection.

Along with effectiveness, also stores structure (segment) count, neuron count, synapse count, effectiveness, and a graphical snapshot of each mutation.

Stores all data into a MySQL database, to allow for easy continuation of experimentation after interruption, as well as viewing results on the web (coming soon!).

Programmed in Python for easy use/alteration/integration.

All interaction between the Evolution module and SynthNet is done via the Peripheral Nervous System Protocol, allow for remote use (allowing SynthNet to be run on a remoteserver with increased resources and client to be run at home).

Also provides menu to send manual commands to a SynthNet network via PNSP for easy manual manipulation, testing, and troubleshooting.

I’m currently trying it out by artificially selecting for a neural network that can detect parity (even/odd) in numbers. We’ll see how it does – once I have some results, I’ll be creating the front-end user interface to browse through mutations/results/pictures on the web. Hopefully more on that soon!

2 Responses to Evolution Experimentation Module Complete

I accidentally stumbled across your article in Qualcomm, and I think you may be onto something here. I have been dabbling in AI for years now but realized that part of the problem is that was no feedback mechanism to teach. You approach incorporates this and can be implemented alongside more traditional Expert Systems. I would like to help if possible. I do not have a background in Python, but I do have other programming languages and I am more than willing to learn. I also have some time at my disposal as well as quite a few multicore computers that can be left to coninuosly run and test code. Please let me know if there is anything I can do to help you in this worthwhile endeavor.