What’s in an Evolved Name? The Evolution of Modularity via Tag-Based Reference

Programming languages provide a variety of mechanisms to associate names with values, and these mechanisms play a central role in programming practice. For example, they allow multiple references to the same storage location or function in different parts of a complex program. By contrast, the representations used in current genetic programming systems provide few if any naming mechanisms, and it is therefore generally not possible for evolved programs to use names in sophisticated ways. In this chapter we describe a new approach to names in genetic programming that is based on Holland’s concept of tags. We demonstrate the use of tag-based names, we describe some of the ways in which they may help to extend the power and reach of genetic programming systems, and we look at the ways that tag-based names are actually used in an evolved program that solves a robot navigation problem.

[1]  William C. Frederick,et al.  A Combinatory Logic , 1995 .

[2]  R. Riolo,et al.  Evolution of cooperation without reciprocity , 2001, Nature.

[3]  M. Schönfinkel Über die Bausteine der mathematischen Logik , 1924 .

[4]  Thomas S. Ray,et al.  Is It Alive or Is It GA? , 1991, ICGA.

[5]  Morgan Kaufmann,et al.  Evolutionary Module Acquisition " an Evolutionary Algorithm That Constructs Recur- Rent Neural Networks, " Lair Technical Report #93-pa-gnarly, Submitted to Ieee Transac- Tions on Neural Networks Special Issue on Evolu- Tionary Programming. Evolutionary Module Acquisition Evolutionary Module Acquisi , 1993 .

[6]  Julian Francis Miller,et al.  The Automatic Acquisition, Evolution and Reuse of Modules in Cartesian Genetic Programming , 2008, IEEE Transactions on Evolutionary Computation.

[7]  Victor Ciesielski,et al.  Evolving programs with parameters and loops , 2010, IEEE Congress on Evolutionary Computation.

[8]  Weimin Xiao,et al.  Direct evolution of hierarchical solutions with self-emergent substructures , 2005, Fourth International Conference on Machine Learning and Applications (ICMLA'05).

[9]  David M. Clark,et al.  Genetic programming for finite algebras , 2008, GECCO '08.

[10]  HERBERT A. SIMON,et al.  The Architecture of Complexity , 1991 .

[11]  Lee Spector,et al.  Automatic Quantum Computer Programming: A Genetic Programming Approach (Genetic Programming) , 2004 .

[12]  John R. Koza,et al.  Evolving Modules in Genetic Programming by Subtree Encapsulation , 2001, EuroGP.

[13]  Terence Soule Evolutionary Dynamics of Tag Mediated Cooperation with Multilevel Selection , 2011, Evolutionary Computation.

[14]  Lee Spector,et al.  Genetic Programming and Autoconstructive Evolution with the Push Programming Language , 2002, Genetic Programming and Evolvable Machines.

[15]  Maarten Keijzer,et al.  The Push3 execution stack and the evolution of control , 2005, GECCO '05.

[16]  Tomoharu Nagao,et al.  Graph structured program evolution with automatically defined nodes , 2009, GECCO.

[17]  John H. Holland,et al.  Hidden Order: How Adaptation Builds Complexity , 1995 .

[18]  Jean-Pierre Bourguignon,et al.  Mathematische Annalen , 1893 .

[19]  Anthony Brabazon,et al.  A Grammatical Genetic Programming Approach to Modularity in Genetic Algorithms , 2007, EuroGP.

[20]  Gregory Hornby,et al.  Modularity, reuse, and hierarchy: Measuring complexity by measuring structure and organization , 2007, Complex..

[21]  Lee Spector,et al.  Simultaneous evolution of programs and their control structures , 1996 .

[22]  Lee Spector,et al.  Autoconstructive Evolution: Push, PushGP, and Pushpop , 2001 .

[23]  Lee Spector,et al.  Tag-based modules in genetic programming , 2011, GECCO '11.

[24]  Michel Toulouse,et al.  Automatic Quantum Computer Programming: A Genetic Programming Approach , 2006, Genetic Programming and Evolvable Machines.

[25]  Istvan Jonyer,et al.  Improving Modularity in Genetic Programming Using Graph-Based Data Mining , 2006, FLAIRS Conference.

[26]  Marc Schoenauer,et al.  A Dynamic Lattice to Evolve Hierarchically Shared Subroutines , 1998, EuroGP.

[27]  Saul A. Kripke,et al.  Naming and Necessity , 1980 .

[28]  John R. Koza,et al.  Genetic programming: a paradigm for genetically breeding populations of computer programs to solve problems , 1990 .

[29]  Lee Spector,et al.  Multidimensional Tags, Cooperative Populations, and Genetic Programming , 2007 .

[30]  John R. Koza,et al.  Genetic programming 2 - automatic discovery of reusable programs , 1994, Complex Adaptive Systems.

[31]  J. K. Kinnear,et al.  Alternatives in automatic function definition: a comparison of performance , 1994 .

[32]  Lee Spector,et al.  Multi-type, Self-adaptive Genetic Programming as an Agent Creation Tool , 2002 .

[33]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[34]  Astro Teller,et al.  The evolution of mental models , 1994 .

[35]  John R. Koza,et al.  Hidden Order: How Adaptation Builds Complexity. , 1995, Artificial Life.

[36]  Peter D. Mosses,et al.  Programming Language Description Languages , 2010 .