Automatic Evolution of Java-Written Game Heuristics
FINCH is a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. The established approach in genetic programming (GP) involves the definition of functions and terminals appropriate to the problem at hand, after which evolution of expressions using these definitions takes place. FINCH evolutionarily improves actual, extant software, which was not intentionally written for the purpose of serving as a GP representation in particular, nor for evolution in general. In this work we show how several game heuristics that are taken as real-world Java programs are effortlessly and automatically improved by FINCH.
We have developed a powerful tool [1,2,3] by which extant software, written in the Java programming language, or in a language that compiles to Java bytecode, can be evolved directly, without an intermediate genomic representation, and with no restrictions on the constructs used. We provide an overview of this system, some previous results, its usability, and the application of FINCH to evolving Java-written game heuristics.
- 1.Orlov, M., Sipper, M.: Genetic programming in the wild: Evolving unrestricted bytecode. In: Raidl, G., et al. (eds.) Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation, Montréal Québec, Canada, July 8-12, pp. 1043–1050. ACM Press, New York (2009)Google Scholar
- 2.Orlov, M., Sipper, M.: FINCH: A system for evolving Java (bytecode). In: Riolo, R., McConaghy, T., Vladislavleva, E. (eds.) Genetic Programming Theory and Practice VIII, GPTP 2010, Genetic and Evolutionary Computation, Ann Arbor, Michigan, USA, May 20-22, vol. 8, ch. 1, pp. 1–16. Springer, New York (2010)Google Scholar