Evolutionary Improvement of Programs

Created by W.Langdon from gp-bibliography.bib Revision:1.3963

  author =       "David R. White and Andrea Arcuri and John A. Clark",
  title =        "Evolutionary Improvement of Programs",
  journal =      "IEEE Transactions on Evolutionary Computation",
  year =         "2011",
  volume =       "15",
  number =       "4",
  pages =        "515--538",
  month =        aug,
  keywords =     "genetic algorithms, genetic programming, sbse,
                 Coevolution, embedded systems, execution time, genetic
                 programming, multiobjective optimisation, nonfunctional
                 criteria, search based software engineering STGP,
  ISSN =         "1089-778X",
  DOI =          "doi:10.1109/TEVC.2010.2083669",
  size =         "24 pages",
  abstract =     "Most applications of genetic programming (GP) involve
                 the creation of an entirely new function, program or
                 expression to solve a specific problem. In this paper,
                 we propose a new approach that applies GP to improve
                 existing software by optimising its non-functional
                 properties such as execution time, memory usage, or
                 power consumption. In general, satisfying
                 non-functional requirements is a difficult task and
                 often achieved in part by optimizing compilers.
                 However, modern compilers are in general not always
                 able to produce semantically equivalent alternatives
                 that optimise non-functional properties, even if such
                 alternatives are known to exist: this is usually due to
                 the limited local nature of such optimisations. In this
                 paper, we discuss how best to combine and extend the
                 existing evolutionary methods of GP, multiobjective
                 optimization, and coevolution in order to improve
                 existing software. Given as input the implementation of
                 a function, we attempt to evolve a semantically
                 equivalent version, in this case optimised to reduce
                 execution time subject to a given probability
                 distribution of inputs. We demonstrate that our
                 framework is able to produce non-obvious optimizations
                 that compilers are not yet able to generate on eight
                 example functions. We employ a coevolved population of
                 test cases to encourage the preservation of the
                 function's semantics. We exploit the original program
                 both through seeding of the population in order to
                 focus the search, and as an oracle for testing
                 purposes. As well as discussing the issues that arise
                 when attempting to improve software, we employ rigorous
                 experimental method to provide interesting and
                 practical insights to suggest how to address these
  notes =        "also known as \cite{5688317}

                 ECJ, C function, java, gnu -o2 gcc, hall of fame. M5
                 simulator (alpha microprocessor). Functionality 128
                 times more important than efficiency. Compilation and
                 run time errors give fitness death penalty. Branch
                 coverage. Run time limit. Java overflow. R

                 Presented in part at COW50: The 50th CREST Open
                 Workshop - Genetic Improvement

Genetic Programming entries for David Robert White Andrea Arcuri John A Clark