Created by W.Langdon from gp-bibliography.bib Revision:1.8051
The first to ask such a question was Alan Turing, a person considered by many to be the father of computer science. In 1948 Turing proposed three approaches he believed could solve complex problems without the need for human intervention. The first was a purely logicdriven search. This arose a decade later in the form of general problem-solving algorithms. Though successful in solving toy problems which could be sufficiently formalised, solving real-world problems was found to be infeasible. The second approach Turing called cultural search. This approach would store libraries of information to then reference and provide solutions to particular problems in accordance to this information. This is similar to what we would now refer to as an expert system. Though the first expert system is hard to date due to differences in definition, the development is normally attributed to Feigenbaum, Bachanan, Lederberg, and Sutherland for their work, originating in the 1960s, on the DENRAL system. Turings last proposal was an iterative, evolutionary technique which he later expanded on stating:
We cannot expect to find a good child-machine at the first attempt. One must experiment with teaching one machine and see how well it learns. One can then try another and see if it is better or worse. There is an obvious connection between this process and evolution.
Though a primitive proposal in comparison to modern techniques, Turing clearly identified the foundation of what we now refer to as Evolutionary Computation (EC). EC borrows principles from biological evolution and adapts them for use in computer systems. Despite EC initially appearing to be an awkward melding between the two perpendicular disciplines of biology and computer science, useful ideas from evolutionary theory can be used in engineering processes. Just as man dreamt of flight from watching birds, EC researchers dream of self-improving systems from observing evolutionary processes.
Despite these similarities, evolutionary inspired techniques in computer science have yet to build complex software systems from scratch. Though they have been successfully used to solve complex problems, such as classification and clustering, there is a general acceptance that, as in nature, these evolutionary processes take vast amounts of time to create complex structures from simple starting points. Even the best computer systems cannot compete with natures ability to evaluate many millions of variants in parallel over the course of millennia. It is for this reason research into modifying and optimising already existing software, a process known as Genetic Improvement, has blossomed.
Genetic Improvement (commonly referred to as GI) modifies existing software using search-based techniques with respect to some objective. These search-based techniques are typically evolutionary and, if not, are based on iterative improvement which we may view as a form of evolution. GI sets out to solve the last mile problems of software development; problems that arise in software engineering close to completion, such as bugs or sub-optimal performance. It is the genetic improvement of non-functional properties, such as execution time and energy consumption, which we concern ourselves with in this thesis, as we find it to be the area of research which is the most interesting, and the most exciting. It is hoped that those referencing this thesis may share the same vision: that the genetic improvement of non-functional properties has the potential to transform software development, and that the work presented here is a step towards that goal.
The thesis is divided into six chapters (inclusive of this Introduction chapter). In Chapter 2 we explain the background material necessary to understand the content discussed later in the following chapters. From this, in Chapter 3, we highlight our investigations into the novel nonfunctional property of energy consumption which, in part, includes a study in how energy may be reduced via the approximation of output. We then expand on this in Chapter 4 by discussing our investigations into the applicability of GI in the domain of approximate computing, which covers a study into optimising the non-functional properties of software running on novel hardware: in this case, Android tablet devices. We then show, in Chapter 5, early research into how GI may be used to specialise software for specific hardware targets; in particular, how GI may automatically modify sequential code to run on GPUs. Finally, in Chapter 6 we discuss what relevant work is currently being undertaken by using the area of genetic improvement, and provide the reader with clear and concise take-away messages from this thesis.",
ISNI: 0000 0004 7429 091X
Supervisory team: Justyna Petke, Mark Harman, Earl T. Barr.",
Genetic Programming entries for Bobby R Bruce