Colin Johnson, University of Kent at Canterbury
The natural world provides a rich source of complexity. This complexity can be abstracted from its original source by giving a mathematical description of how it arises, and then this abstraction can be realised in the computer in an entirely different domain using simulation-like techniques and then applied to problems far removed from the original source of inspiration.
Genetic programming is a technique that was invented in the early 1990s which applies the ideas of evolution to optimise program code against a description of a problem. This has proven successful for some kinds of problems such as fitting models to data and design of electrical circuits. However for larger scale traditional programming tasks a number of problems arise. In particular we are unable to confirm that a particular program or subprogram does what we expect it to, outside of the specific cases on which it has been tested; and it is difficult to assess some tasks as a whole.To tackle this we are concentrating on two main ideas. The first is using other methods of assessing fitness other than simply testing the programs in the population on data. For example we have used methods of static analysis to check whether a program from the population satisfies certain conditions (e.g. not violating certain basic safety constraints) whilst using traditional fitness-by-testing to assess the performance of the program on the remainder of the task. This has been applied, as a case study, to robot control. The second main development in this area uses analysis of the structure of programs and the automated development of high-level interacting modules before detailed code is evolved.
Another area of interest is analysing the results of runs of genetic programming using statistical and data mining techniques. By doing this we hope to check whether GP systems are actually doing what we intend them to do. In particular: do mutations in the program make small changes in the results? Do crossovers find programs that are "in between" two programs?
An area of current interest is computational systems inspired by swarm behaviour: both swarms such as insect swarms, bird flocks and crowds of people, and swarms produced by physical interactions. Together with Alex Freitas and collborators at other institutions, we are working on an EPSRC-funded project called Extended Particle Swarms. Within this we are looking at many different sub-areas: in recent months we have been looking at the application of swarm systems in bioinformatics and creating efficient communication in swarms using the ideas of small world networks.
Mathematics as a Data Mining Problem
A particular interest over the last few years has been considering mathematical problems in a data mining framework. Given a definition of some kind of object, we can generate a large database of objects that satisfy that definition. Once we have this database we can treat it as "data" and apply data mining techniques to find patterns in it.
I have been applying these ideas to low-dimensional geometrical and topological structures such as graphs and knots. This has involved the creation of new techniques for converting between different ways of representing these structures, and the analysis of different representations to identify which representations are particularly suited to the application of evolutionary operators.
Colin Johnson University of Kent at Canterbury