This thesis investigates the evolution and use of abstract data types within Genetic Programming (GP). In genetic programming the principles of natural evolution (fitness based selection and recombination) acts on program code to automatically generate computer programs. The research in this thesis is motivated by the observation from software engineering that data abstraction (eg via abstract data types) is essential in programs created by human programmers. We investigate whether abstract data types can be similarly beneficial to the automatic production of programs using GP. GP can automatically “evolve” programs which solve non-trivial problems but few experiments have been reported where the evolved programs explicitly manipulate memory and yet memory is an essential component of most computer programs. So far work on evolving programs that explicitly use memory has principally used either problem specific memory models or a simple indexed memory model consisting of a single global shared array. Whilst the latter is potentially sufficient to allow any computation to evolve, it is unstructured and allows complex interaction between parts of programs which weaken their modularity. In software engineering this is addressed by controlled use of memory using scoping rules and abstract data types, such as stacks, queues and files. This thesis makes five main contributions: (1) Proving that abstract data types (stacks, queues and lists) can be evolved using genetic programming. (2) Demonstrating GP can evolve general programs which recognise a Dyck context free language, evaluate Reverse Polish expressions and GP with an appropriate memory structure can solve the nested brackets problem which had previously been solved using a hybrid GP. (3) In these three cases (Dyck, expression evaluation and nested brackets) an appropriate data structure is proved to be beneficial compared to indexed memory. (4) Investigations of real world electrical network maintenance scheduling problems demonstrate that Genetic Algorithms can find low cost viable solutions to such problems. (5) A taxonomy of GP is presented, including a critical review of experiments with evolving memory. These contributions support our thesis that data abstraction can be beneficial to automatic program generation via artificial evolution.
[1]
Peter A. Whigham.
Inductive bias and genetic programming
,
1995
.
[2]
SAGAInman HarveyCSRP.
Species Adaptation Genetic Algorithms: A Basis for a Continuing SAGA
,
1992
.
[3]
Jeffrey Horn,et al.
Multiobjective Optimization Using the Niched Pareto Genetic Algorithm
,
1993
.
[4]
John Beidler,et al.
Data Structures and Algorithms
,
1996,
Wiley Encyclopedia of Computer Science and Engineering.
[5]
Simon Handley,et al.
On the use of a directed acyclic graph to represent a population of computer programs
,
1994,
Proceedings of the First IEEE Conference on Evolutionary Computation. IEEE World Congress on Computational Intelligence.
[6]
WB Langdon.
Evolving Data Structures Using Genetic Programming
,
1995
.
[7]
Una-May O'Reilly,et al.
Genetic Programming II: Automatic Discovery of Reusable Programs.
,
1994,
Artificial Life.
[8]
Astro Teller,et al.
Turing completeness in the language of genetic programming with indexed memory
,
1994,
Proceedings of the First IEEE Conference on Evolutionary Computation. IEEE World Congress on Computational Intelligence.
[9]
William B. Langdon,et al.
Directed Crossover within Genetic Programming
,
1995
.
[10]
Hitoshi Iba,et al.
Genetic Programming with Local Hill-Climbing
,
1994,
PPSN.
[11]
Patrik D'haeseleer,et al.
Context preserving crossover in genetic programming
,
1994,
Proceedings of the First IEEE Conference on Evolutionary Computation. IEEE World Congress on Computational Intelligence.
[12]
Conor Ryan,et al.
Pygmies and civil servants
,
1994
.
[13]
Astro Teller,et al.
The evolution of mental models
,
1994
.
[14]
David E. Goldberg,et al.
Genetic Algorithms in Search Optimization and Machine Learning
,
1988
.