Modeling Evolution (3)

Major changes since the last update:

  • Multiple organisms can now inhabit the same square. This is a better model of reality. You might starve trying to live in the same area with another organism, but you’re now free to try. This is a bit of evolutionary pressure to encourage movement. The shade of the square indicates how dense the population is.
  • The fertility of the landscape is now shaped by Perlin Noise. I have been amazed by how flexible Perlin noise is just by tuning some parameters. I have tuned it so that there seem to be some rolling hills, yet some sudden dead spaces (salt lakes, perhaps) and also sudden lush spaces. Overflow is fun.
  • There is now a distinction between carnivores and herbivores. Attacking versus foraging is now a “conscious” decision in the genome. (If a genome encodes neither, it can slowly absorb energy, perhaps like a plant.) But how to attack? Yes, organisms can now “see” in some limited sense, and direct their attacks. I haven’t yet observed deliberate attacks, but it’s now possible. These carnivorous attacks (whether deliberate or random) are now visible, because they are briefly outlined in red.
  • Organisms now have a “phenotype”. This is just a crude attempt to group similar genomes. Organisms “see” phenotypes, and they attack based on phenotype. My hope is to eventually create “herds” or “tribes” based on phenotype. They are still free to evolve in a limited sense while still remaining in the phenotype. My concept of phenotype is loosely based on basic blocks from compiler theory.
  • Removed prior “artificial” attempts to encourage evolution. Organisms can still send and receive information, but I’m not encouraging “meaning” on this. The behavior is starting to (potentially) get complex enough that I am now stepping out as “god”.
  • Moving organisms can wrap around the screen.
  • Organisms now get to execute their cycles in a randomized order, in a hope to remove some artificial biases.
  • Organisms keep a log of their major events. If I ever observe interesting behavior, I want to rewind the clock and understand the why and how.

A fundamental acknowledgement here is that I am not modeling physical creatures. I don’t have enough computational power (or intelligence or time) to do this. I am trying to model higher-level actions, but somehow roughly tie it back into the phenotype so that I might see tribal behaviors.

It’s still enough of a hack-job that I haven’t put it on GitHub. I just toy with it now and again, with the occasional stolen half-hour. Sometimes a run starts out interesting, but then degenerates into looping behavior. I think that means I’m either still asserting too many artificial influences, or (most likely) I don’t have enough parallelism, randomization, and computational power.

But it’s still fun. Maybe someday I’ll step back in as god, and see if I can evolve religion. Just kidding; I’m not that mean.

Evolution screenshot

October 9, 2015
484 words


evolution modeling software



ccoffing on GitHub

ccoffing on LinkedIn