abstract = "Research in the field of artificial life focuses on
computer programs that exhibit some of the properties
of biological life (e.g. self-reproducibility,
evolutionary adaptation to an environment, etc.). In
one area of artificial life research, human programmers
write intentionally simple computer programs (often
incorporating observed features of actual biological
processes) and then study the 'emergent' higher level
behavior that may be exhibited by such seemingly simple
programs. In this chapter, we consider a different
problem, namely, 'How can computer programs be
automatically written by the computer itself using only
measurements of a given program's performance?' In
particular, this chapter describes the recently
developed 'genetic programming paradigm' which
genetically breeds populations of computer programs in
order to find a computer program that solves the given
problem. In the genetic programming paradigm, the
individuals in the population are hierarchical
compositions of functions and arguments. The
hierarchies are of various sizes and shapes.
Increasingly fit hierarchies are then evolved in
response to the problem environment using the genetic
operations of fitness proportionate reproduction
(Darwinian survival and reproduction of the fittest)
and crossover (sexual recombination). In the genetic
programming paradigm, the size and shape of the
hierarchical solution to the problem is not specified
in advance. Instead, the size and shape of the
hierarchy, as well as the contents of the hierarchy,
evolve in response to the Darwinian selective pressure
exerted by the problem environment.
This ALIFE-90 chapter also describes an extension of
the genetic programming paradigm to the case where two
(or more) populations of hierarchical computer programs
simultaneously co-evolve. In co-evolution, each
population acts as the environment for the other
population. In particular, each individual of the first
population is evaluated for 'relative fitness' by
testing it against each individual in the second
population, and, simultaneously, each individual in the
second population is evaluated for relative fitness by
testing them against each individual in the first
population. Over a period of many generations,
individuals with high 'absolute fitness' may evolve as
the two populations mutually bootstrap each other to
increasingly high levels of fitness.
The genetic programming paradigm is illustrated by
genetically breeding a population of hierarchical
computer programs to allow an 'artificial ant' to
traverse an irregular trail. In addition, we
genetically breed a computer program controlling the
behavior of an individual ant in an ant colony which,
when simultaneously executed by a large number of ants,
causes the emergence of interesting collective behavior
for the colony as a whole. Co-evolution is illustrated
with a problem involving finding an optimal strategy
for playing a simple discrete two-person competitive
game represented by a game tree in extensive form.",