Autoconstructive evolution is a process in which the entities undergoing evolutionary change are themselves responsible for the construction of their own offspring and thus for aspects of the evolutionary process itself. Because biological evolution is always autoconstructive, this term mainly occurs in evolutionary computation, to distinguish artificial life type systems from conventional genetic algorithms where the GA performs replication artificially.[1][2][3][4][5] The term was coined by Lee Spector.[6][7][8][9][10]
Importance of autoconstructive evolution
editAutoconstructive evolution is a good platform for answering theoretical questions about the evolution of evolvability. Preliminary evidence suggests that the way in which offspring are generated changes substantially over the course of evolution.[11] By studying these patterns, we can begin to understand how evolving systems organize themselves to evolve faster. Ultimately, such an understanding could allow us to improve our ability to solve problems with evolutionary computation.
This increased ability for the process of self-replication to evolve is also thought to be important for recreating the open-ended evolutionary process observed on earth[12]
Examples of autoconstructive evolution
editTierra and Avida
editA relatively simple form of autoconstruction occurs in systems such as Tierra and Avida. In these systems, programs replicate themselves by allocating space in memory for their offspring and then looping over all of the instructions in their genome and copying each into the newly allocated space.[13] This is autoconstruction in that the programs are responsible for determining what code ends up in the offspring. Programs most commonly make exact copies of themselves, with changes being introduced exclusively through mutation events. In principle, however, programs can compose a wide range of possible offspring by only copying a subset of their genomes.
PushGP
editPushGP is a genetic programming system which evolves code written in the Push language.[8] Push is a stack-based language designed for easy use in genetic programming, in which every variable type (e.g. strings, integers, etc.) has its own stack. All variables are stored on the stack associated with their type. One of the variable types is executable Push code. As a result, this language design allows for rich autoconstructive evolution by treating all code left on the code stack at the end of program execution as the program's offspring.[14] Using this approach, programs have complete control over the offspring programs that they create.
References
edit- ^ Ekárt, Anikó (2014-03-01). "Emergence in genetic programming" (PDF). Genetic Programming and Evolvable Machines. 15 (1): 83–85. doi:10.1007/s10710-013-9199-4. ISSN 1389-2576. S2CID 20992086.
- ^ Miller, Julian F. (2011). Cartesian Genetic Programming. Springer Science & Business Media. p. 10. ISBN 978-3642173103.
- ^ Rahim, Adzni Abdul (2008). A parametric study on reproductive competence in auto-constructive artificial life (Masters thesis). Universiti Malaysia Sabah.
- ^ Ryser-welch, Patricia; Miller, Julian F. (2014). "A review of hyper-heuristic frameworks". Proceedings of the Evo20 Workshop, AISB. CiteSeerX 10.1.1.563.9564.
- ^ Rahim, A. B. Abdul; Teo, J.; Saudi, A. (June 2006). "An Empirical Comparison of Code Size Limit in Auto-Constructive Artificial Life". 2006 IEEE Conference on Cybernetics and Intelligent Systems. pp. 1–6. doi:10.1109/ICCIS.2006.252308. ISBN 978-1-4244-0022-5. S2CID 17596010.
- ^ Spector, Lee (2010-10-20). "Towards Practical Autoconstructive Evolution: Self-Evolution of Problem-Solving Genetic Programming Systems". Genetic Programming Theory and Practice VIII. Springer Science & Business Media. pp. 14–30. ISBN 978-1441977472.
- ^ Spector, Lee (2000). Automatic Quantum Computer Programming: A Genetic Programming Approach. Springer Science & Business Media. pp. 7–72. ISBN 978-1402078958.
- ^ a b Spector, Lee (2001). "Autoconstructive evolution: Push, pushGP, and pushpop" (PDF). Proceedings of the Genetic and Evolutionary Computation Conference. GECCO. San Francisco, CA, USA: ACM. pp. 137–146.
- ^ Spector, Lee; Moscovici, Eva (2017). "Recent developments in autoconstructive evolution". Proceedings of the Genetic and Evolutionary Computation Conference Companion. GECCO '17. New York, NY, USA: ACM. pp. 1154–1156. doi:10.1145/3067695.3082058. ISBN 9781450349390. S2CID 1968045.
- ^ Harrington, Kyle; Tosch, Emma; Spector, Lee; Pollack, Jordan (2011). "Compositional Autoconstructive Dynamics" (PDF). Unifying Themes in Complex Systems Volume VIII: Proceedings of the Eighth International Conference on Complex Systems. New England Complex Systems Institute. pp. 856–870. ISBN 978-0-9656328-4-3.
- ^ Spector, Lee; Moscovici, Eva (2017). "Recent developments in autoconstructive evolution". Proceedings of the Genetic and Evolutionary Computation Conference Companion. GECCO '17. New York, NY, USA: ACM. pp. 1154–1156. doi:10.1145/3067695.3082058. ISBN 9781450349390. S2CID 1968045.
- ^ Taylor, Tim; Bedau, Mark; Channon, Alastair; Ackley, David; Banzhaf, Wolfgang; Beslon, Guillaume; Dolson, Emily; Froese, Tom; Hickinbotham, Simon (2016-07-29). "Open-Ended Evolution: Perspectives from the OEE Workshop in York" (PDF). Artificial Life. 22 (3): 408–423. doi:10.1162/ARTL_a_00210. ISSN 1064-5462. PMID 27472417. S2CID 215715948.
- ^ Ofria, Charles; Wilke, Claus O. (2004). "Avida: A Software Platform for Research in Computational Evolutionary Biology". Artificial Life. 10 (2): 191–229. CiteSeerX 10.1.1.211.8981. doi:10.1162/106454604773563612. ISSN 1064-5462. PMID 15107231. S2CID 15128560.
- ^ Robinson, Alan; Spector, Lee (2002-03-01). "Genetic Programming and Autoconstructive Evolution with the Push Programming Language". Genetic Programming and Evolvable Machines. 3 (1): 7–40. doi:10.1023/A:1014538503543. ISSN 1573-7632. S2CID 5584377.
External links
edit