EVOLVING MORE REPRESENTATIVE PROGRAMS WITH GENETIC PROGRAMMING
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 + +.
artificial intelligence and knowledge engineering computer programs automatic learning of programs c plus plus code