I love the idea of simulating evolution through computer models. The purpose of such an exercise is not so much to prove that evolution happened, or to prove that complexity can evolve from simple rulesets (though that’s certainly important), but to show that randomness and flexibility in solving tasks can create novel approaches that are more creative even than anything that intelligences like ourselves have worked out.
This particular example shows some behaviours from creatures built out of four types of blocks that emulate hopping, running and dragging themselves along a course, in a simulation where creatures that make it across a trial field quickest are rewarded by having more offspring in subsequent generations.
If you remember the Mona Lisa Project showing how randomly selected polygons can approximate a target image over time, that’s an example of brutal natural selection, where every iteration generates modifications on the last image’s “DNA” and selects the one of the two that is closer to the original. By default, with that kind of brutal evolution, you’re going to always and only select the one that’s closer, so you’re in a way directing evolution.
I decided that was too stringent, and wanted to prove that these same rules would work under more lenient conditions — e.g., ten offspring of an image with random mutations, and some of the less-adapted would randomly be killed. And I showed even more lenient selection criteria work. I also noticed a sort of punctuated equilibrium, sometimes resulting in evolutionarily novel and theoretically advantageous creatures emerging then being selected out completely by accident.
I really want to play around with the source code for this physics simulation, and/or build something similar myself. I’m sure I could introduce other types of blocks — like ones that give a creature lift if waved against air (e.g. pseudo-wings). Perhaps a hollow version of the hard-tissue structure, for creating hollow bones which are lightweight but brittle, and adding weight values to each block and incurring penalties based on how much space each creature takes up. Maybe even simulating creature failure, injuries due to flapping about senselessly, which impose huge penalties to reproductive fitness based on getting injured. Maybe rocky terrain, or water. So many things I’d like to see, just for the sake of seeing how a computer and a random number generator handles any given problem I throw at it.