TY - JOUR
T1 - Flight of the FINCH through the java wilderness
AU - Orlov, Michael
AU - Sipper, Moshe
N1 - Funding Information:
Manuscript received November 17, 2009; revised February 17, 2010, April 27, 2010, and May 26, 2010. Date of publication January 10, 2011; date of current version March 30, 2011. The work of M. Orlov is supported in part by the Adams Fellowship Program of the Israel Academy of Sciences and Humanities, and in part by the Lynn and William Frankel Center for Computer Sciences.
PY - 2011/4/1
Y1 - 2011/4/1
N2 - We describe Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-based, local variables-based, and control flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. We demonstrate FINCH's unqualified success at solving a host of problems, including simple and complex regression, trail navigation, image classification, array sum, and tic-tac-toe. FINCH exploits the richness of the Java virtual machine architecture and type system, ultimately evolving human-readable solutions in the form of Java programs. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer's toolkit.
AB - We describe Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-based, local variables-based, and control flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. We demonstrate FINCH's unqualified success at solving a host of problems, including simple and complex regression, trail navigation, image classification, array sum, and tic-tac-toe. FINCH exploits the richness of the Java virtual machine architecture and type system, ultimately evolving human-readable solutions in the form of Java programs. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer's toolkit.
KW - Automatic programming
KW - Java bytecode
KW - genetic programming (GP)
KW - software evolution
UR - http://www.scopus.com/inward/record.url?scp=79953285960&partnerID=8YFLogxK
U2 - 10.1109/TEVC.2010.2052622
DO - 10.1109/TEVC.2010.2052622
M3 - Article
AN - SCOPUS:79953285960
SN - 1089-778X
VL - 15
SP - 166
EP - 182
JO - IEEE Transactions on Evolutionary Computation
JF - IEEE Transactions on Evolutionary Computation
IS - 2
M1 - 5685268
ER -