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

134                                           13 Troubleshooting GP


            different parameter settings in the hope of finding a better collection of
            parameter values. What if changing the parameter values really does not
            have much impact? That may mean that GP just is not able to gain any
            traction given your current representation of the problem domain and fitness
            function. You might, therefore, reconsider how the problem is posed to GP.
            If the representation and fitness make the problem essentially a search for a
            needle in a haystack, then GP will mostly be lost searching through highly
            sub-optimal solutions. If so, altering parameter values is unlikely to help.
               Note that essentially the same symptoms are also observed if the problem
            is really beyond the capabilities of your computing resources. For example,
            if the solutions are exceptionally rare, unless there are nice fitness gradients
            guiding GP towards them, finding any solution will likely be beyond the
            capacity of current computer technology.
               How can one distinguish which is the cause of the lack of success? Is it a
            bad choice of representation and fitness or is it just an extremely hard prob-
            lem? To answer these questions, it is important to look at what happened
            when the population size was varied. Even in the absence of fitness guid-
            ance, GP will search. In fact, it will perform a sort of random exploration
            of the search space. It may not be a particularly rational exploration —
            we know, for example, that GP with subtree crossover tends to oversample
            and re-sample short programs — yet, it is still a form of stochastic search.
            Thus, one may expect that, if the problem is solvable, as the population
            size is progressively increased, sooner or later we should start seeing some
            variation in the fitness of programs. This may be sufficient for evolution to
            work with, particularly if we help it by improving the representation and
            fitness function. If, instead, nothing interesting happened as the population
            size was increased, then perhaps you don’t have enough computing power
            to solve the problem as posed, or the problem has no solution.


            13.6     Study your Populations

            If you’re not getting your desired results, it is important to take the time
            to dig around in the populations and see what is actually being evolved. 2
            For example, if you’re using ADFs because you think that your problem
            would benefit from a modular solution, examine the individuals that you’re
            evolving. Are they using ADFs? (Sometimes the result producing branch
            simply will not refer to the ADFs at all.) Are they using them in a modular
            way? Are ADFs being used multiple times? Do the ADFs encapsulate some
            interesting logic, or are they just re-naming an input variable? If you’re
            using grammatical evolution, on the other hand, are your evolved individuals
            using your grammar as you expected? Or is the grammar in fact biasing
               2
               If the system you’re using doesn’t allow you to dump individuals from a run, add
            that functionality or use a different system.
   143   144   145   146   147   148   149   150   151   152   153