The original post does not explain in detail how organisms move from biome to biome. Looking at the code it seems to be like this:
-Each organism has a chance to roam at each step proportional to its speed. An organism with speed 10 will roam 1/1000 of the time. An organism with speed 0 will never roam to another biome. This seems like an extremely important consideration for any species that could survive in multiple biomes: put at least one point into speed.
-If an organism chooses to roam, it goes to a randomly chosen biome, including the one it just came from.
-If it can't survive in that biome, it dies.
Embarrassing story:
I spent a lot of time writing a fast simulator and testing all kinds of approaches. Today I let my daughter (8) design a species without really understanding the game mechanics...and it performed better than every other creature on the first try. Granted, I had to help her correct some obviously suboptimal choices, but still...let's just say my confidence is not high.
I'll precommit to suggesting a secondary scoring mechanism for bragging rights: not simply the highest total number of surviving organisms but the total energy of the organisms (population * base energy).
Good luck everyone!
Here's some embedded prediction elicitation thingies about how the game will go.
(I've already made my submissions; this is not a ploy to gather information.)
I made a few small changes, including bug fixes, due to reader feedback. The changes are listed in the footnotes. Make sure you are using the newest code.
Hey so, this tickled my curiosity and I went exploring for similar projects just to see what's out there. I came across a couple youtube videos I enjoyed enough to feel they were worth passing on. So just in case you are also fascinated by similar sorts of sims...
Here's the elephant in the room I think a lot of our discussion should be centered around:
Consider an organism that has the ability to eat seeds and absolutely nothing else, for a total energy of 1.1. Call it a locust.
Because each species gets a starting energy budget rather than a starting population, Locusts will have a starting population of almost 1000, while an organism with a size of 20 would have a starting population of only 50.
A seed gives five energy, and reproduction is energy over cost, so every locust that eats a seed means about five new locu...
Invitation to any potential collaborators who want to design species that will be able to survive in equilibrium with each other; PM me for details.
There is no initial check to see if a species can survive in its spawning biome. Obviously this doesn't matter for breathing, but species could live in the desert or tundra for free without the corresponding traits.
I have submitted 10 entries. At least two are guaranteed to lose. At least two are elephants, because why not, c'mon. I have high hopes for two. I have extremely high hopes for two more but not because I think they're likely to survive. The last two are unremarkable.
Thanks for putting this together Isusr!
I'm publicly announcing an intent to consume grass. I will be submitting several animals that eat grass. If you do not wish to clash with me over food sources, I recommend choosing a different food source for your herbivores.
I may be mistaken, but I think there is an issue in the code that will make spreading to new biomes very difficult.
It looks like animals are only evaluated in pairs. If there are an odd number of animals, the one at the end will not be evaluated (and so will automatically die).
If you spread to a new biome that already has its own population, this is not a problem.
But if you are the first herbivore to wander into the empty River, I think this means you will automatically die.
I think the only way empty biomes can be populated is if two herbivores happen to wander into the same biome at the same time.
Am I misunderstanding?
The "get in the way of predation" mechanic seems strange. In reality, if I'm a giraffe hunter and there are a lot of giraffes, adding a lot of songbirds (who don't interact with me or with giraffes) shouldn't make my giraffe hunting any less efficient. Maybe replace with some other mechanic?
OTOH I have seen my dog bark at a turtle for a long time and also my dog's weapons definitely do not beat the turtle's armor.
I want to test my organisms before submitting them and noticed there wasn't a way to tell the program to use my species files instead of the one in the repo. Also, the shabang line breaks on systems that aren't yours.
I sent you an MR covering both, but I don't know if you're watching them so I figured I'd mention it here.
Is it normal for it to take a couple seconds per generation to run?
If I am not mistaken, your gitlab page is not functioning right now. No way to search for you as a user either.
PS: Thanks for offering this game. Being at the intersection of economics and D&D, I am almost exploding with excitement to see what happens!
A question about mechanics:
When I run a simulation with only this animal on Tundra:
Biome: Tundra
Venomous: No
Weapon: 0
Armour: 1
Speed: 0
Eats: Seeds
Cold (Allows survival in the Tundra): Yes
It goes down to 2-3 population for a while, and then dies after 25 generations.
However, I calculate the size is 1.85 (0.1 base + 0.75 armour + 1 eats seed size), and it should only need 20% of that in food per turn, which is <0.4. Tundra has 1 seeds per turn, which should give 5 food. Does anyone have an explanation why it doesn't stabilize around a population of 5/0.4≈1...
The problem: your predator-prey system leads by default to extinction.
Lotka-Volterra equations did not. Maybe something else should be changed in the model (like the carrying capacity? reproduction rate coefficient with prey abundance? the random mating simulation?), so that this problem is resolved in a similar way?
I know anecdotally, that models of evolving food webs typically are unstable. It would be great to hear more insights on this from the community :)
Thank you for making this! I've made my submissions, now just time to hang around and see if any of them work...
Will all user-submitted species entered into a single environment at the end? I.e., does the biodiversity depend on the number of submissions?
One thing I am confused about:
Suppose an organism can eat more than one kind of plant food and both are available in its biome on a given round. Say it can eat both leaves and grass and they are both present and have not been eaten by others on that round yet.
Will the organism eat both a unit of leaves AND a unit of grass that round - and thus increase its expected number of offspring for the next round compared to if it had only eaten one thing? Or will it only eat the first one it finds (leaves in this case) and then stop foraging? From the source code, it looks like it is probably eating only the one thing and then stopping, but I am not really familiar with Hy or Lisp syntax so I am not sure.
Point of clarification: Does venom/antivenom merely determine the direction of the predator/prey relationship, and then the ordinary numerical comparison of predator weapons vs. prey (weapons + armor) determines whether predation occurs?
When I attempt to run the script from the command line I get the following errror:
File "c:\programfileswithnospace\lib\site-packages\matplotlib\__init__.py", line 107, in <module>
from . import _api, cbook, docstring, rcsetup
File "c:\programfileswithnospace\lib\site-packages\matplotlib\rcsetup.py", line 24, in <module>
from matplotlib import _api, animation, cbook
File "c:\programfileswithnospace\lib\site-packages\matplotlib\animation.py", line 34, in <module>
from PIL import Image
File ...
Another question: where does the script save the data / graphs when running it? Or does it do that at all?
It looks like it might try to open a plot window, but I'm running it on a headless server... so nothing will happen. Is the (hard-to-parse) text scrolling by all that I'll get at the end of a run?
I'm trying to run the source code to test it, but unfortunately I'm not familiar with hylang (and low familiarity with python).
I've (or at least attempted to) installed hy and matplotlib and tried to run "hy main.hy" (is that the way you are supposed to run it?):
I get an error in line 105 when I run that:
(return 1))
^
hy.errors.HySyntaxError: parse error for pattern macro 'if': got unexpected token: hy.models.Expression([
hy.models.Symbol('return'),
hy.models.Integer(1)]), expected: end of file
Anyone know what I'm doing wrong?
Do you have a more exact version spec? Because I don't even have pip3
and I don't use Python, so I just installed the hy
that comes with my distro... and then I get
File "./main.hy", line 63, column 1
(defn initial-population [biome]
"Creates a list of initial organisms"
(+ [] #*
(lfor species +species-list+
(if (= (. species ["spawning-zone"])
biome)
(do
(setv organisms [])
(setv energy +seed-population-energy+)
(while (> energy 0)
... Someone please correct me if my interpretation of food and reproduction are incorrect as my programing experience is limited.
I see the energy being reduced by 20%, but what is the threshold for death?
The number of offspring is determined by rolling a number between 0 and 1 rolled 10 * creature energy times, and for each random number less than 1 / (body size x 10), a baby is created with the same energy as the original creature and no impact on the original creature?
I think I am missing where predator efficiency is accounted for.
In line 1...
Can you elaborate on the winning condition? I expect most biomes will have surviving species; will that mean multiple winners, or will the ultimate winner be the species with the most total biomass? How long will the simulation be run? I can imagine stable equilibrium conditions with multiple survivors, even after an arbitrarily large number of simulation rounds.
To give housecats a chance we need something else to prey on koalas that also provides food for housecats.
I might be misunderstanding something here in the rules. How do mongooses (mongeese?) provide food for housecats? By my understanding of the rules both have Weapons 1 and neither has Venom, so no predator-prey relationship exists at all? Am I missing something?
It's fall and that means it's time for another Less Wrong Darwin Game. This year, you'll be designing up to ten species that will compete for food including (sometimes) eating each other.
Click here to participate[Entries are now closed.] You have one week from September 23 to design your species. Submit them by September 30th or earlier.Each player starts with a population of organisms. Each round each of your organisms will be randomly paired with another organism. At this point, one of two things will happen:
After everyone has eaten, each organism will attempt to reproduce. The more an organism eats you eat the most descendents an organism can leave.
Food
Each round your organisms lose 20% of their energy to metabolism resulting (on average) in a 20% decrease in population. You must eat food to counteract metabolism. There are two sources of food: plants and other animals.
Predation
There are two phases to combat. In the first phase organisms size each other up to figure out which is the predator and which is prey. There are two ways for an organism to become the predator.
Venom takes priority over weapons. Once a predator-prey relationship is established (if a predator-prey relationship is established) the prey will get a chance to escape. If the prey's speed equals or exceeds the predator's then nobody gets eaten.
Venom, weapons and antivenom all make your organism bigger, which slows down reproduction.
Omnivores priorize meat over plants, when they can get it even if foraging for plants would be more metabolically efficient[1].
Predation has an efficiency of 0.95[2]. That means 95% of the prey's energy can be used by the predator.
Only organisms of different species eat each other. Cannibalism is disabled.
Foraging for Plants
There are various kinds of plant food available. In order to eat each food you'll need the proper digestive system.
Whether your organism can digest a particular plant food is a binary value. No organism is better at digesting leaves than any other organism.
There is a tradeoff. The ability to eat leaves/grass/seeds makes your organism bigger which slows down reproduction. Also, there is a finite supply of leaves/grass/seeds. The more other organisms are foraging from a plant source, the less advantageous it is for you to forage for it youself.
Simple Ecosystems
Consider an ecosystem with three kinds of plant food available: seeds, leaves and grass. 1,000 units of each plant food are produced per round.
Example 1
This all may sound a little confusing but it makes sense once we use some real exampless. Let's start with two species: housecats and mice.
At first, both populations grow. The mice reproduce faster than the cats. Then the cats catch up and eat all of the mice. Having exhausted their food supply, the cat population starves to extinction.
Example 2
What happens if we add songbirds? Songbirds fly. They are fast enough to evade cats. But speed costs energy which makes it more expensive for songbirds to breed than for mice to breed. Mice outcompete songbirds in a world without cats.
We can establish a periodic equilibrium by reintroducing cats. If the mouse population rises too much the cat population rises to eat them, decreasing the mouse population. But there is a limit to how high the cat population can get because the cat population is matched randomly with other organisms and those other organism are often songbirds.
Example 3
What happens if we add a falcon so fast it can catch both mice and songbirds? The falcons and housecats eat all of their prey. Our previous equilibrium has been broken. The ecosystem collapses. Everyone dies.
To restabilize things we need more prey. Let's add koalas. Koalas eat leaves. I made them venomous to protect them from predators.
The venomous koalas eat a food source (leaves) disconnected from the rest of the food chain which relies on seeds. Nothing preys on them because they are venomous and no other animals have antivenom. They koals are effectively disconnected from the rest of the ecosystem. They just get in the way of predation by the falcons and the housecats which helps stabalize the seed-based food web.
Example 4
A world where nothing preys on nor competes with koalas is boring. Let's add owls. Owls really do prey on koalas.
Introducing owls gets us exciting population spikes and crashes but it wipes out the mice and housecats.
The problem is owls have too much of an advantage over housecats. Owls and housecats are almost identical. The only difference is antivenom, which is cheap. Koalas are a major food source because only owls prey on them. To give housecats a chance we need something else to prey on koalas.
The mongeese do keep the owls in check. I'm starting to think housecats might be a lost cause. Whatever the case, we need a stabalizing animal which thrives when mongeese are present and declines when there are too many koalas. (This is just the songbirds we introduced in the beginning except for leaves/koalas/owls instead of seeds/mice/housecats.)
Giraffes eat leaves just like koalas but they are nonvenomous. I gave giraffes armor instead of weapons because if they had weapons they might eat small animals instead of leaves.
Adding giraffes got us mice and housecats back but we lost koalas along with the owls and mongeese that prey on koalas.
Example 5
Our herbivores only eat seeds and leaves. All the grass is going to waste. Lets add some grass eaters to our menagerie.
Out new ecosystem has no more diversity than the previous one. (Only six species survive to equilibrium.) But we have achieved something new. The new ecosystem sustains a food chain three trophic levels deep. Owls eat snakes eat pandas.
Multi-Biome Ecosystems
Let's compare two biomes.
Note that I set the overall plant production lower. This results in smaller populations which are more likely to be made extinct by random fluctuations. In the grassland, everything dies but songbirds. Leaves and grass go uneaten. In the rainforest we get a 3-species equilibrium of owls, pandas and mice.
Example 1
Suppose we give each animal a small chance (proportional to its speed) of wandering to a random biome. Our two biomes are now connected.
This increases biodiversity in ecah particular ecosystem. However, it does not increase overall biodiversity.
Example 2
What if we add an additional biome?
Housecats and falcons are back but we lost owls and snakes.
Surviving the environment
The world is a dangerous place. It's not just starvation and other animals that can kill you. You can only survive in the Ocean/Benthic if you breathe water. You can only survive on land if you breathe air. Both air and water breathers can survive on the Rivers and Coasts.
You do not have to manually set whether your organism breathes air or water. This will be inferred from your spawning location. You cannot start in a river or on a coast.
Temperature
You need heat tolerance to survive in the desert. You need cold tolerance to survive in the tundra.
Heat and cold tolerance are not useful for aquatic organisms.
The actual game settings
The actual game is more complicated than my examples. There are more biomes and more plant foods available. I will not be entering my own animals into the game. Only player animals will be included.
Biomes
Edit: I recognize, after posting this, that "Grassland" produces less grass than the Rainforest. Too late now; players have already submitted organisms.
Questions and Answers
How do I win?
Your species survives.
Can I coordinate with other players?
There is no rule against it.
Can I betray the other players who think I'm coordinating with them?
There is no rule against it.
I'm worried my species will do poorly and I'll be publicly shamed.
Use a pseudonym. I will only link to social media if you do well.
How many species can I enter?
Up to 10. I am relying on the honor system. Please do not abuse it.
If multiple participants enter species with the same name, will you differentiate the names so that they can prey on each other?
Yes.
Can I use multiple entry slots to spawn the same species in multiple biomes?
Sort of. I will differentiate the names. You will have two separate species with identical stats but different starting conditions.
Do I have to be a Less Wrong user to participate?
You do not have to be affiliated with Less Wrong. Anyone is welcome to participate. Invite your friends to play!
I found a bug in your code.
Please post a comment or private message me.
Edit: Multicore discovered some major bugs in the code I used for examples. The real game may be very different.
I like your work and would like to support you.
You are under no obligation whatsoever to send donations. My primary objective is to make a fun, educational game for lots of people.
That said, I do like money. You can Venmo me @Lsusr
What can I win?
Honor and glory. I will link to the winners' social media accounts. (Unless it is something I consider dangerous or object to on moral grounds.)
Example source code
You can try out different strategies with the source code below. It is run with hy. You can install hy with pip
$ pip3 install hy
. You will need matplotlib too. Install it with$ pip3 install matplotlib
.Source code available on GitLab
How do I participate?
Design your species here.[Entries are now closed.] You have one week from September 23 to design your species. Submit them by September 30th or earlier.This seemingly-irrational behavior has precedent among human beings due to sexual competition. Jared Diamond writes about why in his book Why Is Sex Fun?: The Evolution of Human Sexuality. ↩︎
Changed from 0.80. ↩︎
In the real game, weapons, armor and speed will all be limited to 10. ↩︎
Reduced from 5. ↩︎ ↩︎
Changed from 3. ↩︎