Contents Top Previous Next

1.4 Overview of this Field Guide

As we indicated in the section entitled "What's in this book" (page   ix:  ), the book is divided up into four parts. In this section, we will have a closer look at their content.

Part   I:  is mainly for the benefit of beginners, so notions are introduced at a relaxed pace. In the next chapter we provide a description of the key elements in GP. These include how programs are stored (Section  2.1 ), the initialisation of the population (Section  2.2 ), the selection of individuals (Section  2.3 ) and the genetic operations of crossover and mutation (Section  2.4 ). A discussion of the decisions that are needed before running GP is given in Chapter  3 . These preparatory steps include the specification of the set of instructions that GP can use to construct programs (Sections  3.1 and  3.2 ), the definition of a fitness measure that can guide GP towards good solutions (Section  3.3 ), setting GP parameters (Section  3.4 ) and, finally, the rule used to decide when to stop a GP run (Section  3.5 ). To help the reader understand these, Chapter  4 presents a step-by-step application of the preparatory steps (Section  4.1 ) and a detailed explanation of a sample GP run (Section  4.2 ).

After these introductory chapters, we go up a gear in Part   II: where we describe a variety of more advanced GP techniques. Chapter  5 considers additional initialisation strategies and genetic operators for the main GP representation--syntax trees. In Chapter  6 we look at techniques for the evolution of structured and grammatically-constrained programs. In particular, we consider: modular and hierarchical structures including automatically defined functions and architecture-altering operations (Section  6.1 ), systems that constrain the syntax of evolved programs using grammars or type systems (Section  6.2 ), and developmental GP (Section  6.3 ). In Chapter  7 we discuss alternative program representations, namely linear GP (Section  7.1 ) and graph-based GP (Section  7.2 ).

In Chapter  8 we review systems where, instead of using mutation and recombination to create new programs, they are simply generated randomly according to a probability distribution which itself evolves. These are known as estimation of distribution algorithms, cf. Sections  8.1 and  8.2 . Section  8.3 reviews hybrids between GP and probabilistic grammars, where probability distributions are associated with the elements of a grammar.

Many, if not most, real-world problems are multi-objective, in the sense that their solutions are required to satisfy more than one criterion at the same time. In Chapter  9 , we review different techniques that allow GP to solve multi-objective problems. These include the aggregation of multiple objectives into a scalar fitness measure (Section  9.1 ), the use of the notion of Pareto dominance (Section  9.2 ), the definition of dynamic or staged fitness functions (Section  9.3 ), and the reliance on special biases on the genetic operators to aid the optimisation of multiple objectives (Section  9.4 ).

A variety of methods to speed up, parallelise and distribute genetic programming runs are described in Chapter  10 . We start by looking at ways to reduce the number of fitness evaluations or increase their effectiveness (Section  10.1 ) and ways to speed up their execution (Section  10.2 ). We then point out (Section  10.3 ) that faster evaluation is not the only reason for running GP in parallel, as geographic distribution has advantages in its own right. In Section  10.4 , we consider the first approach and describe master-slave parallel architectures (Section  10.4.1 ), running GP on graphics hardware (Section  10.4.2 ) and FPGAs (Section  10.4.3 ), and a fast method to exploit the parallelism available on every computer (Section  10.4.4 ). Finally, Section  10.5 looks at the second approach discussing the geographically distributed evolution of programs. We then give an overview of some of the considerable work that has been done on GP's theory and its practical uses (Chapter  11 ).

After this review of techniques, Part   III:  provides information for people interested in using GP in practical applications. We survey the enormous variety of applications of GP in Chapter  12 . We start with a discussion of the general kinds of problems where GP has proved successful (Section  12.1 ) and then describe a variety of GP applications, including: curve fitting, data modelling and symbolic regression (Section  12.2 ); human competitive results (Section  12.3 ); image analysis and signal processing (Section  12.4 ); financial trading, time series prediction and economic modelling (Section  12.5 ); industrial process control (Section  12.6 ); medicine, biology and bioinformatics (Section  12.7 ); the evolution of search algorithms and optimisers (Section  12.8 ); computer games and entertainment applications (Section  12.9 ); artistic applications ( 12.10 ); and GP-based data compression (Section  12.11 ). This is followed by a chapter providing a collection of troubleshooting techniques used by experienced GP practitioners (Chapter  13 ) and by our conclusions (Chapter  14 ).

In Part   IV:  , we provide a resources appendix that reviews the many sources of further information on GP, on its applications, and on related problem solving systems (Appendix  A ). This is followed by a description and the source code for a simple GP system in Java (Appendix  B ). The results of a sample run with the system are also described in the appendix and further illustrated via a Flip-O-Rama animation2 (see Section  B.4 ).

The book ends with a large bibliography containing around 650 references. Of these, around 420 contain pointers to on-line versions of the corresponding papers. While this is very useful on its own, the users of the PDF version of this book will be able to do more if they use a PDF viewer that supports hyperlinks: they will be able to click on the URLs and retrieve the cited articles. Around 550 of the papers in the bibliography are included in the GP bibliography (Langdon, Gustafson, and Koza1995-2008). 3 We have linked those references to the corresponding BIBTEXentries in the bibliography. Just click on the GPBiB symbols to retrieve them instantaneously. Entries in the bibliography typically include keywords, abstracts and often further URLs.

With a slight self-referential violation of bibliographic etiquette, we have also included in the bibliography the excellent (Poli et al.2008) to clarify how to cite this book. LATEX users can find the BibTEX entry for this book at http://www.cs.bham.ac.uk/~wbl/biblio/gp-html/poli08_fieldguide.html.

Contents Top Previous Next