distributed
hierarchical
transitions
of
individuality
It's an evolution experiment where computer programs are evolving!
Each little grid title --- something like a biological cell --- is controlled by four virtual CPUs working in tandem (one for each side of the tile).
Depending on the program loaded into the cell, different decisions are made in response to environmental events and messages from neighboring cells.
For those in the know, virtual CPUs are being implemented using SignalGP [Lalejini and Ofria, 2018].
These cells are presented with a cooperative resource collection task.
In order to maximize their resource-collection rate, they need to organize into family resource-collecting groups (which we call "channels") that are just the right size... not too big and not too small!
Better-configured resource-collecting groups will tend to outcompete other groups for space on the grid.
Cells use resource they collect to reproduce.
When a cell has enough resource, it can copy its program into a neighboring cell.
The copy isn't perfect, though... usually, the program changes slightly (mutates) during this process.
My Darwin fanboys out there are probably onto it already, but
heritable variation + differential reproductive success (some programs are better at competing for space in the population) = ... evolution!
In previous work [Moreno and Ofria, 2019], we found that in response to this particular resource-collection task, strategies built on
reproductive division of labor,
resource sharing between cells, and
parental care for offspring
tend to evolve.
Such traits are suggestive of multicellularity... or, in fancy science-speak a fraternal transition in individuality [Smith and Szathmary, 1997].
So, why do this type of thing at all?
On one hand, we're using this model to ask and answer scientific questions about the evolution of multicellularity in order to better understand the processes at play behind life on Earth.
On the other, we hope that transitions in individuality --- which were key to the complexification and diversification of life on Earth --- can help us evolve sophisticated --- and perhaps useful --- computational systems, like reinforcement-learning agents.
But this web viewer is here so you can get a peek at evolution in action!
We reccomend letting the simulation run maybe 10,000 updates with rendering off (so it runs faster).
Then, render every update and look at
resource sharing in the Resource Sharing Viewer and
signs of reproductive cooperation in the Reproductive Pause Viewer and Resource Stockpile Viewer.
You might need to go get a cup of coffee before there's anything interesting to look at.
Pressed for time?
Watch a pre-rendered timelapse on YouTube here.
And, for extra credit be sure to
twiddle parameters in Configuration,
look at a program in the Dominant Genotype viewer (... can you figure out what it evolved to do?),
check out how the software is put together in Source & Ingredients, and
click over to Let's Chat and let us know what you think!
The Channel Viewer shows the arrangement of hereditarily-defined resource-collecing cell groups.
Color saturation (e.g.,
light green
vs.
intense green
) differentiates low-level groups.
Color hue (e.g.,
light blue
/
intense blue
vs.
light purple
/
intense purple
) differentiates high-level groups, which are groups of low-level groups.
White
borders divide low-level groups that are part of the same high-level group.
Black
borders divide high-level groups.
The Stockpile Viewer depicts the resource that each cell-like organism has accumulated.
Black
grid tiles are dead cells.
Red
indicates a resource defecit (which, if it becomes too extreme, will result in that cell's death).
White
indicates zero resource.
Blue
indicates positive resource, but below the threshold required for reproduction.
Green
indicates enough resource to reproduce.
Yellow
indicates an excess of resource, more than enough to reproduce.
The Contribution Viewer depicts the amount of resource has received from neighbors during the previous update.
Black
grid tiles are dead cells.
White
indicates zero resource was received.
Blue
indicates a small amount of resource was received.
Green
indicates an intermediate amount of resource was received.
Yellow
indicates a large amount of resource was received.
The Apoptosis Viewer shows cells that have registered themselves for imminent cellular suicidie.
Black
grid tiles are dead cells.
White
grid tiles are live cells.
Blue
cells are registered for partial apoptosis, where a underlying cell is destroyed but its channel structure is preserved.
Red
cells are registered for complete apoptosis, where a cell and its channel structure are totally destroyed.
The Taxa Viewer depicts the distribution of groups of genetically-identical cells.
Black
grid tiles are dead cells.
White
grid tiles are live cells.
White
lines divide cells with identical genotypes.
Red
lines divide cells with different genotypes.
The Resource Wave Viewer depicts the cells' cooperative resource-collection task.
Activation propagates outward in same-channel groups from an environmentally-triggered seed.
Green
cells are activated within the beneficial radius of the seed and are gaining resource.
Red
cells are activated outside the beneficial radius of the seed and are losing resource.
White
cells are in the ready state, meaning they can be activated by adjacent cooperating cells.
Blue
cells are in a quiescent state, meaning they cannot be activated by adjacent cooperating cells.
Black
grid tiles are dead cells.
The Channel Generation Viewer depicts generation counters that enforce a birth-death lifecycle.
White
cells are young members of a same-channel group.
They are capable of collecting resource and producing offspring that are group members.
Blue
cells are older members of a same-channel group, which still retain all the capabilities of younger cells.
Red
cells are oldest members of a same-channel group.
As coloring progress from light to dark red, cells lose their ability to create same-channel offspring and then to collect resource.
Black
grid tiles are dead cells.
The Expiration Viewer depicts end-of-the-road channel generation state in greater detail.
White
cells are young and retain all reproductive and resource-collection capabilities.
Blue cells are older and have lost same-channel reproductive capability.
Red
cells are oldest and have additionally lost resource-collection capability.
Black
grid tiles are dead cells.
The Reproductive Pause Viewer depicts reproductive cooperation.
White
cells have registered zero reproductive forbearance.
Green
cells have temporarily registred to pause reproduction in one direction.
Blue
cells have temporariliy registered to pause reproduction in two directions.
Purple
cells have temporariliy registered to pause reproduction in three directions.
Red
cells have temporarily registered to pause reproduction in all four directions.
Black
grid tiles are dead cells.
Hey!
You can adjust any of these parameters right in your web browser using URL query parameters.
For example, appending
?SEED=2&MUTATION_RATE=0.1
in your web browser's URL bar and refreshing will change the random number generator seed and mutation rate.
Parameters below are locked in at compile time, so you can't adjust them here...
:(
Comments, questions, concerns?
I started a twitter thread so we can chat!
Find the C++ and HTML source on GitHub.
MIT licensed, contributions welcome!
Data from and tutorials for the native version of the software is hosted on the
Open Science Framework.
The
Empirical C++ Library
for efficient, reliable, and accessible scientific software is the secret sauce behind the web visualization and digital evolution framework.
Emscripten
compiled it to javascript so it can run in your web browser.
Bootstrap
makes it look pretty and play nice with mobile devices.
Charles Ofria, Emily Dolson, Alex Lalejini, Jake Fenton, Matthew Andres Moreno, Steven Jorgensen, … Anya Vostinar. (2019, February 22). Empirical (Version v0.0.3). Zenodo. http://doi.org/10.5281/zenodo.2575607
Smith, John Maynard, and Eors Szathmary. The major transitions in evolution. Oxford University Press, 1997.
Lalejini, Alexander, and Charles Ofria. "Evolving event-driven programs with SignalGP." Proceedings of the Genetic and Evolutionary Computation Conference. ACM, 2018.
Moreno, Matthew Andres, and Charles Ofria. "Toward open-ended fraternal transitions in individuality." Artificial life 25.2 (2019): 117-133.
This research was supported in part by NSF grants DEB-1655715 and DBI-0939454.
This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-1424871.