Week 7: Data collection
May 1, 2026
Continuing off of last week’s introduction of the EvolutionManager and SimulationManager, this week I ran and analyzed some results.
Changes:
A fundamental reason why I didn’t post any simulation results last week was because I didn’t receive data stable enough to mimic real life. Meaning, when I ran the simulations, most wolf spiders died within the simulations and sometimes the gene pool would be entirely reshuffled. Given real world environments are much more nuanced and balanced, scenes like an entire area of wolf spiders all dying in one generation likely wouldn’t happen, hence why I considered the data inaccurate.
To address these issues, I tried keeping the simulation at a level such that at least 3 wolf spiders were able to survive on average. However, that also led to a lot of generations where every spiders survived, meaning the genomes were stagnant.
Recall last week the evolution included an “Elitism” mechanic, such that the fittest spider would have its genes cloned in addition to reproducing. To introduce variance, I made it so the least-fittest spider would always be kicked out of the gene pool.
So in summary, the fittest spider would slowly take over the gene pool, while the least-fittest spider would be kicked out and replaced with a randomly generated genome. In doing so, I could visualize a much larger variety of “archetypes” that evolve from an environment. I thought doing so also mimicked the introduction of invasive/foreign species of ant-predators that may or may not outperform the current population.
I also added a new attribute to the genomes: age. The age of a genome represents how long it’s been passed down from the moment it randomly generated (including mutations). A genome that has survived for 10 generation has an age of 10. A newly generated genome has age 0. This would be difficult to track in nature, but is instead a simple task with simulations.
Now, onto the runs.
Run 1 (wolf spider heaven):
The first run I made lots of ants. As in, the screen was practically swarming with ants. This made it very easy for the wolf spiders to find food and survive into the next generation. This comes with its unique set of spiders.
I graphed the results over time, with each light blue dot representing specific genomes at every generation and the blue line representing the median values.

Notice how other than how dots are clumped around the median line, there are dots floating around in the entire graph. Those tend to be from the randomly generated ants each generation, which (mostly) die out that same generation.
Some notes about the current attributes so far: within an environment where food is plentiful, sense seems to be completely deprioritized. High-awareness spiders seemed to be just wasting energy, when food was all around them anyways. I was initially confused on why speed was so high, considering spiders could just wait for ants to run into them. But it seems like too low speed would cause spiders to sometimes lock on and chase a single ants they’re never able to catch, leading to starvation.
I also specifically saved the graph for “age” of each genome at the end:

This graph is special, because it represents when a certain defined “archetype” of wolf spiders that is doing well in its current niche is suddenly overtaken by one of the randomly generated wolf spiders. Looking at the median line, there’s a small crash at first around generation 3 where a relatively well-adapted wolf spider type takes over, then a large crash at around generation 15 when an almost fully optimized wolf spider species takes over, surviving until the end of the simulation at generation 150. I find this really interesting, because the fact that the original genome completely died out also mimics what happens when an invasive species is introduced to an area.
I’ve also made a graph of combined attributes, this time showing median only from each of the three attributes:

As shown, the crash in “age” at generation 15 also perfectly matches when a big shift in the way the wolf spiders behaved; compared to the spider with relatively even statistics at the start, it seems like choosing to prioritize sense and completely dropping mass worked much better.
Some final comments about the process of evolution overall: I have no control over how the attributes would evolved, and was thus surprised that mass was so low; I had thought having a high mass (and thus high energy) would help create a new breed of spiders that just sat in place and waited for ants to come into them, but it seems the mass trade off was not worth it, and chasing ants to some degree was still more beneficial. It’s very nice being able to see this process walk in completely unpredictable ways.
Run 2 (wolf spider hell):
For the second run, I severely toned down the number of ants in the simulation. This means that the biggest competition spiders had was actually with each other, a race to see who could catch the ants first. I ran this simulation an entire night, and below are the results.



Comparing the numbers between the here and the first run, even the lowest speed and sense here was comparible to the highest speed and sense in the first run. Mass, on the other hand, seemed to again play a much smaller role than I expected.
You’ll notice that the big crashes where genomes completely died out are mostly replacements in sense. It seems that speed is invaluable in this run, but sometimes spiders have had varying successes on different senses. I think the reason why sometimes an entire generation gets taken over mostly comes down to luck; a group of high-sense spiders can lose all ants due to a lucky low-sense spider that happens to run into the ants, while a low-sense spider can similarly die from being spawned too far from any ants at the start. In real life, these cases of an entire genome being wiped based off of luck is probably rare, but it can happen here given we only have 5 wolf spiders in the environment.
Up next:
I got caught up with running the simulation and graphing the data, but next week I promise to finally add in more attributes involving the ants fighting back. It’ll be an interesting visualization and hopefully we can see more aspects and nuances of the model.
I also hope to eventually add back in the antlions and alarm pheromones, but that’s maybe 2 weeks down.
See you all next week!

Leave a Reply
You must be logged in to post a comment.