An agent-based model of bonobo social structure at the Kokolopori Bonobo Reserve in the Democratic Republic of Congo. Four neighbouring social groups — Ekalakala, Kokoalongo, Fekako, and Bekako — share overlapping home ranges in the equatorial forest.
Each agent moves within its group’s range under three forces:
Agents within close proximity form a party. Five kinds of social currency are tracked between party members and rendered as coloured lines on the map:
Toggle the currencies on and off independently to see how the cluster boundary shapes — or doesn’t shape — each kind of relationship. Currency edges decay over time on a reciprocity-memory timescale; SRI accumulates without decay.
When a party contains members from more than one group, every member runs a join policy that decides whether to participate in this mixed encounter. The default always policy accepts every offer (the baseline); the included threshold policy admits only individuals whose cooperative disposition exceeds a fixed level. Custom policies (reinforcement-learning, Bayesian belief updating, threshold heuristics) can plug into the same interface and condition on context. Each decision is logged and visible per-agent in the dossier.
Click a glyph on the map to open a floating dossier: the individual’s name, sex, group, cooperative disposition, top recent partners across every currency, and their last few join/avoid decisions. The dossier updates live as the simulation advances.
Switch the right pane from Map to Sociogram to see every checked network as a force-directed graph in a shared layout, with nodes coloured by group. Edges keep their currency colour so the union of currencies is comparable in one frame.
The sidebar chart tracks how many mixed-group parties exist at each moment versus the total number of multi-member parties. This is the central observable: the rate and dynamics of cross-group encounters as they emerge from the underlying movement and decision rules.
Play, pause, single-step, or change the speed. The scrubber lets you jump anywhere in the simulated timeline; because the model is deterministic, scrubbing backward re-derives the history exactly. Each model tick is 30 simulated minutes.