English: Self-replication of a digital organism. The circular genome of a digital organism consists of a set of instructions (represented here as letters). Some of these instructions are involved in the copy process and others in completing computational tasks. The experimenter determines the probability of mutations, such as copy mutations that occur when occasionally instructions are copied incorrectly, and instead a randomly chosen instruction is written. Other mutations can also be implemented such as insertions and deletions.
Initially, all three hardware "pointers" are in the same location, the "r" instruction. As execution begins, the instruction pointer (indicated by an "i") advances. The first few instructions allocate space for the offspring, and move the write-head pointer into that space (indicated by a "w"). The flow pointer, indicated by an "f", is used to move other pointers, such as the instruction pointer, to specified locations. The process of self replication is carried out by a set of instructions at the end of the genome commonly referred to as the copy-loop. When execution reaches the copy-loop, the flow pointer is used to re-enter a loop that advances the read and write heads and copies instructions from the parent genome (read-head) to the offspring genome (write-head). Arcs inside the circular genome represent the execution flow, showing most of the CPU cycles being spent during the copying process. After genome replication is complete, the parent organism divides off its offspring, which must now fend for itself within the Avida world.
This animation was generated using Avida-ED, which is available at:
http://avida-ed.msu.edu.