Differences from Tierra
MacTierra is an independent implementation of Tierra,
based initially on published works describing that system, and modified more
recently after communiction with Tom Ray, the author of Tierra.
As a result, the details of the implementation are fairly
close, but not identical to Tierra. It is highly likely that the two programs will
in future diverge -- Tierra is becoming network-savvy, and I have ideas for developing
MacTierra in other, more modest, ways. Here I document those differences from Tierra that
I know about.
This page may in future expand to present data from both systems performing runs
with similar parameters.
I made a decision early on in MacTierra to stick with 16-bit registers in the CPU stucture.
This means that creatures can address a soup space of 64k in total, which is fine if the
soup is 64k or smaller. However, larger soups require a different addressing scheme.
Rather than increase the registers to 32-bit quantities, I took a different option, which
is to make addressing relative. This means that, instead of containing an absolute
address in the soup, each creature's instruction pointer contains a value which specifies an
offset from the start of the creature. In this way, creaturs can address a space of 32k
each side of themselves, so can spread through soups of any size. The evolutionary consequences
of relative addressing are unclear at this point, though it does mean that creatures can
sometimes lose instructions which, with absolute addressing, are needed to find one's
beginning. Since creatures's registers are initialized to zero, they automatically
point to the creature's start.
The details of flawed instruction execution are unlikely to be identical to those in Tierra.
This may have quite significant effects on the evolutionary dynamics.
In MacTierra, creatures are entered into the genebank when they have reproduced just once,
successfully (i.e. have created one offspring that is a faithful copy). Tierra uses a number
of different criteria for entering creatures into the genebank, such as occupying a certain
proportion of the soup, or creating two offspring.
Other implementation details
While developing MacTierra, I have strived to maintain execution speed, though hopefully not
at the expense of accuracy in data collection. However, MacTierra is not as rigorous, for
example in the genebanking code, as Tierra.