| Literature DB >> 23577113 |
Laura M Grabowski1, David M Bryson, Fred C Dyer, Robert T Pennock, Charles Ofria.
Abstract
Investigating the evolution of animal behavior is difficult. The fossil record leaves few clues that would allow us to recapitulate the path that evolution took to build a complex behavior, and the large population sizes and long time scales required prevent us from re-evolving such behaviors in a laboratory setting. We present results of a study in which digital organisms-self-replicating computer programs that are subject to mutations and selection-evolved in different environments that required information about past experience for fitness-enhancing behavioral decisions. One population evolved a mechanism for step-counting, a surprisingly complex odometric behavior that was only indirectly related to enhancing fitness. We examine in detail the operation of the evolved mechanism and the evolutionary transitions that produced this striking example of a complex behavior.Entities:
Mesh:
Year: 2013 PMID: 23577113 PMCID: PMC3620120 DOI: 10.1371/journal.pone.0060466
Source DB: PubMed Journal: PLoS One ISSN: 1932-6203 Impact factor: 3.240
Figure 1Trajectories of evolved case-study organism on paths experienced during evolution.
The organism's trajectory is shown with the black line, beginning at the green star and ending at the red octagon (note: in some cases the organism doubles back along its own path). On the left-turn path (A), the organism traverses the path, steps off the end and stops to finish replication. On the right-turn path (B), the organism has retraced its steps from the end of the path to its final location (red octagon).
Figure 2Example trajectories of the step-counting organism traversing unfamiliar paths.
(A) Modified ancestral left-turn path, with extended path end. The organism successfully travels the entire path, stepping exactly one cell off the end and then stopping. (B) Modified ancestral right-turn path, with extended path end. The organism turns and retraces its steps before reaching the path end. (C) Unfamiliar left-turn path. The organism turns incorrectly at the first turn. The organism neither traverses the path nor replicates in this environment. (D) Unfamiliar long right-turn path. The organism traverses the entire path but fails to self-replicate.
Detail of evolved counting organism's genome.
| Site | Instruction | Instruction Functionality |
| 117 | h-search | Marks the start of counting module. |
| 118 | sg-rotate-r | Turn right |
| 119 | if-grt-0 | CX register contents |
| 120 | nop-C | This comparison is TRUE when on a right-turn path. |
| 121 | h-copy | Copy when (executes only when on a right-turn path). |
| 122 | h-copy | Copy (always executes). |
| 123 | sg-sense | Put current sense input into CX register. |
| 124 | nop-C | |
| 125 | jmp-head | Move the IP the number of instructions designated by the value in CX register. |
| If sense input was nutrient, CX = 0; IP does not change. | ||
| If sense input was right, CX = 2; IP skips 126–127 and moves to site 128. | ||
| If sense input was left, CX = 4; IP skips126–129 and moves to site 130. | ||
| 126 | sg-rotate-l | Executes only when sense input is nutrient ( |
| When executed, undoes right turn at top of loop. | ||
| 127 | if-equ-X | BX register contents = 1? |
| This comparison is TRUE on a right-turn path. | ||
| 128 | get-head | Put the current value of IP into CX ( |
| Executes only when on a right-turn path. | ||
| 129 | sg-move | Take a step. Does not execute on a left-turn path. |
| 130 | inc | Increment value in BX ( |
| 131 | if-n-equ | If contents of BX are not equal to contents of CX, execute the next instruction. |
| Instruction tests for loop exit conditions. | ||
| 132 | mov-head | Exit on right-turn path after taking 127 steps, then incrementing BX to 128. |
| Exit on left-turn path after turning |
Detail of the instructions in the counting module of the evolved counting organism's genome. Site refers to the position in the genome of the instruction, Instruction is the specific Avida instruction, and Instruction Functionality describes how the instruction operates.
Example execution segment.
| Exec | Site | Instruction | Facing | Flow | BX | CX | Remarks |
| 95 | 117 | h-search | N |
|
|
| Move flow-control head to current position |
| 96 | 118 | sg-rotate-r |
|
|
|
|
|
| 97 | 119 | if-grt-0 | NE | 117 | 1 | 0 | CX register contents |
| 98 |
|
|
|
|
|
| Copy instruction (regardless of path) |
| 99 | 123 | sg-sense | NE | 117 | 1 |
| Put 0 in CX (We are currently on a nutrient) |
| 100 | 125 | jmp-head | NE | 117 | 1 | 0 | Jump ahead CX instructions (in this case, don't move) |
| 101 |
|
|
|
|
|
| Turn left; compensate for the previous right turn to go straight |
| 102 | 127 | if-equ-X | N | 117 | 1 | 0 | By default X = 1; Since BX is 1, execute next instruction |
| 103 | 128 | get-head | N | 117 | 1 |
| Put the current value of IP into CX ( |
| 104 | 129 | sg-move | N | 117 | 1 | 128 | Take a step onto the right turn cue |
| 105 | 130 | inc | N | 117 |
|
| Increment value in BX ( |
| 106 | 131 | if-n-equ | N | 117 | 2 | 128 | BX ! = CX (yet), so execute the next instruction. |
| 107 | 132 | mov-head | N | 117 | 2 | 128 | Restart loop by jumping to flow head (117) |
| 108 |
|
|
|
|
|
| Would move flow head, but already there |
| 109 | 118 | sg-rotate-r |
|
|
|
|
|
| 110 | 119 | if-grt-0 | NE | 117 | 2 | 128 | CX register contents |
| 111 | 121 | h-copy | NE | 117 | 2 | 128 | Copy instruction (since we're on a right-turn path) |
| 112 | 122 | h-copy | NE | 117 | 2 | 128 | Copy instruction (regardless of path) |
| 113 | 123 | sg-sense | NE | 117 | 2 |
| Put 2 in CX (We are currently on a right-turn cue) |
| 114 | 125 | jmp-head | NE | 117 | 2 | 2 | Jump ahead CX instructions ( |
| 115 |
|
|
|
|
|
| Put the current value of IP into CX ( |
| 116 | 129 | sg-move | NE | 117 | 2 | 128 | Take a step onto the next nutrient |
| 117 | 130 | inc | NE | 117 |
|
| Increment value in BX ( |
| 118 | 131 | if-n-equ | NE | 117 | 3 | 128 | BX ! = CX (yet), so execute the next instruction. |
| 119 | 132 | mov-head | NE | 117 | 3 | 128 | Restate loop by jumping to the flow head (117) |
Example excerpt of the execution flow in the counting module of the evolved counting organism's genome. The execution depicted occurs on the map in Figure 1(b), starting from the star and facing north. It covers the organism taking a step forward, turning right based on the cue found there, and then taking another step forward. Exec is the number of instructions that have been executed, Site refers to the position in the genome of the instruction, Instruction is the Avida instruction being executed, Facing indicates the compass direction the organism is pointed on the grid, Flow is the genomic position pointed to by the flow-control head, BX and CX are the values stored in the respective registers and Remarks describes how the instruction operates in its current context. Values that are affected by the current instruction are in bold.
Instructions in the step-counting module used for right- and left-turn paths.
| Site | Instruction | Right paths | Left paths |
| 117 | h-search | XXXXX | XXXXX |
| 118 | sg-rotate-r | XXXXX | XXXXX |
| 119 | if-grt-0 | XXXXX | |
| 120 | nop-C | XXXXX | |
| 121 | h-copy | ||
| 122 | h-copy | ||
| 123 | sg-sense | XXXXX | XXXXX |
| 124 | nop-C | XXXXX | XXXXX |
| 125 | jmp-head | XXXXX | XXXXX |
| 126 | sg-rotate-l | XXXXX | |
| 127 | if-equ-X | XXXXX | |
| 128 | get-head | XXXXX | |
| 129 | sg-move | XXXXX | |
| 130 | inc | XXXXX | |
| 131 | if-n-equ | XXXXX | XXXXX |
| 132 | mov-head | XXXXX |
Use of instructions in the step-counting module for traversing right- and left-turn paths. Cells containing “XXXXX” indicate that the instruction is necessary to complete the path following task on paths containing the indicated direction; empty cells indicate that the instruction is not used for following paths in the indicated direction.
Figure 3Example trajectories of the modified step-counting organism traversing ancestral paths.
The increment instruction in the counting routine was replaced with a neutral instruction (nop-X). (A) Left-turn path. The organism stops at the first turn and fails to replicate. (B) Right-turn path, with extended path end. The organism misses the second turn, wanders for a couple steps, stops, but successfully completes its replication, although with a much reduced metabolic rate from the unmodified genome.