This thesis tackles a series of problems related to the evolution of complete
software systems both in terms of the underlying Genetic Programming
system and the application of that system.
A new representation is presented that addresses some of the issues with
other Genetic Program representations while keeping their advantages. This
combines the easy reproduction of the linear representation with the inheritable
characteristics of the tree representation by using fixed-length blocks of
genes representing single program statements. This means that each block of
genes will always map to the same statement in the parent and child unless it
is mutated, irrespective of changes to the surrounding blocks. This method
is compared to the variable length gene blocks used by other representations
with a clear improvement in the similarity between parent and child.
Traditionally, fitness functions have either been created as a selection of
sample inputs with known outputs or as hand-crafted evaluation functions. A
new method of creating fitness evaluation functions is introduced that takes
the formal specification of the desired function as its basis. This approach
ensures that the fitness function is complete and concise. The fitness functions
created from formal specifications are compared to simple input/output
pairs and the results show that the functions created from formal specifications
perform significantly better.
A set of list evaluation and manipulation functions was evolved as an
application of the new Genetic Program components. These functions have
the common feature that they all need to be 100% correct to be useful.
Traditional Genetic Programming problems have mainly been optimization
or approximation problems. The list results are good but do highlight the
problem of scalability in that more complex functions lead to a dramatic
increase in the required evolution time.
Finally, the evolution of graphical user interfaces is addressed. The representation
for the user interfaces is based on the new representation for
programs. In this case each gene block represents a component of the user
interface. The fitness of the interface is determined by comparing it to a series
of constraints, which specify the layout, style and functionality requirements.
A selection of web-based and desktop-based user interfaces were evolved.
With these new approaches to Genetic Programming, the evolution of
complete software systems is now a realistic goal.
Doctoral Thesis. Submitted in partial fulfillment of the requirements for the award of Doctor of Philosophy of Loughborough University.