MacTierra logo

Document overview

Soup settings

The settings for a particular soup are specified by three dialogs accessed on the Control menu. These affect the frontmost soup only, when more than one soup is running. When no soups are present, these dialogs enable you to set the default values.

Mutation rates

There are three sources of mutation in Tierra, "cosmic rays", which cause bits to be flipped at random in the soup, copy errors, which cause instuctions which are being copied from parent to offspring to change, and "flaws" in instruction execution, which means the the execution of instructions is not completely deterministic, but flawed at some low rate. Flaws may occur in which registers are used for a particular instruction, or how many time something (e.g. a bit shift) occurs.

The mutation settings dialog.

In this dialog you to set the rate at which background, 'Cosmic' mutations occur in the soup, the probability of a copy errors occurring during replication, and the rate at which instruction execution is flawed. The popup menus provide some sensible values, though if you wish to specify another value, choose 'Other...' in the menu, and type the number in.

The figures in this dialog represent the mean time between mutations. In other words, on average, an error will occur every X instructions, where X is the value in the box. In actuality, these numbers specify the mean of a exponential distribution of inter-mutation times. Alternatively you can specify the mutation rate in terms of the probability of a mutation at each time step, which is the right-hand figure in this box. If you change one of these figures, the other will be automatically recalculated for you.

The popup menus on the right hand side allow you to specify some reasonable predetermined settings, qualitatively described as 'High', 'medium', 'low' etc.

The 'Instruction mutation type' setting specified how instructions are changed when they are hit by a cosmic ray, or a copy error. 'Bit flip' is the standard setting, and this may change an instruction to any of 5 others (since the instruction contains 5 bits, each of which may be flipped). 'Adjacent instruction' changes an instruction to one of its neighbours; i.e. each instruction can be changed to only 2 others. 'Random choice' simply changes an instruction to any of the others, so there are 31 possible neighbours here.

Size selection

Selection on creature size is very important in directing the dynamics of Tierra runs. This selection is mediated by the number of instructions each creature gets in a time slice, and how that number is related to its size.

The size selection dialog.

There are two alternative strategies for size selection. The simplest is 'Constant size' (top option in the dialog) -- each creature gets the same number of instructions, irrespective of size. You can specify that number of instructions in the 'Slice size' box in the dialog.

The second strategy is to have the slice size a function of creature size, so that it can be scaled to select preferentially for small or large creatures. This is the second option, the parameter 'x' setting the size preference. Set 'x' to 1.0 to cause selection to be size neutral -- each creature gets a number of instructions proportional to its size. x < 1 selects for small things, and x > 1 for large things.

The 'Random variation in slice size' value specifies the bounds, in terms of the proportion of the slice size specified by the above settings, within which the actual slice sizes are randomly, uniformly distributed. Slice sizes are allowed to vary to avoid periodic effects, when creature reproduction is synchronized. Set this to 0 to disable this random variation in slice size.

'Select for lean creatures' also weights the slice size of the creature based on a measure of how 'lean' that creature is, in other words, what proportion of its total genome it actually uses in producing offspring. This is to counter a problem when selection is size-neutral, that creatures evolve which are large (so they get lots of slicer time) but actually only use a small proportion of their space.

Random number seed

Version 1.8.5 adds for the first time the ability to specify the random number seed for a soup, and therefore to duplicate exactly a previous run for which the parameters are known.

On the 'Control' menu is a 'Random seeds...' menu item. This brings up a dialog in which you can specify whether new soups should used a fixed seed, or a seed generated from the current time. As with the other settings dialogs, to set the default options, close all open soups and then bring up this dialog. If a soup is open or running, then the 'New soups' options are disabled, and you can just change the current seed for the foremost soup.

Even though new soups start with the random seed specified in this dialog, making a new soup window and then showing this dialog reveals that the soup's current random seed is no the specified initial seed. This is because, as the soup is being created, the random number generator is called to determine when the next mutations will take place.

Other soup settings

The remaining settings dialog allows you to set other soup parameters, which are divided into two sections.

The Misc settings dialog.

Daughter allocation
In the upper left half of this dialog specifies how new daughters are allocated in the soup. There are four options for daughter allocation: These different offspring placement schemes can have significant effects on the dynamics. For example, 'Closest to parent' will tend to cause related creatures to be placed near each other in the soup. This could have consequences for the evolution of 'social' creatures. The full effects of these settings on evolution in Tierra has not been worked out.

Check 'Clear daughter cell' to zero out the space allocated for a new offspring. This reduces code exchange via 'dead code' in the soup, which constitutes a form of primitive sexuality. If both this, and 'Clear killed cells' (below) are checked, then all code exchange via dead code is prevented.

'Transfer register contents to offspring' causes the four registers in a creature to be initialized to those of the parent (instead of to zero) when the parent executes the divide instruction. This may represent some form of 'cultural transmission'.

Write permissions
Checking 'Creatures have global write permissions' allows creatures to write anywhere in the soup, and not just in their own, and their offsprings' space. This may have significant effects on the dynamics, though this has not been thoroughly investigated.

In the upper right half of the dialog you can set the reaping threshold. The reaping threshold specifies how full the soup is when the reaper cuts in to kill off poorly-adapted creatures.

When creatures die, their details can be logged to a file for later analysis. Check the 'Log deaths to file' box, and click the button, and specify the name of a new file into which logging information will be saved. This produces a tab-delimited text file, which can be simply dropped onto a wordprocessor or spreadsheet application to read and analyse.

The 'Save genotypes to genebank' check box controls whether genotypes are written out to the Genebank file or not. Even if this option is not selected, MacTierra will still create the genebank file on startup.

Turning this option on will slow down execution rates a little, although the genebanking code has been carefully optimized to make lookups and insertions as quickly as possible. (The genebank uses an extensible hashing table, that requires only two disk accesess to load a genebank from the file.)

Showing genebank information

In the 'Control' menu is an option to show information about the disk-based genebank, an central repository for creature genotypes that is common to all soups. This dialog gives some rather technical information about the genebank file, such as its size, storage efficiency, and the number of bits being used in hash lookups. This is mainly for the programmer (i.e. me) to see how good my hashing algorithm is, and how much disk space I am wasting.

Table of contents Installation Running Soup settings Preferences Statistics
Assembling Interface How it works c.f. Tierra Bugs and features Legal stuff