Automatic evolution of java-written game heuristics
SSBSE'11 Proceedings of the Third international conference on Search based software engineering
Representations and operators for improving evolutionary software repair
Proceedings of the 14th annual conference on Genetic and evolutionary computation
Multi-objective coevolutionary automated software correction
Proceedings of the 14th annual conference on Genetic and evolutionary computation
Automatic python programming using stack-based genetic programming
Proceedings of the 14th annual conference companion on Genetic and evolutionary computation
A human study of patch maintainability
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Evolving artificial neural networks with FINCH
Proceedings of the 15th annual conference companion on Genetic and evolutionary computation
A heuristiclab evolutionary algorithm for FINCH
Proceedings of the 15th annual conference companion on Genetic and evolutionary computation
Search methodologies in real-world software engineering
Proceedings of the 15th annual conference companion on Genetic and evolutionary computation
Current challenges in automatic software repair
Software Quality Control
Post-compiler software optimization for reducing energy
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Hi-index | 0.00 |
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.