
184 10. Genetic Programming
• Permutation operator: This operator is similar to the swap mutation. If a
function has n parameters, the permutation operator generates a random permu-
tation from the possible n! permutations of parameters. The arguments of the
function are then permutated according to this randomly generated permutation.
• Editing operator: This operator is used to restructure individuals according to
predefined rules. For example, a subtree that represents the Boolean expression,
x AND x is replaced with the single node, x. Editing rules can also be used to
enforce semantic rules.
• Building block operator: The objective of the building block operator is to
automatically identify potentially useful building blocks. A new function node
is defined for an identified building block and is used to replace the subtree
represented by the building block. The advantage of this operator is that good
building blocks will not be altered by reproduction operators.
10.6 Building Block Genetic Programming
The GP process discussed thus far generates an initial population of individuals where
each individual represents a tree consisting of several nodes and levels. An alternative
approach has been developed in [248, 742] – specifically for evolving decision trees
– referred to as a building-block approach to GP (BGP). In this approach, initial
individuals consist of only a root and the immediate children of that node. Evolution
starts on these “small” initial trees. When the simplicity of the population’s individ-
uals can no longer account for the complexity of the problem to be solved, and no
improvement in the fitness of any of the individuals within the population is observed,
individuals are expanded. Expansion occurs by adding a randomly generated building
block (i.e. a new node) to individuals. In other words, grow mutation is applied.
This expansion occurs at a specified expansion probability, p
e
, and therefore not all of
the individuals are expanded. Described more formally, the building-block approach
starts with models with a few degrees of freedom – most likely too few to solve the
problem to the desired degree of accuracy. During the evolution process, more degrees
of freedom are added when no further improvements are observed. In between the
triggering of expansion, crossover and mutation occur as for normal GP.
This approach to GP helps to reduce the computational complexity of the evolution
process, and helps to produce smaller individuals.
10.7 Applications
GP was developed to evolve computer programs [478, 479]. Programs have been
evolved for a wide range of problem types as illustrated in [479]. These problem types