Genetic programming in the wild: Evolving unrestricted bytecode

Michael Orlov, Moshe Sipper

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

18 Scopus citations

Abstract

We describe a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Bytecode is evolved directly, without any intermediate genomic representation. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-, local variables-, 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. Given the huge universe of unrestricted Java bytecode, as is programs, our work enables the applications of evolution within this realm. We experimentally validate our methodology by both extensively testing the correctness of compatible crossover on arbitrary bytecode, and by running evolution on a program that exploits the richness of the Java virtual machine architecture and type system.

Original languageEnglish
Title of host publicationProceedings of the 11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009
Pages1043-1050
Number of pages8
DOIs
StatePublished - 31 Dec 2009
Event11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009 - Montreal, QC, Canada
Duration: 8 Jul 200912 Jul 2009

Conference

Conference11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009
Country/TerritoryCanada
CityMontreal, QC
Period8/07/0912/07/09

Keywords

  • Java bytecode
  • Software evolution

Fingerprint

Dive into the research topics of 'Genetic programming in the wild: Evolving unrestricted bytecode'. Together they form a unique fingerprint.

Cite this