Introduction
This manual is intended to be an operating guide and an investigative aide
to the avida system. It is structured so that new readers need only
concentrate on the introduction and the beginner's guide in order to gain
a working knowledge of avida. This introduction contains a quick
overview of the system, and the following section contains a fuller
description of both the theoretical design and this particular
implementation. The next group of sections explore some of the design
decisions made (which emphasize those we consider non-intuitive), and
explain the specifics on configuring runs. Finally, the user's
interactions with avida (installation, configuration, run-time
use, and output files) are detailed with sample applications for research.
What Is Avida?
The computer program avida is an auto-adaptive genetic system
designed primarily for use as a platform in Artificial Life research.
The avida system is based on concepts similar to those employed by
the tierra program, that is to say it is a population of
self-reproducing strings with a Turing-complete genetic basis
subjected to Poisson-random mutations. The population adapts to
the combination of an intrinsic fitness landscape (self-reproduction)
and an externally imposed (extrinsic) fitness function provided by the
researcher. By studying this system, one can examine evolutionary
adaptation, general traits of living systems (such as
self-organization), and other issues pertaining to theoretical or
evolutionary biology and dynamic systems.
Since the predominant auto-adaptive system available is Ray's tierra,
and avida is based on similar concepts, we present a short list of
differences between avida and tierra. In avida we provide:
Brief Overview
The avida system creates an artificial (virtual) environment inside
of a computer. The system implements a 2D grid of virtual processors
which execute a limited assembly language; programs are stored as
sequential strings of instructions in the system memory. Every
program (typically termed cell, organism, string
or creature)
is associated with a processor, or grid point. Therefore, the maximum
population of organisms is given by the dimensions of the grid,
N× M, and not by the size of the total genome space of the
population, as in tierra.
For purposes of Artificial Life research, the assembly language used
must support self-reproduction; the assembly language instructions
available are described in the Virtual CPU section.
The virtual environment is initially seeded with a human-designed
program that self-replicates. This program and its descendents are then
subjected to random mutations of various possible types which change
instructions within their memory; resulting in unfavorable, neutral, and
favorable program mutations. Mutations are qualified in a strictly
Darwinian sense; any mutation which results in an increased ability to
reproduce in the given environment is considered favorable. While it
is clear that the vast majority of mutations will be unfavorable---typically
causing the creature to fail to reproduce entirely---or else neutral,
those few that are favorable will cause organisms to reproduce more
effectively and thus thrive in the environment.
Over time, organisms which are better suited to the environment are
generated that are derived from the initial (ancestor) creature. All
that remains is the specification of an environment such that tasks not
otherwise intrinsically useful to self-reproduction are assimilated. A
method of altering the time slice, or amount of time apportioned to
each processor, is described in the
Time Slicing section.
While avida is clearly a genetic algorithm (GA) variation (to which nearly all evolutionary systems with a genetic coding can be reduced), the presence
of a computationally (Turing) complete genetic basis differentiates it from
traditional genetic algorithms. In addition, selection in avida more
closely resembles natural selection than most GA mechanisms; this is a
result of the implicit (and dynamic) co-evolutionary fitness landscape
automatically created by the reproductive requirement. This
co-evolutionary pressure classifies avida as an auto-adaptive
system, as opposed to standard genetic algorithms (or adaptive) systems,
in which the creatures have no interaction with each other. Finally, avida
is an evolutionary system that is easy to study quantitatively yet maintains
the hallmark complexity of living systems.
Contacting the Avida Group
The members of the avida group can be reached by email at
avida@krl.caltech.edu.
Consult the group's Web page for changes and
notices at
http://www.krl.caltech.edu/avida/.
Research articles by
members of the avida group are available via anonymous FTP at
ftp://ftp.krl.caltech.edu/pub/avida/.
Please feel free to contact us with any questions, comments, or ideas you
may have about avida. For technical questions, contact
avida-help@krl.caltech.edu.
(Technical Support is not guaranteed with avida, but we will
typically try to help with any problem you may have.)
NEXT: An Overview of Avida
PREV: The Index
INDEX
Page maintained by Charles Ofria
Send all comments to
charles@krl.caltech.edu