|
Genetic programming
Genetic programming (GP) is an automated methodology inspired by
biological evolution to find computer programs that best perform a
user-defined task. It is therefore a particular machine learning technique
that uses an evolutionary algorithm to optimize a population of computer
programs according to a fitness landscape determined by a program's
ability to perform a given computational task. The first experiments with
GP were reported by Stephen F. Smith (1980) and Nichael L. Cramer (1985),
as described in the famous book Genetic Programming: On the Programming of
Computers by Means of Natural Selection by John Koza (1992).
Computer programs in GP can be
written in a variety of programming languages. In the early (and
traditional) implementations of GP, program instructions and data values
were organized in tree-structures, thus favoring the use of languages that
naturally embody such a structure (an important example pioneered by Koza
is Lisp). Other forms of GP have been suggested and successfully
implemented, such as the simpler linear representation which suits the
more traditional imperative languages [see, for example, Banzhaf et al.
(1998)]. The commercial GP software Discipulus, for example, uses linear
genetic programming combined with machine code language to achieve better
performance. Differently, the MicroGP uses an internal representation
similar to linear genetic programming to generate programs that fully
exploit the syntax of a given assembly language.
GP is very computationally intensive
and so in the 1990s it was mainly used to solve relatively simple
problems. However, more recently, thanks to various improvements in GP
technology and to the well known exponential growth in CPU power, GP has
started delivering a number of outstanding results. At the time of
writing, nearly 40 human-competitive results have been gathered, in areas
such as quantum computing, electronic design, game playing, sorting,
searching and many more. These results include the replication or
infringement of several post-year-2000 inventions, and the production of
two patentable new inventions.
Developing a theory for GP has been
very difficult and so in the 1990s genetic programming was considered a
sort of pariah amongst the various techniques of search. However, after a
series of breakthroughs in the early 2000s, the theory of GP has had a
formidable and rapid development. So much so that it has been possible to
build exact probabilistic models of GP (schema theories and Markov chain
models) and to show that GP is more general than, and in fact includes,
genetic algorithms.
Genetic Programming techniques have now
been applied to evolvable hardware as well as computer programs.
Meta-Genetic Programming is the technique
of evolving a genetic programming system using genetic programming itself.
Critics have argued that it is theoretically impossible, but more research
is needed.
|