Ok firstly, seriously people am I the only person posting on this blog at the moment? I mean one more post and the entire first page will be nothing but posts from me and I’m pretty sure our readers don’t want to just be hearing from me all the time.
Secondly I have to acknowledge that there is a very good chance, judging from the reactions of people I know, that no one else is going to find this as remotely cool, interesting or hypnotic as I do. I completely expect that many of the comments on this one will be along the lines of “erm ok then” or the ever popular “WTF!”
So a while back, inspired by similar things from the likes of CDK007 and Thunderf00t, I decided to try and write a little program that would visually demonstrate the principles of evolution by natural selection. I know, my life really is that exciting. I decided to create a little population of computerised bugs and by simply applying selection pressure to them show how they could evolve over the generations to be better suited to their environment. The main difference, between my program and those of the afore mentioned YouTubers, is that I wanted to make my version interactive so that people could play around with it to their hearts content. With that in mind I made a whole host of changes to the original version of the program I had written before so that it is now possible to play around with a number of different selection pressures and change the environment in which the bugs live at will. Finally I made the decision to share it with the rabid horde here at the League of Reason. So with no further ado, and with some trepidation, I give you:
For more details of exactly what is going on in this program check below the fold.
Ok so the Bug Evolver program works by utilizing basic evolutionary principles. None of the outcomes are hard coded and you will get a different specific, though similar general, result every time the program runs. I’ll say that bit again in case there are any creationists reading this. The outcomes in this program are not coded into it. The program simply applies the principles of mutation and selection to reach a result that appear, and I can’t resist putting it this way, designed.
The program starts by generating 40 random bugs. All the bugs are given a randomly generated colour, randomly sized body parts and a random sex (see pictures 1 and 2). Though the number of size combinations is more limited the colour values are based on the standard RGB colour model, which means that there are 16,777,216 possible colours available to the bugs. The environment is also assigned a completely random RGB colour.
Now comes the selection bit. The program identifies the five bugs the least match the background colour, or in other words are the least fit to survive in that environment, and kills them off (picture 4). It also identifies the bug the is best suited to the environment (picture 3) though this has no really effect on how the program works and is just a little something I wanted to put in there.
Once the five bugs that are least suited to the environment are removed the program then kills off a further five bugs completely at random (picture 5). From the remaining 30 bugs a random male and a random female bug is selected and the values that make them up, their genes if you will, are mixed to produce a new bug (picture 6). At this point five genes, four related to size and one related to colour, are picked at random from the 14 genes that makes up the bug and are assigned a random value mutaion, either increasing or decreasing their current value by a small amount. This is repeated ten times until the bug population is brought back up to the full 40 again, at which point the process repeats itself.
And that is pretty much all there is to the program. By simply selecting and removing the worst bugs and randomly mating the remaining bugs the overall bug population evolves over the generations to better fit the environment. Now yes I know the creationists will point out that this is only “Microevolution” and not “Macroevolution” but the exact same principles apply no matter what level you are talking about. Evolution is real, get over it.
Now there are a couple of other options that you can turn on and which change the way the program works slightly. The most dramatic is the sexual selection option. What this does is change the way in which the parent bugs are selected to produce the next generation. The female bug is still selected completely at random but instead of just selecting one male bug the program now picks two. These two bugs then compete for the right to mate with the female. The program uses a very simple equation to work out which of the two bugs is the biggest and strongest and that one gets to mate. Also when sexual selection is switched on certain genes are transferred to the offspring from the male bug for male children and from the female bug for female children. This allows the program to simulate the effects of sexual dimorphism.
There is an option that allows you to select by size as well as colour and results in bugs getting smaller. This, when combined with the sexual selection, can result in very large male bugs and small female bugs. It also can result in the entire male population being killed off and is, if you will excuse the pun, one of the unwanted bugs in the program. Lastly there is the option to apply frame shift mutations. The frame shift mutations, currently, only apply to the colour of the bug and allow for rare instances of dramatic change to the colour of the bug. Rather than just changing the value of a single gene slightly these frame shift mutations shift the various values of the colour genes one way or the other. For example the red gene gets the value of the blue gene, the green gene gets the value of the red gene and the blue gene the value of the green gene. All the values are shifted either to the right or the left, again completely at random. This can add much needed variation to a population where the gene pool has become limited.
Anyway go have a play with the program and let me know what you think. Also if you are interested here are some other videos that demonstrate these principles in action and explain them a lot better than I just did: