The genetic programming system described in the preceding chapters is just the beginning; in many ways it is the simplest thing that could possibly work. Most of the techniques described in Part I date back to the late 1980's and early 1990's, a wide array of alternatives and extensions have been explored since. A full catalogue of these would be far beyond the scope of this book. The chapters in Part II survey a number of the more prominent or historically important extensions to GP, particularly (but not exclusively) in relation to the tree-based representation for programs.
We start, in this chapter, by reviewing a variety of initialisation strategies (Section 5.1 ) and genetic operators (Sections 5.2 and 5.3 ) for tree-based GP not covered in Part I . We also briefly look at some hybridisations of GP with other techniques (Section 5.4 ).