Welcome to the community page for
Generative and Developmental Systems
This page is maintained by Jeff Clune (jclune theAtSign gmail dotcom). If you would like to edit this page, or have any questions, please email me.
*** Please submit papers to
GECCO's 2011 Generative and Developmental Systems track, the premier conference on Generative, Indirect, and Developmental Encodings worldwide!***
This page contains information and work related to
Evolutionary Algorithms that use generative encodings. Encodings are the way information is stored in a genome and the process that turns that information into a phenotype. Generative encodings reuse information in the genotype to influence many parts of the phenotype. With this technology, a small genome can encode for a larger, more complex phenotype. Generative encodings are contrasted with direct encodings, wherein each piece of information in a genotype describes a separate part of the phenotype.
This field goes by many names. Common synonyms for generative encodings are developmental or indirect encodings. Additional names for work in this field are as follows: artificial development, artificial embryogeny, computational embryology, generative systems, genetic regulatory networks (GRNs), Lindenmayer Systems (L-Systems), genotype to phenotype mappings, evolutionary design, etc. A nice review of the field and its terminology can be found in
Stanley and Miikkulainen 2003.
Feel free to add content to this page, including your own work. To do so simply email me (jclune theAtSign gmail dotcom) and I will give you access.
There are many different generative encodings. Here is a quick description of a few of them, and a link to a page where you can find related publications and software.
HyperNEAT
Hypercube-based NEAT, or HyperNEAT (Stanley , D’Ambrosio & Gauci 2009) is a generative encoding that evolves artificial neural networks (ANNs) with the principles of the widely used NeuroEvolution of Augmented Topologies (NEAT) algorithm (Stanley & Miikkulainen 2002). It is a novel technique for evolving large-scale neural networks utilizing the geometric regularities of the task domain. It uses Compositional Pattern Producing Networks (Stanley 2007), which are used to generate the images for
PicBreeder.org. More information about HyperNEAT can be found at the [
HyperNEAT Users Page].
Lindenmayer Systems (L-Systems)
Please add a description, and a link to a secondary page with additional information (create one on this system if necessary). Please also include a cool picture if you can.
Genetic Regulatory Networks (GRNs)
Please add a description, and a link to a secondary page with additional information (create one on this system if necessary). Please also include a cool picture if you can.
Self Modifying Cartesian Genetic Programming (SMCGP)
Self-modifying Cartesian Genetic Programming (SMCGP) was first proposed at the GDS track in London 2007. It is a general purpose, graph-based, developmental form of Genetic Programming founded on Cartesian Genetic Programming (Miller and Thomson 2000). In addition to the usual computational functions, it includes functions that can modify the program encoded in the genotype. This means that programs can be iterated to produce an arbitrary sequence of programs (phenotypes) from a single evolved genotype. In this sense it is generative or developmental. It even has the ability to switch off its own growth (by removing all active self-modification instructions). The latest version published in 2010 also allows programs/phenotypes to acquire more inputs and produce more outputs during this iteration.
So far, SMCGP has been applied to a variety of computational problems, including digital circuits, generation of patterns and sequences, mathematical problems and learning problems. One of the attractive feature of SMCGP is that it is possible to evolve provably general solutions to classes of problems (i.e. arbitrary parity, addition) and to evolve mathematical sequences and series. For instance, provable algorithms have been evolved that compute mathematical constants pi and e to arbitrary precision.
Multicellular Development with Cartesian Genetic Programming: French Flags
In multicellular developmental systems the phenotype is a collection of cells (e.g. cellular automata). In 2003-2004, Miller used Cartesian Genetic Programming to evolve cellular programs which could develop spatial patterns. Some of these patterns grew indefinitely, other stablized into a finite structure after a period of time, still others could be evolved which could metamorphose into different patterns under different environmental conditions. Finally, some of the evolved "organisms" could regenerate themselves when damaged. This was an interesting phenomenon as regeneration had not been a requirement of the fitness function, instead the evolved multicellular "organisms" acheived this as an emergent by-product. Some of the developed organisms can be seen below;
A CGP program was evolved that read binary information about the chemicals and states of cells of neighbouring cells. The program output instructions about what the new cell state and whether and where the cell should replicate. This is shown below:
Various cells patterns were evolved. The one below shows a cellular program that starts from a single program occupying the white cell in the centre, which grows to make a French flag. Once it has acheived a French flag it stops growing.
However, although the structure looks static is is actually permanently being reconstructed. This can be seen, by looking at what happens when the "organism" is damaged. In the figure below, the red and blue sections of the organism are removed and then the cellular program inside the remaining cells is allowed to run. This is what happens.
References
- K. O. Stanley , D. B. D’Ambrosio and J. Gauci, “A Hypercube-Based Indirect Encoding for Evolving Large-Scale Neural Networks.” Artificial Life. 2009.
- K. O. Stanley and R. Miikkulainen (2002). "Evolving Neural Networks Through Augmenting Topologies". Evolutionary Computation 10 (2): 99-127
- K. O. Stanley, “Compositional pattern producing networks: A novel abstraction of development,” Genetic Programming and Evolvable Machines, vol. 8, pp. 131 – 162, June 2007.
- J. Clune, B. Beckmann, C. Ofria, and R. Pennock. Evolving Coordinated Quadruped Gaits with the HyperNEAT Generative Encoding. Proceedings of the IEEE Congress on Evolutionary Computing Special Section on Evolutionary Robotics, 2009.
- S. Harding, J. F. Miller, W. Banzhaf. “Developments in Cartesian Genetic Programming: Self-modifying CGP”, Genetic Programming and Evolvable Machines, 11 (3/4), pages 397-439. 2010
- S. Harding, J. F. Miller, and W. Banzhaf, W. “Self Modifying Cartesian Genetic Programming: Finding algorithms that calculate pi and e to arbitrary precision”. Proceedings of Genetic and Evolutionary Computation Conference (GECCO'10), ACM, pages 579-586. 2010.
- J. F. Miller J. F., and P. Thomson. “Cartesian Genetic Programming”. Proceedings of the 3rd European Conference on Genetic Programming. Springer LNCS 1802. pages 121-132. 2000.
-J. F. Miller. “Evolving developmental programs for adaptation, morphogenesis, and self-repair”. Proceedings of the 7th European Conference on Artificial Life, Springer LNAI 2801. pages 256-265. 2003.
-J. F. Miller. “Evolving a self-repairing, self-regulating, French flag organism”. Proceedings of Genetic and Evolutionary Computation Conference (GECCO 2004), Springer LNCS 3102 (2004) 129-139.






