Autoconstructive evolution is a process in which the entities undergoing evolutionary change are themselves responsible for the construction of their own offspring and thus for aspects of the evolutionary process itself. Because
biological evolution
Evolution is change in the heritable characteristics of biological populations over successive generations. These characteristics are the expressions of genes, which are passed on from parent to offspring during reproduction. Variation te ...
is always autoconstructive, this term mainly occurs in
evolutionary computation
In computer science, evolutionary computation is a family of algorithms for global optimization inspired by biological evolution, and the subfield of artificial intelligence and soft computing studying these algorithms. In technical terms, ...
, to distinguish
artificial life
Artificial life (often abbreviated ALife or A-Life) is a field of study wherein researchers examine systems related to natural life, its processes, and its evolution, through the use of simulations with computer models, robotics, and biochemist ...
type systems from conventional
genetic algorithms
In computer science and operations research, a genetic algorithm (GA) is a metaheuristic inspired by the process of natural selection that belongs to the larger class of evolutionary algorithms (EA). Genetic algorithms are commonly used to gene ...
where the GA performs replication artificially. The term was coined by Lee Spector.
[
]
Importance of autoconstructive evolution
Autoconstructive evolution is a good platform for answering theoretical questions about the evolution of
evolvability
Evolvability is defined as the capacity of a system for adaptive evolution. Evolvability is the ability of a population of organisms to not merely generate genetic diversity, but to generate '' adaptive'' genetic diversity, and thereby evolve thr ...
. Preliminary evidence suggests that the way in which offspring are generated changes substantially over the course of evolution. By studying these patterns, we can begin to understand how evolving systems organize themselves to evolve faster. Ultimately, such an understanding could allow us to improve our ability to solve problems with
evolutionary computation
In computer science, evolutionary computation is a family of algorithms for global optimization inspired by biological evolution, and the subfield of artificial intelligence and soft computing studying these algorithms. In technical terms, ...
.
This increased ability for the process of self-replication to evolve is also thought to be important for recreating the open-ended evolutionary process observed on earth
Examples of autoconstructive evolution
Tierra and Avida
A relatively simple form of autoconstruction occurs in systems such as
Tierra
Tierra may refer to:
Astronomy
*Earth in the Spanish and Asturian language
Computing and games
* Tierra (computer simulation), a computer simulation of life by the ecologist Thomas S. Ray
* Tierra Entertainment, now known as AGD Interactive, a ...
and
Avida
Avida is an artificial life software platform to study the evolutionary biology of self-replicating and evolving computer programs ( digital organisms). Avida is under active development by Charles Ofria's Digital Evolution Lab at Michigan State ...
. In these systems, programs replicate themselves by allocating space in memory for their offspring and then looping over all of the instructions in their genome and copying each into the newly allocated space. This is autoconstruction in that the programs are responsible for determining what code ends up in the offspring. Programs most commonly make exact copies of themselves, with changes being introduced exclusively through mutation events. In principle, however, programs can compose a wide range of possible offspring by only copying a subset of their genomes.
PushGP
PushGP is a
genetic programming
In artificial intelligence, genetic programming (GP) is a technique of evolving programs, starting from a population of unfit (usually random) programs, fit for a particular task by applying operations analogous to natural genetic processes to t ...
system which evolves code written in the Push language.
Push is a stack-based language designed for easy use in genetic programming, in which every variable type (e.g. strings, integers, etc.) has its own stack. All variables are stored on the stack associated with their type. One of the variable types is executable Push code. As a result, this language design allows for rich autoconstructive evolution by treating all code left on the code stack at the end of program execution as the program's offspring.
Using this approach, programs have complete control over the offspring programs that they create.
References
External links
Autoconstructive evolution with PushGP and Pushpop
Evolutionary biology
{{software-type-stub