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

6.2 Constraining Structures                                    51


               Koza and his colleagues have used these architecture altering operations
            quite widely in their genetic design work, where they evolve GP trees that
            encode a collection of developmental operations that, when interpreted, gen-
            erate a complex structure like a circuit or an optical system (see, for example,
            Section 12.3, page 118).
               The idea of architecture altering operations was extended to the ex-
            tremely general Genetic Programming Problem Solver (GPPS), which is
            described in detail in (Koza et al., 1999, part 4). This is an open ended
            system which combines a small set of basic vector-based primitives with the
            architecture altering operations in a way that can, in theory, solve a wide
            range of problems with almost no input required from the user other than
            the fitness function. The problem is that this open-ended system needs a
            very carefully constructed fitness function to guide it to a viable solution, an
            enormous amount of computational effort, or both. As a result it is currently
            an idea of more conceptual than practical value.


            6.2    Constraining Structures

            As discussed in Section 3.2.1, most GP systems require type consistency
            where all subtrees return data of the same type. This ensures that the out-
            put of any subtree can be used as one of the inputs to any node. The basic
            subtree crossover operator shuffles tree components entirely randomly. Uni-
            versal type compatibility ensures that crossover cannot lead to incompatible
            connections between nodes. This is also required to stop mutation from
            producing illegal programs.
               An implicit assumption underlying this approach is that all combinations
            of structures are equally likely to be useful. In many cases, however, we know
            in advance that there are constraints on the structure of the solution, or we
            have strong suspicions about the likely form solutions will take. In this
            section, we will look at several different systems that use tools such as types
            and grammars to bias or constrain search with the primary aim of increasing
            the chance of finding a suitable program.
               A problem domain might be naturally represented with multiple types.
            This suggests that the functions used by GP and their arguments will not
            necessarily be all of the same type. This can often be addressed through
            creative definitions of functions and implicit type conversion. For example,
            the Odin system (Holmes and Barclay, 1996) defines operations on inappro-
            priate types to return a new fail object. These are handled by introducing
            a binary fatbar that returns its first argument unless it is fail, in which case
            it returns its second argument.
               This sort of approach may not always be desirable. For example, if a
            key goal is to evolve solutions that can be easily understood or analysed,
            then one might prefer a GP system that is constrained structurally or via
   60   61   62   63   64   65   66   67   68   69   70