Food and water are plentiful. No predators. And still a colony of rats breaks. That was Calhoun's Universe 25*. I want to check why, in my own code.
But I won't build the collapse directly. Write collapse into the code and it is no longer an observation; it is an ending decided in advance. So I start far upstream. The smallest apparatus is a single rat.
One note up front. The rats here are not a reproduction of real ones. They are minimal individuals wearing a rat's skin, a thought experiment for seeing the conditions under which a society breaks or holds. The code, too, is not a running implementation but conceptual pseudocode meant to show an idea. This holds for the whole series, so I won't repeat it again.
I put one rat in a box. It knows neither where the food is nor what the lever does. All it can do is try. It moves, presses a lever, takes the result. The result only nudges what it picks next.
action = choose_action(rat, world)
outcome = apply(world, action)
learn!(rat, outcome)
I never give it the answer. I just run this short loop, the base of everything I build later. After a while, the rat learned: when hungry, go to the lever, press it, eat. Its daily balance moved from nearly starving to positive.
Now I change one condition. I make hunger an internal state and pull the lever apart from the food. The apparatus gets one step more complex. I run it again, and watch.
For a while it worked. On day 800, the score suddenly dropped to zero.
I suspected exploration noise. No. Stop the learning, only evaluate, and it still failed at the same spot. What had broken was the way it chose actions.
I move my view from the learner to the input. The rat reads only the direction of the smell, not its strength. So food right next to it and food far away become the same input whenever the direction matches.
Here is what happens. One input points at many places at once. When the best action for that input flips even once, every place sharing that input breaks at the same time. That is why the drop was sudden, and total.
I fix one thing in the apparatus: I add smell strength to the input. Real rats, too, smell more strongly the closer they get. I changed nothing in the learner. The collapse was gone.
Fix the input before you fix the model. Are things that should be distinct ending up as the same value? I check this every time I add a new sense.
The next apparatus holds one more rat. A colony is built on top of this one.
Notes
- Universe 25: A closed-environment mouse experiment by John B. Calhoun. Even though food and water were available, reproduction and social behavior broke down under crowding, and the colony failed to continue.