Document Type



Doctor of Philosophy


Computer Science

Date of Defense


Graduate Advisor

Cezary Z. Janikow


Uday Chakraborty


John Aleshunas

Mark Hauschild


Genetic Programming is a type of biological inspired machine learning. It is composed of a population of stochastic individuals. Those individuals can exchange portions of themselves with others in the population through the crossover operation that draws its inspiration from biology. Other biologically inspired operations include mutation and reproduction. The form an individual takes can be many things. It, however, is represented most of the time as a computer program. Constructing correct efficient programs can be notoriously difficult. Various grammar, typing, function constraint, or counting mechanisms can guide creation and evolution of those individuals. These mechanisms can reduce search space and improve scalability of genetic program solutions. Finding correct combinations of individuals, however, can be extremely challenging when using methods found in GP such as Automatically Defined Functions or other Architecturally Altering Operations.

This work extends and combines in a unique way previous work on Constrained Genetic Programming, Adaptive Constrained Genetic Programming and Automatically Defined Functions.

This dissertation shows, compared to previous stand alone mechanisms, that a new combination of genetic programming constraint mechanisms and Automatically Defined Functions improve scalability for a number of benchmark problems. The combination of constraint mechanisms include delayed max tree size per evolved generations, typing on the evolved programs, use of automatically defined functions, and use of adaptive heuristics for function and terminals on the evolved programs.

Initial results show that this combination of methodologies create smaller efficient individuals capable of handling larger problems. Moreover, this combined methodology works particularly well for constraints can be applied ahead of time.