Tag-accessed Memory for Genetic Programming
This repository is associated with our 2019 GECCO extended abstract submission, Tag-accessed Memory for Genetic Programming.
Feel free to contact us with questions or file an issue on this repository if something isn't clear!
- Project Overview
- Repository Guide
- Supplemental Material
We present an early exploration of tag-accessed memory for genetic programming.
Tags are evolvable labels that give genetic programs a flexible mechanism for specification. Tag-based naming schemes have been demonstrated for labeling and referencing program modules (Spector, 2011; Lalejini and Ofria, 2018).
We continue to expand the use of tags in GP by incorporating tag-based referencing into the memory model of a simple linear GP representation. In this study, memory comprises 16 statically tagged memory registers, and instructions use tag-based referencing to refer to positions in memory. Programs in our simple representation are linear sequences of instructions, and each instruction has three tag-based arguments, which may modify the instruction's behavior. Below, we provide a visual example, contrasting traditional direct-indexed memory access and tag-based memory access.
In the example above, both programs have identical behavior: requesting input, setting the second register to the terminal value '2', multiplying the input by 2, and outputting the result.
- Contains R scripts used for data analyses and generating graphs.
- Contains raw data for preliminary and published experiments as well as the training and testing examples used for the programming synthesis benchmark problems (taken from Tom Helmuth's example repository).
- Contains miscellaneous documentation associated with this work.
- Contains the source code (C++) for our simple linear GP representation and for running the experiments discussed in our contribution.
- Contains scripts used to submit experiment jobs to MSU's HPCC.
- Contains media (images) associated with this work.
- Contains utility scripts used for managing experiments on the HPCC and for aggregating and manipulating experiment data.
- Experiment configuration and GP system details: ./docs/gp-system.md
- Data analysis: Our analyses were done in R (R Core Team, 2016).
- Find a webpage (generated with R markdown) here: http://lalejini.com/GECCO-2019-tag-accessed-memory/analysis/tag-mem-analysis.html
- Or, the Rmd file is here: ./analysis/tag-mem-analysis.Rmd
Lalejini, A., & Ofria, C. (2018). Evolving event-driven programs with SignalGP. In Proceedings of the Genetic and Evolutionary Computation Conference on - GECCO ’18 (pp. 1135–1142). New York, New York, USA: ACM Press. https://doi.org/10.1145/3205455.3205523
R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.
Spector, L., Martin, B., Harrington, K., & Helmuth, T. (2011). Tag-based modules in genetic programming. In Proceedings of the 13th annual conference on Genetic and evolutionary computation - GECCO ’11 (p. 1419). New York, New York, USA: ACM Press. https://doi.org/10.1145/2001576.2001767