[Next] [Previous] [Top] [Contents]
Meta-Genetic Programming: Co-evolving the Operators of Variation - Bruce Edmonds
Thus there could be the following terminals:
and the following branching nodes:
For example if the operator, [up2 [top [rand1]]] were passed the following input pair of (tree, node) pairs to act upon, ([B [A [A [B [2]] [1]] [3]]], [1 1]), ([A [1] [2]], [2]) it would return the pair ([A [B [2]], [2])*1 - this process is illustrated below in figure 1.
Figure 1: An example action of an operator on a pair of trees with selected nodes
A second example is if the operator, [subs [bott2] [rand2]] were passed the same inputs it would return ([A [1] [A [1] [2]]], [2]) - as illustrated in figure 2.
Figure 2: A second example of an operator acting on a pair of trees with selected nodes
Thus a cut&graft operator (one half of a traditional GP
crossover) could be represented like this (figure 3).
This takes the first random gene, cuts off the top at the randomly chosen position and then substitutes this for the subtree at the randomly chosen position of the second chosen gene. The single leaf rand1 would represent propagation.
The population of operators is treated just like any other genetic population, being itself operated on by another population of operators. This sequence must eventually stop with a fixed non-evolving population of operators or a population that acts upon itself.
The base population and operator population(s) will have different fitness functions - the basic one determined by the problem at hand and the operator's function by some measure of success in increasing the fitness of the population they operate on.
[Next] [Previous] [Top] [Contents]
Generated with CERN WebMaker