Artificial Life Systems
Why? Seek generalizations about self replication Address questions we can’t do with real organisms Scale unavailable with real life Evolution Design solutions to computational problems
Beginnings Conway’s Life Core Wars (1960’s) Chris Langton’s Ant 1986 Steen Rasmussen observed the success for code war player replicating themselves (1990) Thomas Ray writes Tierra (early 1990’s) Digital organisms as programs (80 lines) Chris Adami used Tierra with evolution (1992) Avida (1993) with Charles Ofria and C. Titus Brown Andrew Pargallis demonstrates spontaneous generation
Avida
Avida Virtual Machine Read Write heads Flow Control Instruction memory CPU Registers (3) Stacks
Genetic language Multiple instructions sets Template matching Instructions are opcode only Organized into subsets Default subset is 26 instructions Template matching Relative addressing A series of instructions use to address a location Allows insertions and deletions via mutation
Example Inc – increments a register by 1 Which register? Default is BX register If followed by nop-a instruction then increment the ax register Head are controlled by mov-head instruction Default: move the instruction to position of flow control. Nops change default
Replication (with copy mutation) Allocate Divide
Avida world N cells each can hold one organism World can have topologies
Organism Structures # --- Setup --- h-alloc # Allocate extra space at the end of the genome to copy the offspring into. h-search # Locate an A:B template (at the end of the organism) and place the Flow-Head after it nop-C # nop-A # mov-head # Place the Write-Head at the Flow-Head (which is at beginning of offspring-to-be). nop-C # [ Extra nop-C commands can be placed here w/o harming the organism! ] # --- Copy Loop --- h-search # No template, so place the Flow-Head on the next line code h-copy # Copy a single instruction from the read head to the write head (and advance both heads!) if-label # Execute the line following this template only if we have just copied an A:B template. nop-C # nop-A # h-divide # ...Divide off offspring! (note if-statement above!) mov-head # Otherwise, move the IP back to the Flow-Head at the beginning of the copy loop. nop-A # End label.
A creature Search # 1: Find organism end. Nop-C # 2: - Match CD:AB Nop-D Push-Prev # 5: Move end position to Stack-A SetMemory # 6: Place FLOW-head in memory space for offspring Nop-A # - Memory space labeled Nop-A Nop-A Nop-A Head-Move # 7: Move Write head to flow head position Nop-C # 8: Followed by lots of nop-c Nop-C # 8: Search # 9: Drop flow head at start of copy loop Inst-Read # 10: Inst-Write # 11: Head-Push # 12: Get current position of... Nop-C # 13: - Read-Head If-Equal # 14: Test if we are done copying... Divide # 15: ...If so, divide. Head-Move # 16: ...If not, continue with loop. Nop-A # 17: Nop-B
Some crtisms Lack of explicit theoretical grounding Predefined organism structure Restricted ecological interactions No competition for matter and energy Evolving a self-reproductive algorithm
Framsticks
Developed since 1996 (Komosinski and Ulatowski) 3D worlds Evolution driven by a complex environment Bodies are “sticks and joints” World simulation has basic physics (e.g. friction) Documentation is an issue!
Body specification Tree structure: X represents a line segment (stick) XXX is three segments in line XXX(XX) is a tree structure Rotations can be added with an R modifier or commas Other modifiers plus parameter setting in string
Brain Neural nets Basic AI type neurons Function modules Sinusoidal generators Random generators Thresholding neurons Delay neurons Differentiating neurons
Receptors and Effectors G – orientation and space T – touch S – detection of energy (smell) Effectors Bending and rotation Flexors and extensors
Brain encoding Neurons are coded into the framsticks body definition X(X,RRLX[|,p:1][@,p:1](X,X,X),X) The brackets are motor neurons, p is the strength property [0:0][-1:1][-1:1] Chain of neurons [N][Sin,f0:0.02-1:0.1]… -1:0.1 is a connection weight 0.1 to the pervious neuron
Brain encoding(cont.) X[T][G][S][-3:1, -2:1, -1:1] Three sensors feeding a neuron
Genetics Encoding shown are f1 f0 is primitive machine level There are multiple levels - f4 supports evolution operations Each encoding has a set of genetic operators
Other features FrameScript for extensions OO with methods for system events onBorn, onKill, onCollision Fuzzy controls GUI design tools Analysis tools (e.g. Brain Analysis) Brain Analysis allows probes
Experiments Pendulum-body with fuzzy conrol Genotype-phenotype encoding Predator-prey showed arms race and stable population in evolution Semiotics