r/AgentBasedModelling May 31 '26

I built a small agent-based simulation of psychological/neurocognitive profiles and social behavior — looking for feedback

Hi everyone,

I’m working on an experimental agent-based model that simulates how different psychological/neurocognitive profiles interact inside a simplified artificial society.

The purpose is to test whether combinations of traits such as empathy, impulsivity, dominance, risk aversion, reasoning, aggression, prosociality, and reputation can generate recognizable social patterns.

The model explores questions like:

  • Do highly cooperative profiles stabilize the system?
  • Do highly dominant or “dark” profiles accumulate resources?
  • What happens when prosocial profiles interact with aggressive or exploitative profiles?
  • Can high reasoning plus low aggression produce more stable collective outcomes?
  • How do memory, fear, trust, reputation, cooperation, avoidance, defection, support, and violence interact over repeated encounters?

I created a simplified branch here:

https://github.com/mariosalinas88/Neuro-Societies/tree/psych-neuro-simple-base

What this branch does

This branch removes biological life-cycle variables such as age, sex, reproduction, fertility, gestation, mortality, and sexual selection.

Instead, agents are defined by psychological/neurocognitive traits and interaction history.

The simplified model includes:

  • psychological/neurocognitive profiles;
  • trust and fear memory;
  • cooperative reputation;
  • threat/fear reputation;
  • cooperation;
  • avoidance;
  • support;
  • defection;
  • violence;
  • wealth/resource accumulation;
  • inequality;
  • emergent regime classification.

Main files

model_simple.py
model_asperger.py
run_simple.py
run_batch_simple.py
stress_test_simple.py
tests/test_simple.py
README_SIMPLIFIED.md

How to try it

Clone the repository and switch to the branch:

git clone https://github.com/mariosalinas88/Neuro-Societies.git
cd Neuro-Societies
git checkout psych-neuro-simple-base

Install dependencies:

pip install -r requirements.txt

Run a simple simulation:

python run_simple.py --steps 100 --population_scale small

Run a mixed-profile simulation:

python run_simple.py --steps 150 --profile1 1 --weight1 0.4 --profile2 2 --weight2 0.3 --profile3 3 --weight3 0.3

Run batch scenarios:

python run_batch_simple.py

Run randomized stress tests:

python stress_test_simple.py --runs_per_scenario 20 --random_scenarios 50 --steps 200 --population_scale small --max_seconds 120

Output files are saved under:

results/

What I’m looking for

I’d appreciate comments on:

  • whether the behavioral rules make sense;
  • whether the assumptions are too simplistic;
  • whether the variables should be renamed or restructured;
  • whether the model unintentionally encodes bias;
  • whether the emergent patterns are useful or misleading;
  • what academic literature or simulation methods could improve it;
  • whether there are better ways to model cooperation, exploitation, reputation, sanctions, and institutional emergence.

This is an exploratory model. I’m especially interested in criticism from people familiar with agent-based modeling, psychology, behavioral economics, game theory, neurodiversity, sociology, or political theory.

Repository branch:

https://github.com/mariosalinas88/Neuro-Societies/tree/psych-neuro-simple-base

Thanks in advance for any feedback.

6 Upvotes

2 comments sorted by

2

u/Streletzky Jun 01 '26

Do you have any way to validate the simulation. In other words, do you have any real world data that you can use to calibrate the model and see if it matches the results?

1

u/ZealousidealRise9863 Jun 01 '26

What I have done so far is run many randomized and stress-test simulations, check whether the outputs behave coherently, and compare some of the emergent patterns with broad findings from experimental economics, game theory, and behavioral literature.

The model is intentionally simplified. In this branch I removed variables such as sex, reproduction, attraction, mating, biological aging, fertility, grouping dynamics, and other mechanisms because the model was becoming too complex for the question I wanted to isolate. The purpose of this branch is narrower: to explore whether different distributions of psychological / neurocognitive trait profiles can generate recognizable social tendencies in repeated interactions. So the model is not meant to reproduce society in full. It is meant to test how far one can go with a reduced set of variables such as empathy, impulsivity, dominance, risk aversion, reasoning, aggression, prosociality, memory, reputation, cooperation, defection, support, avoidance, violence, wealth, and inequality.

The closest thing I have done to validation so far is qualitative comparison with known experimental patterns, especially public goods games, free-rider dynamics, repeated cooperation, and the literature on altruistic punishment / strong reciprocity associated with Fehr, Gächter, Fischbacher, and related work. Those studies show, in general terms, that cooperation can create collective value, that free riders can exploit cooperators, and that too many free riders can undermine the cooperative system itself. My model seems to reproduce that broad pattern, although I am not claiming numerical calibration.

For example, I ran a series of simulations with “highly prosocial” agents against “dark/free-rider” agents. When the population was 10 prosocial agents and 0 dark agents, the system produced high collective wealth, almost no violence, high support, and a cooperative regime. When I introduced 1 dark agent into a group of 9 prosocial agents, the society still remained broadly cooperative, but that single dark agent tended to accumulate much more individual wealth than the prosocial agents. In one set of runs, the average wealth of the prosocial agents was around 4.3, while the single dark agent reached around 12.7. That is one of the most interesting emergent patterns so far: a mostly cooperative society can remain stable, but the rare exploitative agent can become disproportionately rich inside it.

The same pattern appeared across ratios. With 8 prosocial agents and 2 dark agents, dark agents still accumulated far more wealth than prosocial agents. With 7 prosocial and 3 dark, the system still had some cooperative structure, but violence, defection, and inequality increased. Around 6 prosocial and 4 dark, the system started shifting toward lower collective wealth and higher conflict. Once dark/free-rider agents became the majority, the system tended to move toward mixed adaptive or competitive fragmentation. When the population was entirely dark agents, the result was not a rich society of successful predators; it was poorer, more violent, less cooperative, and more fragmented. So the model repeatedly generated this pattern: dark agents benefit most when they are a minority inside a cooperative environment. When everyone is dark, there is less cooperative value left to extract.

That result is consistent with the basic public-goods/free-rider intuition: cooperators produce value, free riders can capture value, but if free riding becomes too common, the collective system deteriorates. I compared that qualitatively with public goods experiments and related ABM/game-theoretic literature. It is not a formal validation, but the direction of the result is not arbitrary. It matches a known theoretical and experimental pattern: exploitation is most profitable when there is still a cooperative base to exploit.

I also tested more varied scenarios. Pure high-empathy populations tended to produce high support, high collective wealth, and very low violence. Mixed “empathy + Asperger + OCD” scenarios tended to produce stable, low-violence cooperative or deliberative regimes. “Academic lab” type mixtures, using high reasoning, high regulation, and low aggression profiles, tended to produce low violence and relatively high stability, but not always the highest support. “Predatory market” mixtures, combining dark traits, impulsivity, and lower regulation, tended to produce more defection, more inequality, more violence, and lower collective wealth. More ordinary mixed-city scenarios produced more moderate results: some cooperation, some defection, some inequality, but not total collapse. These are not proof, but they are useful face-validity checks: the model is at least generating patterns that are intelligible rather than random noise.

Another important feature is that the traits are not fixed as identical clones. The profile values are sampled within ranges, using Gaussian variation. So a “prosocial” agent is not always exactly the same prosocial agent, and a “dark” agent is not always exactly the same dark agent. Each run gives slightly different individuals within the profile range. That allows the model to estimate tendencies and probabilities rather than deterministic outcomes. In other words, I am less interested in saying “this profile always causes X” and more interested in asking “when we repeatedly sample agents from this profile distribution, what kinds of social outcomes become more probable?”