What
I've generally come to refer to as 'bugs' in everyday (every
day) conversation, started as a series of experiments with cellular
automata and artificial life sometime in 1999. The idea was to create
a virtual environment where object-oriented beings would live out
their life according to various simple rules but left mostly to
random fate. What follows is a general description of these
experiments.
--
Beings,
or 'bugs' as I shall from here on refer to them, can perform one
action during a 'turn', or a tick of the system. This action can be a
movement by one 'step' in one of four directions (usually randomly
decided) on a plane, an attack on another bug in the same location,
the consuming of a resource available in the bug's current location,
or the spawning of offspring. Other variables are sometimes thrown
in, such as the introduction of different races of bugs, which do
battle against each other but not against their own kind, or of
multiple sexes which can only reproduce by inter-breeding.
With
all these various programs, the key motivating factor is visual
effect. In all cases, the virtual drama plays itself out in real time
graphics to the great fascination and amusement of all, and in this respect, none of
the demonstrations disappoint.
A
secondary hope is that the unpredictable interaction between
hundreds, and sometimes thousands, of these little creatures will
bring about unforeseen large-scale phenomena, which could have
complex properties worthy of study. This hope is also fulfilled in
many cases.
In
situations with multiple sexes, for instance, the preferred outcome
in most cases seems to be the rapid extinction of all but two sexes
which continue joint life ad infinitum. The second most common
outcome is a prolonged co-existence of the last three sexes, followed
eventually by the drop to the final two sexes, suggesting that the
most stable configuration is one with the fewest sexes necessary for
survival.
Other
interesting higher-level phenomena include various types of
population clustering, diffusion and, in more complex scenarios,
cycles of boom and bust.
--
One
of the experiments undertaken in this period was a basic example of
evolution through natural selection. A rudimentary mechanism was used
in which bugs, which were programmed to fight each other on sight, had
an inborn strength factor which determined the outcome of battles.
This factor was inherited by offspring, identical to their
parents, with an occasional mutation in the form of a random
increment or decrement of a new bug's strength factor. As expected,
the mean and average strength factor of the population grew over
time.
Early experiments demonstrated various high level phenomena.
This
experiment, though itself unremarkable, gave rise to a more ambitious
idea to construct a system in which every aspect of the bugs'
behaviour would be influenced by evolution. Instead of following an
algorithm for deciding every action, each bug would now have a
simple, personalized program which would determine its behaviour
during the course of its life. A description of this system follows.
--
The
brain-program for each bug is composed of a series of statements of
the form
Cond1
Cond2 ... CondN Action
which
means "If conditions Cond1 through CondN are all satisfied, perform
Action, otherwise continue down the program." The system itself
interprets these high-level programs. Some examples of conditions
which can be tested are whether a resource is present in the current
location, whether the bug is being attacked by another, or various
self-diagnosing conditions, such as whether the bug is running low on
resources. Actions that a bug can take are "move north", "consume
resource", "spawn", "shield", et cetera.
The
system starts with a base population whose brain-programs are
generated randomly. A small portion survive, and evolution begins.
During reproduction, small mutations are applied to the child bug's
program, such as flipping a condition to a different one, changing an
action, or adding or deleting a condition. Sometimes, a random line
is added to the program, or a randomly chosen one is deleted. Bugs
have the option of reproducing asexually, by spawning copies of
themselves, or sexually, by merging their programs (via various
algorithms) with another bug to create a new one.
As
time ticks in the system, the bugs' programs get increasingly
rational, and in them we quickly start finding lines such as
If
food is low and there is food to the north, move north.
or
If
food is present, eat food.
Various
things can be done to influence the development of these
brain-programs. For example, the growing size of the programs as
evolution progresses can be countered by modifying the rules so that
the amount of food that a bug needs is influenced by the size of its
program - bugs with bloated brain-programs need more food to
sustain themselves. As expected, this results in leaner and more
elegant brain-programs.
--
In
addition to fascinating results in the realm of genetic programming,
the new system greatly added to the complexity of large-scale
phenomena. As evolution altered the bugs' behaviour through the
generations, the behaviour of groups also changed over time. Various
cycles and trends became more pronounced and there was now a palpable
sense of some kind of history unfolding as the system ticked. Also,
different runs now gave rise to very diverse bug worlds. Some runs
would result in swarms of bugs which ran across the surface of their
two-dimensional world consuming resources, some in bug clusters,
others in vast areas of dispersed, wandering bugs. Altering the rules
of the system and the initial distribution of resources also had
interesting and often unpredictable effects on what sort of behaviour
the bugs would exhibit on a large scale.
Some runs would see swarms of bugs running across the surface and later forming clusters.
In
the last stages of the experiment, additional complexity was added to
the virtual world, such as the presence of a resource I called
'water', which covered some parts of the surface and was needed by
the bugs for survival, but in which they quickly died ('drowned') if
they failed to return to 'dry land'. In some cases, this situation
gave rise to 'coastal cities', clusters of bug populations on the
edge of the water. Attempts were also made to introduce climate conditions,
such as periods when resources rain onto the surface, followed by droughts,
during which resources would be gradually taken away, resulting in dwindling
but increasingly crafty populations.
Bugs reaching food supplies (green) in an environment featuring 'water'.
As
eye candy, the Bug Worlds are great. As science, they are perhaps not
as impressive, but one should not overlook the symbolic and artistic
value of playing God with a self-contained universe of helpless and
hapless digi-insects.
As
my interest in the bugs grew, later versions of the software were
made to be more accomodating to post-mortem examination. During each
run, they periodically dumped maps, brain-program listings and
various statistics regarding population, resources, et cetera. Some
of these map series were combined into movie files for the ultimate
user-friendly enjoyment, and now offer a convenient overview of some
of the more interesting bug scenarios.