Page 73 - 49A Field Guide to Genetic Programming
P. 73

6.4 Strongly Typed Autoconstructive GP with PushGP             59


            ing from developmental processes often have some regularity, which other
            methods obtain through the use of ADFs, constraints, types, etc. A dis-
            advantage is that, with cellular encoding, individuals require an additional
            genotype-to-phenotype decoding step. However, when the fitness function
            involves complex calculations with many fitness cases, the relative cost of the
            decoding step is often small compared with the rest of the fitness function.


            6.4    Strongly Typed Autoconstructive GP
                   with PushGP

            While types are often used to constrain evolution, Spector’s PushGP (Klein
            and Spector, 2007; Robinson and Spector, 2002; Spector, 2001; Spector,
            Klein, and Keijzer, 2005a) is a move away from constraining evolution.
               Essentially PushGP uses genetic programming to automatically create
            programs written in the Push programming language. Push is a strongly
            typed tree based language which does not enforce syntactic constraints.
            Each of Push’s types has its own stack. In addition to stacks for inte-
            gers, floats, Booleans and so on, there is a stack for objects of type program.
            Using this code stack, Push naturally supports both recursion and program
            modules (see Section 6.1.1) without human pre-specification. The code stack
            allows an evolved program to push itself or fragments of itself onto the stack
            for subsequent manipulation.
               PushGP can use the code stack and other operations to allow programs to
            construct their own crossover and other genetic operations and create their
            own offspring. Programs are prevented from simply duplicating themselves
            to deflect catastrophic loss of population diversity.
   68   69   70   71   72   73   74   75   76   77   78