EVOLVING MORE REPRESENTATIVE PROGRAMS WITH GENETIC PROGRAMMING
DANIEL MCGAUGHRAN, Mengjie Zhang · International Journal of Software Engineering and Knowledge Engineering · 2009
This paper describes a new representation of tree-based genetic programs in Genetic Programming, an approach of artificial intelligence and knowledge engineering, in order to adopt a form more conducive to imperative functions as developed by human programmers. This representation incorporates the Abstract Syntax Tree form into a larger tree structure based on a Control Flow Graph, thereby causing statements to be chained together sequentially and allowing genetic programs to be output as (non-object-oriented) C++ code fragments. Maintaining or improving the evolutionary performance has been a key priority in this development. These prompt additional genetic operators to be defined to better preserve chains of statements than the traditional Mutation and Crossover operators, thereby encouraging a more efficient evolution of genetic programs. Experimental results suggest that adopting a chained approach can make a significant improvement in evolutionary performance over using ProgN functions that evaluate their children sequentially. The introduction of additional operators can improve the evolutionary performance even further. This approach can automatically generate computer programs for a particular problem using artificial intelligence and knowledge engineering approaches. In particular, the newly developed operators in the chained approach have great potential for generating human competitive programs in commonly used imperative programming languages such as C++.