The book is divided up into four parts.
Part I covers the basics of genetic programming (GP). This starts with a gentle introduction which describes how a population of programs is stored in the computer so that they can evolve with time. We explain how programs are represented, how random programs are initially created, and how GP creates a new generation by mutating the better existing programs or combining pairs of good parent programs to produce offspring programs. This is followed by a simple explanation of how to apply GP and an illustrative example of using GP.
In Part II , we describe a variety of alternative representations for programs and some advanced GP techniques. These include: the evolution of machine-code and parallel programs, the use of grammars and probability distributions for the generation of programs, variants of GP which allow the solution of problems with multiple objectives, many speed-up techniques and some useful theoretical tools.
Part III provides valuable information for anyone interested in using GP in practical applications. To illustrate genetic programming's scope, this part contains a review of many real-world applications of GP. These include: curve fitting, data modelling, symbolic regression, image analysis, signal processing, financial trading, time series prediction, economic modelling, industrial process control, medicine, biology, bioinformatics, hyper-heuristics, artistic applications, computer games, entertainment, compression and human-competitive results. This is followed by a series of recommendations and suggestions to obtain the most from a GP system. We then provide some conclusions.
Part IV completes the book. In addition to a bibliography and an index, this part includes two appendices that provide many pointers to resources, further reading and a simple GP implementation in Java.