nkremerh / sugarscape

Development repository for the Digital Terraria Lab implementation of the Sugarscape agent-based societal simulation.
https://github.com/digital-terraria-lab/sugarscape
MIT License
7 stars 11 forks source link

Model naming and implementations don't match up? #40

Closed colinhanrahan closed 6 months ago

colinhanrahan commented 6 months ago

I'm not sure if the naming and the ethical weighting systems match up. In ethics.py, altruistic* models multiply their own ethical weights by 0, placing no ethical value on themselves. This seems to line up more with "selflessness" than altruism, which should place equal importance on the wellbeing of every agent — including the current agent. Likewise, standard bentham* models multiply all agents' scores, including the current agent, by a factor of 0.5. This places equal weight on the current agent and other agents, which doesn't seem correct for a "selfishness factor" of 0.5. That sounds like what altruistic* should be.

There are two ways to fix this:

1. Remove selflessness.

2. Include selflessness (technically the behavior we have right now).

@nkremerh please let me know what you think.

nkremerh commented 6 months ago

Short answer: Everything is working as intended.

Long answer: An altruist agent cares only about the consequences for everyone else. Altruist agents should completely disregard their own wellbeing in deference to their neighborhood's wellbeing. This matches with a selfishnessFactor of 0.

A utilitarian (in the Bentham sense) agent places equal weight to the consequences for all agents. They consider their own consequences, but they don't value them any more than the consequences of another. This matches with a selfishnessFactor of 0.5 (and also a selfishnessFactor of -1 as a backwards compatibility value).

A purely egoist agent has a selfishnessFactor of 1 and concerns themselves only with their own consequences.

A selfishnessFactor between 0 and 0.5 is a progressively less altruistic but still neighborhood-focused agent. A selfishnessFactor between 0.5 and 1 is a progressively more egoistic but still neighborhood-considerate agent.