Not long ago* I started out on a bold new coding adventure to create a toolkit for performing simulated evolutionary experiments.
I have a history of such things, having played around with evolution for 20 years or so, starting with little experiments at university consisting of neural networks and simulated robots in simple little artificial worlds. Evolution is fascinating for many reasons, the most engaging being that (real-world, theologically-led, entirely-wrong intelligent design arguments aside) it unequivocally works.
Take a simulated world. Give it some rules. Give it some denizens. Figure out some way of saying that any given one of them is better or worse than any other given one of them at doing whatever it is you’ve set them to do. Then create their offspring by gluing together the attributes of those that are best at doing that thing, whilst throwing a little (but not too much) randomness into the mix, and you’ll see evolution march them up the slopes of mount improbable in ways you’d never expect.
The more nuanced and interacting the rules of the world, the more intricate and expressive the dynamics, and the more unexpected and novel the results.
Which all sounds very conceptual and vague, which is not the aim of this at all.
The aim of this is to create an open-source evolutionary toolkit, focusing on functionality by implementing robust example experiments and refining the framework as I go. This blog is to record the results of these experiments, my design decisions and reasonings behind them, my assumptions, mistakes and changes of mind, and any interesting conclusions or pretty pictures that result.
I have a few months head start on implementation because, however many times I thought to start this blog, programming > writing. Fortunately that’s also given me a head start on results and pretty pictures (the latter being central to the potential interest of any blog). Sadly the first experiment I chose doesn’t contain any pretty pictures at all, but as it is the first experiment I chose it should probably be the first one I write about.
So, on then to the aesthetically challenged world of minimal sorting networks…
*May 2nd 2016 according to my Perforce changelists