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

7.2 Graph-Based Genetic Programming                            67


            ing on whether instructions with side effects are used or not. If there are
            no side effects, running a PDGP program can be seen as a propagation of
            the input values from the bottom to the top of the program’s graph (as in
            a feed-forward artificial neural network or data flow parallel computer).


            7.2.2   Parallel Algorithm Discovery and Orchestration
            In a system called parallel algorithm discovery and orchestration (PADO),
            Teller (1996) used a combination of GP and linear discrimination to obtain
            parallel classification programs for signals and images.
               PADO programs include three parts: a main loop, some ADFs and an
            indexed memory. The main loop is repeatedly executed for a fixed amount
            of time. When the time is up, PADO programs are forced to halt by some
            external control structure. The output of a program is the weighted average
            of the outputs produced at each iteration of the loop. The weights are
            proportional to the iteration count, so that more recent outputs count more.
               The main loop and the ADFs in PADO are structured as arbitrary di-
            rected graphs of nodes. Each node can have multiple outgoing arcs that
            indicate possible flows of control. Each node has two main parts: an ac-
            tion and a branch-decision. Each program has an argument stack and all
            PADO actions pop their inputs from this argument stack and push their re-
            sult back onto the argument stack. The actions are drawn from a primitive
            set including the standard algebraic operations, minimum, maximum, nega-
            tion, read from indexed memory, write to indexed memory, deterministic
            and non-deterministic branching instructions, and primitives related to the
            task of classifying images. The evaluation of PADO programs starts from a
            designated node. After the execution of each node, control is passed to the
            node chosen by the branch-decision function of the current node.

            7.2.3   Cartesian GP

            In Miller’s Cartesian GP (Miller, 1999; Miller and Smith, 2006), programs
            are represented by linear chromosomes containing integers. These are di-
            vided into groups of three or four. Each group corresponds to a position in
            a 2-D array. One integer in each group defines the primitive (e.g., an AND
            gate) at that location in the array. Other integers in the group define the
            locations (coordinates) in the genome from which the inputs for that primi-
            tive should be drawn. Each primitive does not itself define where its output
            is used; this is done by later primitives. A primitive’s output may be used
            more than once, or indeed not used at all, depending on the way in which
            the other functions’ inputs are specified. Thus, Cartesian GP’s chromo-
            somes represent graph-like programs, which is very similar to PDGP. The
            main difference between the two systems is that Cartesian GP operators act
            at the level of the linear chromosome, while in PDGP they act directly on
   76   77   78   79   80   81   82   83   84   85   86