Wednesday, November 5, 2014

Artificial Life

Way back in 1989, I read an article in Scientific American ("Mathematical Recreations") which described a simulation which showed evolution of a very simple "bug".

The genome of the bugs consisted of six numbers that weighted a random selection of which direction each bug would go in the next time step (forward, left, hard-left, backward, hard-right, and right). The bugs would eat "bacteria" which rained down around them, reproducing if they ate enough, but starving to death if they didn't.

Along the way, bugs would evolve different strategies depending on the environment they found themselves in. If they found themselves in a highly food-rich environment, it was more advantageous for them to stay in the same place. If they found themselves in food-poor environments, it was more advantageous for them to keep moving whatever direction they were going.

I thought this was a really cool idea and set about writing my own version of the program. My bugs had a genome of eight numbers, but otherwise they were identical to the original. I worked on the project periodically over several years, eventually producing the version seen at left in 2006. Thousands of bugs (green) cruising around a screen full of bacteria/food (blue) that rains evenly over the screen (at a higher rate in gardens) can be seen at left.

In the later versions of the program, I took some effort at visualizing how the bugs were evolving. At first, I simply plotted the population size over time and compared the resulting curves across different runs of the program. I figured out that the system would consistently support a higher number of bugs if they were allowed to mutate instead of just replicate. The bugs reached population densities about 10% higher than in the no-mutation control.

I then realized I could convert the genome into a 2D coordinate, describing the propensity of each bug to go in each direction. This would let me observe the behavior of the population at a glance.

The video at right starts with the population of genomes clustered around the center. They have no initial tendency to go any where and walk around randomly.

The distribution soon widens to the right and left, as many of the bugs replicating in the gardens are turning in tight circles.

By about 0:02, the population has split into three groups. The left and right have moved downwards as the garden-bugs are increasingly turning around during each time step, going nowhere at all. The center region has started to move upward, showing the specialization of the wide-open-bugs for moving forward at increased rates.

 The three populations continue moving through the remainder of the video. The wide-open-bugs experience large periodic population cycles as they deplete their food source and die back, while the garden-bugs with their much more rich food source show a more constant population over time.

The video above shows a version where mutations are introduced every time a bug divides. If mutations are introduced only when a bug is starving, which potentially allows a single bug to mutate into a better strategy and so keep on living, a much tighter population distribution results. In the figure at left, three separate runs have been overlaid (in red, green, and blue, respectively). In these simulations, six gardens were available, but only a limited number were colonized. Each colony is represented by a single cluster of genomes in the lower half of the image.

Being able to experiment with evolutionary concepts on my computer helped me learn about biology and represented a stepping stone on my way to my current approaches to understanding biology. This system is limited, it can only evolve to a few end points.

Other systems can evolve in a much more complicated way. In Tierra, the evolution of short computer programs develops into a rich ecosystem of interacting organisms. Parasites evolve, followed by hosts that are resistant to those parasites.

The term "evolvability" is used to describe these differences in how different systems can evolve. Our biology has a very high evolvability, while my little simulation has a very low evolvability. What allows a system to have a higher evolvability seems to be related to how complicated the interaction of an "organism" is to its environment, as well as how complicated its genome is.

My bugs can only interact with the density of food and their genome is eight numbers. The bacteria living in my gut can interact with me, my food, other bacteria, radiation from the sun, etc. and their genome can grow or shrink as needed. Simulations with higher evolvability invariably show more of the features that we see in living things and so are more useful/interesting for studying real living things

Systems that show any evolvability at all are interesting and included in the subject of "artificial life". Hypothetically, you could be a "biologist" and never look at a messy living thing. I like studying the messy living things too.  ;-)

  3. Tierra :
  4. Critters :
  6. Polyworld :