Genetic programming
In artificial intelligence, genetic programming (GP) is an evolutionary algorithm-based methodology inspired by biological evolution to find computer programs that perform a user-defined task. It is a specialization of genetic algorithms (GA) where each individual is a computer program. Therefore it is a machine learning technique used to optimize a population of computer programs according to a fitness landscape determined by a program's ability to perform a given computational task.
Chromosome representation

GP evolves computer programs, traditionally represented in memory as tree structures. Trees can be easily evaluated in a recursive manner. Every tree node has an operator function and every terminal node has an operand, making mathematical expressions easy to evolve and evaluate. Thus traditionally GP favors the use of programming languages that naturally embody tree structures (for example, Lisp; other functional programming languages are also suitable).
Non-tree representations have been suggested and successfully implemented, such as linear genetic programming which suits the more traditional imperative languages [see, for example, Banzhaf et al. (1998)]. The commercial GP software Discipulus, uses AIM, automatic induction of binary machine code[1] to achieve better performance.[2] MicroGP[3] uses a representation similar to linear GP to generate programs that fully exploit the syntax of a given assembly language.
See also
- Bio-inspired computing
- Gene expression programming
- Genetic representation
- Grammatical evolution
- Fitness approximation
- Linear genetic programming
References and notes
- ^ (Peter Nordin, 1997, Banzhaf et al., 1998, Section 11.6.2-11.6.3)
- ^ aigp3.dvi
- ^ Research: MicroGP
Bibliography
- Banzhaf, W., Nordin, P., Keller, R.E., and Francone, F.D. (1998), Genetic Programming: An Introduction: On the Automatic Evolution of Computer Programs and Its Applications, Morgan Kaufmann
- Barricelli, Nils Aall (1954), Esempi numerici di processi di evoluzione, Methodos, pp. 45-68.
- Brameier, M. and Banzhaf, W. (2007), Linear Genetic Programming, Springer, New York
- Crosby, Jack L. (1973), Computer Simulation in Genetics, John Wiley & Sons, London.
- Cramer, Nichael Lynn (1985), "A representation for the Adaptive Generation of Simple Sequential Programs" in Proceedings of an International Conference on Genetic Algorithms and the Applications, Grefenstette, John J. (ed.), Carnegie Mellon University
- Fogel, David B. (2000) Evolutionary Computation: Towards a New Philosophy of Machine Intelligence IEEE Press, New York.
- Fogel, David B. (editor) (1998) Evolutionary Computation: The Fossil Record, IEEE Press, New York.
- Forsyth, Richard (1981), BEAGLE A Darwinian Approach to Pattern Recognition Kybernetes, Vol. 10, pp. 159-166.
- Fraser, Alex S. (1957), Simulation of Genetic Systems by Automatic Digital Computers. I. Introduction. Australian Journal of Biological Sciences vol. 10 484-491.
- Fraser, Alex and Donald Burnell (1970), Computer Models in Genetics, McGraw-Hill, New York.
- Holland, John H (1975), Adaptation in Natural and Artificial Systems, University of Michigan Press, Ann Arbor
- Koza, J.R. (1990), Genetic Programming: A Paradigm for Genetically Breeding Populations of Computer Programs to Solve Problems, Stanford University Computer Science Department technical report STAN-CS-90-1314. A thorough report, possibly used as a draft to his 1992 book.
- Koza, J.R. (1992), Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press
- Koza, J.R. (1994), Genetic Programming II: Automatic Discovery of Reusable Programs, MIT Press
- Koza, J.R., Bennett, F.H., Andre, D., and Keane, M.A. (1999), Genetic Programming III: Darwinian Invention and Problem Solving, Morgan Kaufmann
- Koza, J.R., Keane, M.A., Streeter, M.J., Mydlowec, W., Yu, J., Lanza, G. (2003), Genetic Programming IV: Routine Human-Competitive Machine Intelligence, Kluwer Academic Publishers
- Langdon, W. B., Poli, R. (2002), Foundations of Genetic Programming, Springer-Verlag
- Nordin, J.P., (1997) Evolutionary Program Induction of Binary Machine Code and its Application. Krehl Verlag, Muenster, Germany.
- Poli, R., Langdon, W. B., McPhee, N. F. (2008). A Field Guide to Genetic Programming. Lulu.com, freely available from the internet. ISBN 978-1-4092-0073-4.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - Rechenberg, I. (1971): Evolutionsstrategie - Optimierung technischer Systeme nach Prinzipien der biologischen Evolution (PhD thesis). Reprinted by Fromman-Holzboog (1973).
- Schmidhuber, J. (1987). Evolutionary principles in self-referential learning. (On learning how to learn: The meta-meta-... hook.) Diploma thesis, Institut f. Informatik, Tech. Univ. Munich.
- Smith, S.F. (1980), A Learning System Based on Genetic Adaptive Algorithms, PhD dissertation (University of Pittsburgh)
- Smith, Jeff S. (2002), Evolving a Better Solution, Developers Network Journal, March 2002 issue
- Shu-Heng Chen et al. (2008), Genetic Programming: An Emerging Engineering Tool,International Journal of Knowledge-based Intelligent Engineering System, 12(1): 1-2, 2008.
External links
![]() | This article's use of external links may not follow Wikipedia's policies or guidelines. |
- A Field Guide to Genetic Programming by Poli, Langdon, and McPhee. Available as a free PDF, or in printed form from Lulu.com.
- Genetic Programming Source a website with a visual beginner's guide to GP.
- Aymen S Saket & Mark C Sinclair
- The Hitch-Hiker's Guide to Evolutionary Computation
- John Koza's Genetic Programming Site
- Jürgen Schmidhuber's GP Site, with pre-Koza GP papers (1987)
- Jürgen Schmidhuber's Meta-GP thesis (1987)
- GP bibliography
- People who work on GP
- Global Optimization Techniques and Genetic Programming Applied to Distributed Computing
Implementations:
- pySTEP pySTEP or Python Strongly Typed gEnetic Programming
- Pyevolve (Python)
- Online moonlander demo (JavaScript)
- Demo applet of a genetic algorithm solving TSPs and VRPTW problems (.NET and Java)
- GP for the Optimization of the European Optical Network, Aymen Saket & Mark C Sinclair
- JAGA - Extensible and pluggable open source API for implementing genetic algorithms and genetic programming applications (Java)
- GPE - Framework for conducting experiments in Genetic Programming (.NET)
- lalena.com - A Genetic Program for simulating ant food collection behaviors. Free download (.NET)
- DGPF - simple Genetic Programming research system (Java)
- JGAP - Java Genetic Algorithms and Genetic Programming, an open-source framework (Java)
- n-genes - Java Genetic Algorithms and Genetic Programming (stack oriented) framework (Java)
- PMDGP - object oriented framework for solving genetic programming problems (C++)
- DRP - Directed Ruby Programming, Genetic Programming & Grammatical Evolution Library (Ruby)
- GPLAB - A Genetic Programming Toolbox for MATLAB (MATLAB)
- GPTIPS - Genetic Programming Tool for MATLAB - aimed at performing multigene symbolic regression (MATLAB)
- PyRobot - Evolutionary Algorithms (GA + GP) Modules, Open Source (Python)
- PerlGP - Grammar-based genetic programming in Perl (Perl)
- GAlib - Object oriented framework with 4 different GA implementations and 4 representation types (arbitrary derivations possible) (C++)
- Java GALib - Source Forge open source Java genetic algorithm library, complete with Javadocs and examples (see bottom of page) (Java)
- LAGEP. Supporting single/multiple population genetic programming to generate mathematical functions. Open Source, OpenMP used. (C/C++)
- PushGP, a strongly typed, stack-based genetic programming system that allows GP to manipulate its own code (auto-constructive evolution) (Lisp/C++/Javascript/Java)
- GPLib, a GP library from the University of Birmingham, UK (C++)
- Groovy Java Genetic Programming (Java)
- Progranisms, self copying/evolving programs
- GEVA - Grammatical Evolution in Java (Java)
Possibly most used:
- ECJ - Evolutionary Computation/Genetic Programming research system (Java)
- Beagle - Open BEAGLE, a versatile EC framework (C++ with STL)
- EO Evolutionary Computation Framework (C++ with static polymorphism)
- GPC++ - Genetic Programming C++ Class Library (C++)