A version of this applet using Sun's Java plug-in is available here.
Introduction
This applet displays a cellular automata substrate displaying a novel type of
self-reproducing automaton.
Most modern self-reproducing automata are based either on loops (descended from
Langton's loop) or worms - which are very similar structures to loops,
but which feed developmental information back along their spines, rather than
touching their heads to their tails.
Both these structures have something in common, namely they rely on passing each
segment through a "splitter" to accomplish self replication.
This automaton works on a rather different principle. It reproduces by
synchronous template reproduction. Reproduction alternates with a stage of
motion which separates mother and daughter, so subsequent reproductions
have space to happen in.
The design was inspired by the theories of A. G. Cairns-Smith.
Cairns-Smith envisages that the first organisms used the processes of crystal
growth to maintain high-fidelity information transfer across generations.
For example, some crystals grow in one direction, while preserving information
(in the form of cross-sectional area, and fault structures) between layers as
the crystal grows.
The result is a long crystal, somewhat like a stick of rock with "Brighton"
written down the middle. Then the crystal breaks in two, and the process
continues.
Initially, I planned to write a relatively sophisticated simulation of crystal
growth on the level of atoms and atomic forces. However, it was not long before
I was thinking about abstracting the essential features into a cellular automaton.
The resulting deign is relatively simple. It has five states per cell, plus a counter,
which is used to attain synchrony when reproducing.
The automaton uses the Von-Neumann neighbourhood.
Like HexHAL random configurations are likely to
spontaneously lead to self-reproducing entities, in a manner reminiscent of abiogenesis.
The automaton displays replication with sufficiently high fidelity to preserve
genetic information across many generations.
However, like practically all such models there is a "natural" preference for
small organisms - since these are less likely to interfere with the reproduction
of their own offspring.
If the automaton is allowed to run, smaller organisms will come to dominate.
Normally, one would apply selection in a manner which counteracts this.
This is my first attempt at an automaton based on the principles described - and
there may be room for improvemnets.
Because of considerations relating to embedding universal automata on the back
of self-reproducing automata, the fact that a two-dimensional automaton
results in organisms that are fundamentally one-dimensional is a significant problem.
If one has an n -dimensional substrate available, one is unlikely to be satisfied
designing n-1 -dimensional circuits.
The basic idea of attaining synchrony - and then reproducing in a synchronous
manner - can be used to produce a substrate in which genuinely two-dimensional
organisms reproduce. Such a model probably more closely represents crystalline
growth processes. It's disadvantage over the mechanism illustrated here is that
it is not so simple.
It's intended that the next self-reproducing automaton we create will be along these lines.
The applet is interactive, allowing you to apply selection based on organisms
visual characteristics using a variety of implements.
- Use - tool selection - controls which type of tool to use to manipulate the environment;
- Click to - set the tool's behavior - controls how the tool in use is applied;
- Display - controls which aspect of the automata is presented;
- Size - controls how many cells are displayed, and their size;
- Show - configures how frequently the display is updated;
- Delay - configures how much delay occurs between frame updates;
- Radiation - causes random deletions;
- Mutation - causes random modifictions to the organisms;
- Step - allows a paused automata to be single-stepped;
- Pause - allows the automata to be stopped and started;
- Clear - completely blank all the universe's cells;
- Randomise - configure all cells randomly;
- Restart - resets the universe to its initial configuration;
Downloads
Source code is available - with a "no-restrictions" license. Download this zip file.
|