Genetic evolution and co-evolution of computer programs

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 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 2 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 …