Genetic Programming

Genetic programming (GP) is an evolutionary algorithm based methodology to find computer programs that perform a user-defined task. It is a specialization of genetic algorithms 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. 

The first results on the GP methodology were reported by Stephen F. Smith (1980) and Nichael L. Cramer (1985). In 1981 Forsyth reported the evolution of small programs in forensic science for the UK police. John R. Koza is a main proponent of GP and has pioneered the application of genetic programming in various complex optimization and search problems.

GP is very computationally intensive and so in the 1990s it was mainly used to solve relatively simple problems. But more recently, thanks to improvements in GP technology and to the exponential growth in CPU power, GP produced many novel and outstanding results in areas such as quantum computing, electronic design, game playing, sorting, searching and many more. These results include the replication or development of several post-year-2000 inventions. GP has also been applied to evolvable hardware as well as computer programs, some of which have been patented.

Our contributions in the GP field

In the last years, we have published several papers about GP for solving several machine learning / data mining problems. The most recent/relevant of them are:

(for a more detailed list, go to my publications page).

Also, I have developed two genetic programming modules in the JCLEC framework. The first one is related with classic genetic programming, although it allows the implementation of STGP algorithms.  The second module implements the grammar guided genetic programming (G3P) or grammar based genetic programming (GBGP).