Flow of Control in Linear Genetic Programming

Justin Schonfeld and Daniel Ashlock
Accepted to the 2015 Congress on Evolutionary Computation

Abstract PDF eprint

Traditional flow of control for linear genetic programming includes structures such as if-then-else statements combined with gotos. In this study we examine additional classes of flow of control structures. The first is called the alternator. This is a deterministically variable flow of control that executes a goto every other time it is accessed. We demonstrate that evolution can use alternators that jump past one another to create solutions with significantly more complexity than those created by solutions without alternators for a simple binary string generation problem. The alternator, while clearly useful, would be difficult for human programmers to use effectively. The alternator thus demonstrates an even stronger disjunction between human-friendly and evolution-friendly programming languages. Domain specific flow of control structures tailored to the environment being studied are also examined. These are statements carefully designed for the problems being solved. Allowing controllers solving the Tartarus task to change the flow of control based on knowledge of their position in the interior boundary of a world substantially enhances the performance of the controllers. Comparison of the three different fitness functions used demonstrates an expected result, that the benefit of the alternate flow-of-control is domain specific.