Interaction networks for ecological communities created by selection schemes
In our paper, "Ecological theory provides insights into evolutionary computation",
we show that different techniques for selecting individuals to reproduce create
radically different ecological communities. These differences can be characterized
using interaction networks: weighted, directed graphs in which nodes represent individuals
in the population and edges represent their effects on each other. Red edges indicate
harmful interactions and blue edges indicate beneficial interactions. For example, a red edge from node A to node B indicates that individual
A harms individual B (i.e. B has a lower chance of reproducing when A is present than if A were absent). Line weight and
color saturation indicate interaction intensity (you can also mouse-over edges to see
their precise weights).
This page contains a simple simulation to facilitate easy exploration of interaction
networks in evolutionary computation. Individuals are lists of numbers (the length of these
lists is determined by the "number of traits" slider). Our goal in this toy example is to
evolve these lists to have the highest possible sum. In tournament selection and fitness sharing,
base fitness is determined by summing the list. The distance function for fitness sharing is
Euclidean distance between the vectors. In Eco-EA and Lexicase selection, each element
in the list represents a sub-problem .
If you have questions or want to know more, feel free to contact me!
Where can I learn more about this?
The paper associated with this site is probably a good starting point. It is currently available in
preprint form and is currently under review at a journal.
If you want to know more than that, contact me! I love
talking about this stuff.
What settings did you use in the paper?
The settings used in the paper are the defaults on this page. I chose them somewhat arbitrarily and am
currently working on characterizing them more systematically.
Why doesn't the paper discuss what happens when you iterate time forward?
A few reasons. Most importantly, there are page limits and we were already trying to cram in a lot.
Additionally, I'm still getting a feel for what patterns exist in the behavior of these communities
when you iterate them forward. Those buttons are mostly here so I could re-assure myself (and others)
that selection doesn't do anything crazy that would have implications for how I should interpret the
behavior of randomly generated communities.
There's something wrong with this website/I have a feature request
Great! Thanks for letting me know! You can send bugs and feature requests by
making an issue on GitHub (or contacting me some other way, if that's easier for you).
I want to help with this research!
Fantastic! Send me an e-mail and we can talk
about collaboration. This is a huge topic and I'm just one person, so I welcome help.
Empirical: Using the Empirical library I was able to easily create two versions of the code for this project:
a fast one for research, and this interactive one for playing with ideas and sharing with others. I wrote the whole thing in C++ and compiled the research version
Bootstrap: an open source web framework, which I used to make this website.
Open Iconic: open source icons which I used for the buttons on this site.
And of course my trusty laptop running Linux Mint.
Who else helped make this happen?
I'm very grateful to my collaborators, Charles Ofria
and Wolfgang Banzhaf, and to
the MSU Digital Evolution Lab for
their input on this project and their work on the Empirical library, without which this
site would not exist.
Who are you?
I'm a PhD student at Michigan State University studying evolution, ecology, and computer science. To learn more about my research, see my website.