Flight of the FINCH Through the Java Wilderness

@article{Orlov2011FlightOT,
  title={Flight of the FINCH Through the Java Wilderness},
  author={Michael Orlov and Moshe Sipper},
  journal={IEEE Transactions on Evolutionary Computation},
  year={2011},
  volume={15},
  pages={166-182}
}
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… 

Figures from this paper

Finch: A System for Evolving Java (Bytecode)

Fertile Darwinian Bytecode Harvester, to evolutionarily improve actual, extant software, which was not intentionally written for the purpose of serving as a GP representation in particular, nor for evolution in general.

Automatic Evolution of Java-Written Game Heuristics

This work shows how several game heuristics that are taken as real-world Java programs are effortlessly and automatically improved by FINCH.

Automatic python programming using stack-based genetic programming

This research proposes to evolve bytecode of Python programming language by stack-based genetic programming, a flexible and popular programming language powered by plenty of research tools.

A heuristiclab evolutionary algorithm for FINCH

A HeuristicLab plugin for FINCH, a system designed to evolutionarily improve actual, extant software, which was not intentionally written for the purpose of serving as a GP representation in particular, nor for evolution in general.

Applying Genetic Programming to Bytecode and Assembly

An overview of applying genetic programming to Java bytecode and x86 assembly is provided and experimental results that include evolving recursive functions and automated bug repair are discussed.

Integrating heuristiclab with compilers and interpreters for non-functional code optimization

An architecture to integrate GCE, which directly integrates with low-level interpreters and compilers, with HeuristicLab, a high-level optimization framework that features a wide range of heuristic and evolutionary algorithms, and a graphical user interface to control and monitor the machine learning process is proposed.

Challenges on applying genetic improvement in JavaScript using a high-performance computer

The experience on performing a study with fifteen projects submitted to genetic improvement with the use of a supercomputer is described, which reveals peculiarities in the construction of specific software infrastructure to support such an experimentation environment.

locoGP: Improving Performance by Genetic Programming Java Source Code

LocoGP, a Genetic Programming system written in Java for evolving Java source code, was designed to improve the performance of programs as measured in the number of operations executed.

Genetic Improvement of Programs

  • W. Langdon
  • Computer Science
    2014 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing
  • 2014
Genetic programming can optimise software, including: evolving test benchmarks, generating hyper-heuristics by searching meta-heuristics, generating communication protocols, composing telephony

Gen-O-Fix: An embeddable framework for Dynamic Adaptive Genetic Improvement Programming

Gen-O-Fix, a GIP framework which allows a software system hosted on the Java Virtual Machine to be continually improved (e.g. make better predictions; pass more regression tests; reduce power consumption), is described.
...

References

SHOWING 1-10 OF 48 REFERENCES

Genetic programming in the wild: evolving unrestricted bytecode

The 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.

Decompiling Java Bytecode: Problems, Traps and Pitfalls

The problems in assigning types to variables and literals, and the problems due to expression evaluation on the Java stack are outlined, and a particular emphasis on issues related to Java exceptions and synchronized blocks are looked at.

Programming for the Java¿ Virtual Machine

The introduction to the Java Virtual Machine and Java Platform and how the Verification Algorithm Works is followed, as well as examples of working with Class Objects, and a Gentler Way of Checking Type.

Design of the Java HotSpot#8482; client compiler for Java 6

The new architecture of the client compiler is outlined and how it interacts with the VM is shown, including the intermediate representation that now uses static single-assignment (SSA) form and the linear scan algorithm for global register allocation.

A genetic programming approach to automated software repair

The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.

Strongly Typed Genetic Programming

  • D. Montana
  • Computer Science
    Evolutionary Computation
  • 1995
Strongly typed genetic programming (STGP) is an enhanced version of genetic programming that enforces data-type constraints and whose use of generic functions and generic data types makes it more powerful than other approaches to type-constraint enforcement.

An improved representation for evolving programs

A representation has been developed that addresses some of the issues with other Genetic Program representations while maintaining their advantages by using fixed-length blocks of genes representing single program statements, so that each block of genes will always map to the same statement in the parent and child unless it is mutated, irrespective of changes to the surrounding blocks.

Genetic programming - on the programming of computers by means of natural selection

  • J. Koza
  • Computer Science
    Complex adaptive systems
  • 1993
This book discusses the evolution of architecture, primitive functions, terminals, sufficiency, and closure, and the role of representation and the lens effect in genetic programming.

Evolving Turing Complete representations

  • J. Woodward
  • Computer Science
    The 2003 Congress on Evolutionary Computation, 2003. CEC '03.
  • 2003
A crossover operator is proposed that only operates at the boundaries of modules, and as a consequence of this crossover operator the authors are more likely to produce self terminating programs, thus saving time when testing.

ASM: a code manipulation tool to implement adaptable systems

ASM is a Java class manipulation tool designed to dynamically generate and manipulate Java classes, which are useful techniques to implement adaptable systems. ASM is based on a new approach,