Jump to content

Genetic improvement (computer science)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Happysquirrel (talk | contribs) at 23:22, 27 December 2015 (added Category:Optimization algorithms and methods using HotCat). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Genetic Improvement is the use of optimistion techniques, particularly search based software engineering techniques such as genetic programming to improve existing software. The improved program need not be behave identically to the original. For example automatic bug fixing improves program code by removing buggy behaviour. In other cases the improved software should behave identically to the old version but is better because, for example: it runs faster, it uses less memory, it uses less energy or it runs on a different type of computer. GI differs from, for example, formal program translation, in that it primarily verifies the behaviour of the new mutant version by running both the new and the old software on test inputs and comparing their output and performance in order to see if the new software can still what is wanted of the original program and is now better.

Genetic improvement can be used to create multiple versions of programs, each tailored to be better for a particular use or for a particular computer.

Genetic improvement can by used with Multi-objective optimization to consider improving software along multiple dimensions or to consider trade-offs between several objectives, such asking GI to evolve programs which trade speed against the quality of answers they give. Of course it may be possible to find programs which are both faster and give better answers.

Mostly Genetic Improvement makes changes (also known as mutations) to the program's source code but sometimes the mutations are made to assembly code, byte code or binary machine code.

References

Genetically Improved Software, http://dx.doi.org/doi:10.1007/978-3-319-20883-1_8

Automatic program repair with evolutionary computation http://dx.doi.org/doi:10.1145/1735223.1735249

Deep parameter optimisation. http://dx.doi.org/doi:10.1145/2739480.2754648

Energy optimisation via genetic improvement A SBSE technique for a new era in software development. http://dx.doi.org/doi:10.1145/2739482.2768420

Genetically improved CUDA C++ software. http://dx.doi.org/10.1007/978-3-662-44303-3_8

Optimising Existing Software with Genetic Programming http://dx.doi.org/10.1109/TEVC.2013.2281544

Flight of the FINCH through the Java Wilderness http://dx.doi.org/10.1109/TEVC.2010.2052622

Repairing COTS router firmware without access to source code or test suites: A case study in evolutionary software repair. http://dx.doi.org/10.1145/2739482.2768427