Genetic Improvement (computer Science)
   HOME

TheInfoList



OR:

In
computer software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists ...
development, genetic Improvement is the use of
optimisation Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criterion, from some set of available alternatives. It is generally divided into two subfi ...
and
machine learning Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence. Machine ...
techniques, particularly
search-based software engineering Search-based software engineering (SBSE) applies metaheuristic search techniques such as genetic algorithms, simulated annealing and tabu search to software engineering problems. Many activities in software engineering can be stated as optimizatio ...
techniques such as genetic programming to improve existing
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists ...
. The improved
program Program, programme, programmer, or programming may refer to: Business and management * Program management, the process of managing several related projects * Time management * Program, a part of planning Arts and entertainment Audio * Progra ...
need not behave identically to the original. For example,
automatic bug fixing Automatic bug-fixing is the automatic repair of software bugs without the intervention of a human programmer. It is also commonly referred to as ''automatic patch generation'', ''automatic bug repair'', or ''automatic program repair''. The typical ...
improves
program code A computer language is a formal language used to communicate with a computer. Types of computer languages include: * Construction language – all forms of communication by which a human can specify an executable problem solution to a comput ...
by reducing or eliminating 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 Memory is the faculty of the mind by which data or information is encoded, stored, and retrieved when needed. It is the retention of information over time for the purpose of influencing future action. If past events could not be remembered, ...
, it uses less
energy In physics, energy (from Ancient Greek: ἐνέργεια, ''enérgeia'', “activity”) is the quantitative property that is transferred to a body or to a physical system, recognizable in the performance of work and in the form of heat a ...
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 do what is wanted of the original program and is now better. Genetic improvement can be used to create multiple versions of programs, each
tailored A tailor is a person who makes or alters clothing, particularly in men's clothing. The Oxford English Dictionary dates the term to the thirteenth century. History Although clothing construction goes back to prehistory, there is evidence of ...
to be better for a particular use or for a particular computer. Genetic improvement can be used with
multi-objective optimization Multi-objective optimization (also known as multi-objective programming, vector optimization, multicriteria optimization, multiattribute optimization or Pareto optimization) is an area of multiple criteria decision making that is concerned with ...
to consider improving software along multiple dimensions or to consider trade-offs between several objectives, such as 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 typically small changes or edits (also known as
mutations In biology, a mutation is an alteration in the nucleic acid sequence of the genome of an organism, virus, or extrachromosomal DNA. Viral genomes contain either DNA or RNA. Mutations result from errors during DNA or viral replication, mi ...
) to the program's
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
but sometimes the mutations are made to assembly code, byte code or binary machine code.{{cite book , doi = 10.1145/2739482.2768427 , pages=847–854 , year=2015 , last1=Schulte , first1=Eric M. , last2=Weimer , first2=Westley , last3=Forrest , first3=Stephanie , title=Proceedings of the Companion Publication of the 2015 Annual Conference on Genetic and Evolutionary Computation , chapter=Repairing COTS Router Firmware without Access to Source Code or Test Suites , isbn=9781450334884 , s2cid=14772346


References


External links

*Open PhD tutorial http://phdopen.mimuw.edu.pl/index.php?page=z15w1 (also covers SBSE and CIT but last of three topics is Genetic Improvement of software). *International Workshops on Genetic Improvement: http://www.geneticimprovementofsoftware.com web pages include GI community pages http://geneticimprovementofsoftware.com/learn/about


Tools

*GIN https://github.com/gintool/gin *Magpie https://github.com/bloa/magpie *PyGGI https://github.com/coinse/pyggi Optimization algorithms and methods