This chapter is just an introduction to genetic programming, which is a huge and rapidly advancing field. You've used it so far to approach simple problems in which programs are built in minutes rather than days, but the principles can be extended to much more complex problems. The number of programs in the populations here have been very small compared to those used in more complex problems—a population of thousands or tens of thousands is more typical. You are encouraged to come up with more difficult problems and try larger population sizes, but you may have to wait hours or days while the programs run.
The following section outlines a few ways in which the simple genetic programming model can be extended for different applications.
We have used a very small set of functions to construct the programs so far. This limits the scope of what a simple program can do—for more complicated problems, it's necessary to greatly increase the number of functions available to build a tree. Here are some possible functions to add:
Trigonometric functions like sine, cosine, and tangent
Other mathematical functions like power, square root, and absolute value
Statistical distributions, such as a Gaussian
Distance metrics, like Euclidean and Tanimoto distances
A three-parameter function that returns 1 if the first parameter is between the second and third
A three-parameter function that returns 1 if the difference between the first two parameters is less than ...