Artificial Life


What is "artificial"?


American Heritage Dictionary:

1. Made by man, rather than occurring in nature.

2. Made in imitation of something natural.

3. Feigned; pretended.

4. Stilted; forced.


* artificial respiration

* artificial flavors

* artificial ingredients

* artificial intelligence


Simon, The Sciences of the Artificial:

"Artificiality connotes perceptual similarity but essential difference..."

What is "life"?


American Heritage Dictionary:

1. The property or quality manifested in functions such as metabolism, growth, response to stimulation, and reproduction, by which living organisms are distinguished from dead organisms or from inanimate matter.


Much time can be wasted debating related definitions... see



"Life is the sum total of all strategies developed by replicators in order to replicate more successfully. Something is alive if it consists of these strategies."

What is "artificial life"?


Christopher Langton:

Artificial life is the study of man-made systems that exhibit behaviors characteristic of natural living systems. It complements the traditional biological sciences concerned with the analysis of living organisms by attempting to synthesize life-like behaviors within computers and other artificial media. By extending the empirical foundation upon which biology is based beyond the carbon-chain that has evolved on Earth, Artificial Life can contribute to theoretical biology by locating life-as-we-know-it within the larger picture of life-as-it-could-be.

What does it mean to make life?


* reproduction

* animal husbandry

* genetic engineering

* electrical engineering?

* programming?


What must it have for it to be alive?


Possible perspectives:

* it's only simulation, however useful

* "strong" alife

* agnostic

Shared features of natural and artificial life


* anima(l,t)s are organized into populations

* anima(l,t)s act locally and independently

* populations have complex emergent properties

* anima(l,t)s reproduce

* anima(l,t) populations evolve

Historical Roots


* Vaucanson's duck & other clockwork automata [~1735]

* von Neumann's self-reproducing machines [~1940]

* Walter's electronic "turtles" [~1950]

* Jacobson's self-reproducing train set [~1958]

* Penrose's block-arrangement reproduction devices [~1959]

* Ulam's cellular automata (lattice of finite automata) [~1962]

* Lindenmayer's L-systems [~1967]

* Conway's game of Life [~1970]


Conway's Life & Other Cellular Automata


II. Basics of CA

[from documentation to LifeMaker 2.1 by]


A cellular automata consists of a bunch of cells and a rule determining the evolution of the system. The cells typically exist in one or two dimensions (but see [4] for a fascinating 3D version of Life). Each cell has an associated state. The number of possible states is finite and usually quite small. In LifeMaker the cells are arranged in two dimensions and there are a maximum of four states with each state having its own color.


The rule uses the state of a cell and its neighbors to find the cells new state. The rule is applied to each cell simultaneously so that the cells change all at once. The neighborhood of a cell can be any finite collection of nearby cells. For 2D CA the most common neighborhoods are the Moore (the eight immediately adjacent cells) and the Von Neumann (the four cells to the north, south, east and west).

To see how the rules work examine figure 1. It shows a pattern evolving according to the Life rule. In this rule cells remain alive if they have two or three living neighbors. Cells are born if they have three living neighbors. Life is an example of a totalistic rule: a cells new state depends on the sum of its neighbors states.


Figure 1: Conway's Life


A rather different neighborhood is used by partitioning cellular automata. Here the cells are divided into a finite number of disjoint uniformly arranged blocks. The rule looks at a block and updates the whole block at once. Since the blocks do not overlap information does not move across blocks. To get around this the partition changes from one step to the next.


The simplest partitioning CA uses blocks of size 2x2. The block moves down and to the right with the next generation. It then moves back (see figure 2). This partitioning scheme is called the Margolus neighborhood and is useful for modeling physical systems.


Figure 2: The Margolus neighborhood

[end quote from LifeMaker 2.1 documentation]



Computational power of CA:

Life is Turing Complete!



WaTor Exercises:


* cause all of the fish to die off

* cause all of the sharks to die off

* cause everything to die off

* produce nearly parallel population lines










A few of ErunticLab's salient features:


* genetic-programming-like reproduction


* a "code-stepper" utility that allows animals to execute their programs with function-call-level pseudo-parallelism


* a wide range of animal sensors, actions, and features including local indexed memory, the ability to drop numbered "markers" and to raise flags visible to other animals, etc.


* data-logging functions that allow one to produce tables that can be imported into graphing packages


* simple experiment set-up procedures; one can easily change a wide range of parameters, the primordial "soup" out of which animal programs are constructed, the initial state of the world, etc.


The core elements of ErunticLab are written in Common Lisp with CLOS and should be portable to any CLtL2-compliant system.


Obtain from


*plant-growth-rate* 1.5

*cycles-per-growing-season* 4

*marker-decay-rate* 0.1

*corpse-decay-rate* 0.1



*max-size-per-location* 20

*initial-plant-size* 4

*initial-marker-size* 1

*initial-animal-size* 1

*initial-animal-energy* 1

*initial-rock-size* 3



*movement-cost* 0.05

*sensing-cost* 0.03

*attacking-cost* 0.1

*defending-cost* 0.2

*existence-cost* 0.01

*mating-cost* 1



*veg-meal-size* 1

*meat-meal-size* 3

*meat-scaling-factor* 10

*max-animal-age* 100

*attacked-memory-duration* 20



*max-depth-for-individuals-after-crossover* 10

*random-animal-max-depth* 5



*check-for-repopulation-every* 10

*repopulate-if-below* 300

*repopulate-to* 500

*add-new-randoms-every* 1

*randoms-to-add* 1



*collect-data-every* 50


Graph of data from an ErunticLab run.


Tierra (Ray 1981)


* Emulates a parallel computer with a variable number of CPUs.


* Uses its own simplified machine language with 32 instructions.


* Each program has its own CPU and all inhabit the same "soup" (memory area).


* Children can be spawned with the divide instruction; mutations generate diversity.



A variety of phenomena can be observed, including:


* fitness trends


* speciation and extinction


* punctuated equilibria


* parasites


* social interaction