ABSTRACT
The language in which evolving programs are expressed can have significant impacts on the dynamics and problem-solving capabilities of a genetic programming system. In GP these impacts are driven by far more than the absolute computational power of the languages used; just because a computation is theoretically possible in a language, it doesn't mean it's readily discoverable or leveraged by evolution. Highly expressive languages can facilitate the evolution of programs for any computable function using, as appropriate, multiple data types, evolved subroutines, evolved control structures, evolved data structures, and evolved modular program and data architectures. In some cases expressive languages can even support the evolution of programs that express methods for their own reproduction and variation (and hence for the evolution of their offspring).
This tutorial will present a range of approaches that have been taken for evolving programs in expressive programming languages. We will then provide a detailed introduction to the Push programming language, which was designed specifically for expressiveness in genetic programming systems. Push programs are syntactically unconstrained but can nonetheless make use of multiple data types and express arbitrary control structures, potentially supporting the evolution of complex, modular programs in a particularly simple and flexible way.
Interleaved with our description of the Push language will be demonstrations of the use of analytical tools such as graph databases and program diff/merge tools to explore ways in which evolved Push programs are actually taking advantage of the language's expressive features. We will illustrate, for example, the effective use of multiple types and type-appropriate functions, the evolution and modification of code blocks and looping/recursive constructs, and the ability of Push programs to handle multiple, potentially related tasks.
We will conclude with a brief review of over a decade of Push-based research, including the production of human-competitive results, along with recent enhancements to Push that are intended to support the evolution of complex and robust software systems.
- The Push language website: http://pushlanguage.orgGoogle Scholar
- Helmuth, T., Spector, L., McPhee, N. F., and S. Shanabrook. 2016. Linear Genomes for Structured Programs. In Genetic Programming Theory and Practice XIII. New York: Springer. In preparation.Google Scholar
- Spector, L., McPhee, N. F., Helmuth, T., Casale. M. M., and J. Oks. 2016. Evolution Evolves with Autoconstruction. In Companion Publication of the 2016 Genetic and Evolutionary Computation Conference. ACM Press. In press. Google ScholarDigital Library
- Helmuth, T., and L. Spector. 2015. General Program Synthesis Benchmark Suite. In Proceedings of the 2015 Genetic and Evolutionary Computation Conference, GECCO'15. ACM Press. pp. 1039--1046. Google ScholarDigital Library
- La Cava, W., and L. Spector. 2015. Inheritable Epigenetics in Genetic Programming. In Genetic Programming Theory and Practice XII. New York: Springer. pp. 37--5Google Scholar
- Helmuth, T., L. Spector, and J. Matheson. 2015. Solving Uncompromising Problems with Lexicase Selection. In IEEE Transactions on Evolutionary Computation 19(5), pp. 630--643.Google ScholarDigital Library
- Helmuth, T., and L. Spector. 2014. Word Count as a Traditional Programming Benchmark Problem for Genetic Programming. In Proceedings of the 2014 Genetic and Evolutionary Computation Conference, GECCO'14. ACM Press. pp. 919--926. Google ScholarDigital Library
- Spector, L., and T. Helmuth. 2014. Effective Simplification of Evolved Push Programs Using a Simple, Stochastic Hill-climber. In Companion Publication of the 2014 Genetic and Evolutionary Computation Conference. ACM Press. pp. 147--148. Google ScholarDigital Library
- Zhan, H. 2014. A quantitative analysis of the simplification genetic operator. In Companion Publication of the 2014 Genetic and Evolutionary Computation Conference. ACM Press. pp. 1077--1080. Google ScholarDigital Library
- Spector, L., K. Harrington, and T. Helmuth. 2012.Tag-based Modularity in Tree-based Genetic Programming. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO-2012. ACM Press. pp. 815--822. Google ScholarDigital Library
- Spector, L., K. Harrington, B. Martin, and T. Helmuth. 2011. What's in an Evolved Name? The Evolution of Modularity via Tag-Based Reference. In Genetic Programming Theory and Practice IX. New York: Springer. pp. 1--16.Google Scholar
- Spector, L. 2010. Towards Practical Autoconstructive Evolution: Self-Evolution of Problem-Solving Genetic Programming Systems. In Genetic Programming Theory and Practice VIII, R. L. Riolo, T. McConaghy, and E. Vladislavleva, eds. Springer. pp. 17--33.Google Scholar
- Spector, L., D. M. Clark, I. Lindsay, B. Barr, and J. Klein. 2008. Genetic Programming for Finite Algebras. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO-2008. ACM Press. pp. 1291--1298. Google ScholarDigital Library
- Spector, L., J. Klein, and M. Keijzer. 2005. The Push3 Execution Stack and the Evolution of Control. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO-2005. Springer-Verlag. pp. 1689--1696. Google ScholarDigital Library
- Spector, L. 2004. Automatic Quantum Computer Programming: A Genetic Programming Approach. Boston, MA: Kluwer Academic Publishers. Google ScholarDigital Library
- Spector, L., and A. Robinson. 2002. Genetic Programming and Autoconstructive Evolution with the Push Programming Language. In Genetic Programming and Evolvable Machines, Vol. 3, No. 1, pp. 7--40. Google ScholarDigital Library
- Spector, L. 2001. Autoconstructive Evolution: Push, PushGP, and Pushpop. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO-2001. Morgan Kaufmann Publishers. pp. 137--146.Google Scholar
- Robinson, A. 2001. Genetic Programming: Theory, Implementation, and the Evolution of Unconstrained Solutions. Hampshire College Division III (senior) thesis.Google Scholar
Index Terms
- Expressive Genetic Programming: Concepts and Applications
Recommendations
Expressive Genetic Programming
GECCO Companion '15: Proceedings of the Companion Publication of the 2015 Annual Conference on Genetic and Evolutionary ComputationThe language in which evolving programs are expressed can have significant impacts on the problem-solving capabilities of a genetic programming system. These impacts stem both from the absolute computational power of the languages that are used, as ...
Expressive genetic programming
GECCO '13 Companion: Proceedings of the 15th annual conference companion on Genetic and evolutionary computationThe language in which evolving programs are expressed can have significant impacts on the problem-solving capabilities of a genetic programming system. These impacts stem both from the absolute computational power of the languages that are used, as ...
Expressive genetic programming
GECCO Comp '14: Proceedings of the Companion Publication of the 2014 Annual Conference on Genetic and Evolutionary ComputationThe language in which evolving programs are expressed can have significant impacts on the problem-solving capabilities of a genetic programming system. These impacts stem both from the absolute computational power of the languages that are used, as ...
Comments