Introduction to MABE
🔗 Introduction to MABE
During the Summer of 2020, we had the pleasure of participating in the WAVES workshop and making contributions to MABE (Modular Agent-Based Evolution). MABE is a tool for evolving and analyzing digital brains. Users create and manage populations of evolving digital organisms which are then evaluated in worlds. The results of the evaluations dictate the generations of new populations by means of natural, artificial, and/or sexual selection.
The purpose of MABE is twofold:
-
Support academic research into topics related to evolution
-
Provide insight into evolution and evolutionary processes
🔗 How MABE Works
Figure MABE Structure. A broad overview of how MABE is structured, synonymous with how organisms evolve in the real world
-
Digital organisms contain a brain which determine how the organisms interact in their environment (or world), and a genome, which provides a blueprint for the brain. A collection of organisms make up a population.
-
Archivist is synonymous with a person who collects all data and decides what data to be stored.
-
Optimizer is synonmyous with a person who decides which organisms in a population will produce the next generation of organisms.
-
A Group in MABE is made up of a population of digital organisms, an optimizer, and archivist.
🔗 Mutations
Mutations can occur in genomes. If an organism progresses to the next generation, mutations applied to the genome introduces new genetic variation into the population. In other words, a (parent) genome generates a mutated offspring genome. There are three basic mutations that can occur:
-
Overwrite: changes the value of a single site in the genome
-
Insert: inserts sites to the genome, changing the genome size and causing offsets
-
Remove: removes sites from the genome, changing the genome size, and causing offsets
🔗 Genome Class
Genomes are often large, and undergo several mutations. The Genome Class in MABE sets aside a chunk of contiguous memory for every genome for the organisms that progress to the next generation. It then copies the parent genome over to the contiguous memory, applies the mutations, and voila! Offspring genomes are generated. Contiguous memory for genomes is assigned and written to at every next generation. If the frequency of generating offspring genomes was reduced, could the proposed method save time and memory?
🔗 Enter Changelog
One proposed solution was to create a changelog. A changelog would record the mutations that a genome has undergone. In this way, an offspring genome would not have to be generated at every generation. The offspring genome could be generated by applying recorded mutations in the changelog to the parent genome. It was time to put that idea to the test. Team MABE assemble!
🔗 Our Approaches
Each member of the team implemented a unique solution, with different data types and structures. Linked below are blogposts that go into more detail of each solution.
🔗 Acknowledgements
Mentors: Clifford Bohm, Jory Schossau, Jose Hernandez
Team Members: Victoria Cao, Jamell Dacon, Tetiana Dadakova, Uma Sethuraman, Stephanie Zendejo
This work is supported through Active LENS: Learning Evolution and the Nature of Science using Evolution in Action (NSF IUSE #1432563). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.