Evolving pseudo-creatures in computer simulation to run a short course

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.

{advertisement}
Evolving pseudo-creatures in computer simulation to run a short course
{advertisement}

5 thoughts on “Evolving pseudo-creatures in computer simulation to run a short course

  1. 1

    This is something I’ve always been interested in too. A bunch of years ago, I wrote up notes for a program I called “Operation Fishtank,” where the idea was to create evolving organisms out of random collections of cells kind of like the examples here. There were a lot more different kinds of cells that I had ideas for, besides muscles, though — mouth cells to eat food in the environment, sensor cells and nerve cells to pass around information about the environment inside a creature, a brain cell that would copy the creature with a possibility of mutations if it was getting enough food, armor to resist the mouths of other creatures, etc. It was all quite elaborate, but I had nothing close to the programming capacity to pull it off. I’m a game designer, not at IT guy. If anyone is interested, I’d be happy to send on my notes and ideas.

  2. 3

    Boxcar2D is awesome. I hadn’t seen it before your comment, but I ended up running out my laptop battery just showing it to people at the board game convention I was at over the weekend. Ran it overnight with a few types of terrains for the past two nights. Easily something I could sink lots of CPU time both trying to intelligently design a car, and just letting it run in the background.

  3. a m
    4

    Theory of entropy says that entropy of the universe is always increasing. Since evolution produces extremely ordered systems, there has to be a compensator to make sure that overall entropy only increases.

    It is not clear in what way the decrease in entropy due to creation of living systems is compensated by increased disorder in their surroundings and whether it happens at the same time or there is a sort of storage or delay in increase of overall entropy.

    Is it inevitable that finally all living systems will destroy themselves and their environment in order to restore the universe to its natural state of increased entropy ?

Comments are closed.