Generosity

Generosity and giving is simulated. Agents have an output which, when above 0.5, allows them to give nearby agents some of their health, the rate of transfer determined by the amount >0.5 they are outputting, and the range also similarly effected.

The classifications are as follows:

  • Selfish: the agent is perfectly non-generous (=0). They will not share any health ever.

  • Autocentric: the agent is non-generous (0,0.5], unless they are touching another agent with less health, in which case health is shared at a rate proportional to their normalized give value ( (0,0.5] -> (0,1] ).

  • Generous: as mentioned above, they are able to give health freely up to a range, and at a variable rate based directly on the output between (0.5,1]. Generous agents also always share health at the max possible rate when touching.

Agents will not share to full agents (health=2), or with more health than them (this is a contentious feature and has a Config flag than can be used to return to pre-v0.07 behavior. On one hand, we shouldn't force agents NOT to give all their health away - imagine a law that says you can't give any company your money for products because you don't have more than them... it doesn't make sense. But on the other hand, way too many of them end up donating every last drop of health. So, use the config to decide how you want the world to work!).