Self-Improvement to Control Code Growth in Genetic Programming

An important problem with genetic programming systems is that in the course of evolution the size of individuals is continuously growing without a corresponding increase in fitness. This paper reports the application of a self-improvement operator in combination with a characteristic based selection strategy to a classical genetic programming system in order to reduce the effects of code growth. Two examples, a symbolic regression problem and an 11-bit multiplexer problem are used to test and validate the performance of this newly designed operator. Instead of simply editing out non-functional code this method tries to select subtrees with better fitness. Results show that for both test cases code growth is substantially reduced obtaining a reduction factor of 3-10 (depending on the problem) while the same level of fitness is attained.