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

Chapter 13




            Troubleshooting GP






            The dynamics of evolutionary algorithms (including GP) are often very com-
            plex, and the behaviour of an EA is typically challenging to predict or un-
            derstand. As a result it is often difficult to troubleshoot such systems when
            they are not performing as expected. While we obviously cannot provide
            troubleshooting suggestions that are specific to every GP implementation
            and application, we can suggest some general issues to keep in mind. To a
            large extent the advice in (Kinnear, 1994b; Koza, 1992; Langdon, 1998) also
            remains sound.


            13.1     Is there a Bug in the Code?

            Machine learning systems are notoriously difficult to protect from coding
            and logical mistakes. Unless a mistake produces a runtime error, it may
            remain hidden in a system for a long time and may contribute to the system
            achieving unsatisfactory results. Such mistakes are difficult to find because
            the system, being adaptive, will still work to some degree. This is also true
            of GP.
               The most common reaction to a system not producing satisfactory results
            is to start playing with the parameters, the fitness function, the primitive set,
            etc. However, one should also consider the possibility of a coding mistake.
            The normal program validation techniques, such as inspection of critical
            regions of code, should be used to ensure everything is alright.
               If the code is part of an established GP implementation, coding errors
            are less likely. 1  A more probable source of coding errors is stretching the
            GP library beyond its original intended use. Reading the manual carefully
            is sometimes a good preventive cure for problems.
               1
               Coding errors cannot be entirely excluded, though, especially if a GP library is large
            and provides a rich set of features and functionalities.

                                           131
   140   141   142   143   144   145   146   147   148   149   150