DOI: 10.5281/zenodo.6944184
title: Cumulative culture in artificial navigators

description: This project is on how cumulative culture can spontaneously emerge in agents who are bound by just four simple rules:



Goal direction: Having a sense of (roughly) where the goal is.

Social proximity: Aiming to stay close to other agents by moving in the direction they are expected to be next.

Route memory: Agents remember landmarks along the route, and aim to follow along these landmarks. Their memory precision improves over several journeys.

Continuity: To avoid erratic/jerky movements, agents aim to move mostly in the direction that they are currently travelling in.


Despite the lack of explicit social transmission or evaluation of outcomes, pairs of agents with generational turnover show gradual improvements in route efficiency (they converge on the direct line between start and goal). For more information, please read the manuscript on arXiv (linked below).

Current version

Due to uploading restrictions on Zenodo, included here are the reduced format data files. This is easier, as they can be readily used with the scripts from the linked GitHub repository.

Files

Each of the files below contains data for 50 repeats of the following parameter ranges:



p_goal_range: [0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35]

p_social_range: [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35]

p_memory_range: [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5]

sd_goal_range: [1.0]

sd_memory_max_range: [0.9]

simulation_types: ["experimental", "solo", "pair"]

n_repetitions: 50

n_agents: 2

n_generations: 5

n_flights_per_generation: 12

max_path_length: 200


Note that the maximum path length for the reduced format is limited to 200 steps, whereas the simulation's maxmimum path length is a lot longer. This thus cuts a (very limited) number of true paths short. This only impacts the (x,y) coordinates in the x.dat and y.dat files, but not the efficiency data (which was computed using the full path).

efficiency.dat

This file contains the efficiency computed from full paths from each condition, repeat, and set of parameters. The file can be loaded as a NumPy memory map. Its data type is `numpy.float64`, and its shape is determined by: p_goal_range, p_social_range, p_memory_range, sd_goal_range,  sd_memory_max_range,  simulation_types, n_repetitions, n_agents, n_generations, and n_flights_per_generation. For the current set, that is (9, 7, 10, 1, 1, 3, 50, 2, 5, 12).

Values coded as "nan" exist, but they are rare. This occurs if the goal is never reached, and in generations after a generation in which the goal was never reached. (Because these never fly in the first place, as their predecessors never made it to the goal.)

x.dat

This file contains the horizontal (x) coordinates of agents' paths. The file can be loaded as a NumPy memory map. Its data type is `numpy.float64`, and its shape is determined by: p_goal_range, p_social_range, p_memory_range, sd_goal_range,  sd_memory_max_range,  simulation_types, n_repetitions, n_agents, n_generations, n_flights_per_generation, and max_path_length. For the current set, that is (9, 7, 10, 1, 1, 3, 50, 2, 5, 12, 200).

Values are coded as "nan" if there is not supposed to be a number for them. For example, there will be "nan" values for the second agent in the solo condition because it did not exist. There will also be NaN values after the path has reached the goal, because the path does not continue beyond this.

y.dat

This file contains the vertical (y) coordinates of agents' paths. The file can be loaded as a NumPy memory map. Its data type is `numpy.float64`, and its shape is determined by: p_goal_range, p_social_range, p_memory_range, sd_goal_range,  sd_memory_max_range,  simulation_types, n_repetitions, n_agents, n_generations, n_flights_per_generation, and max_path_length. For the current set, that is (9, 7, 10, 1, 1, 3, 50, 2, 5, 12, 200).

Values are coded as "nan" if there is not supposed to be a number for them. For example, there will be "nan" values for the second agent in the solo condition because it did not exist. There will also be NaN values after the path has reached the goal, because the path does not continue beyond this.

Past versions

Version 1

There are two data archives in this set: data_simulation_narrow.zip (41 GB; 2680 folders containing a total of 80399 subfolders for a total of 5225935 CSV files) and data_simulation_wide.zip (7 GB; 557 folders containing a total of 16710 subfolders for a total of 1086150 CSV files).

Each archive contains subfolders, each of which represent a unique combination of simulation parameters. These are named with the following naming scheme: "Pgoal-{w}_SDgoal-{sd}_Pcontinuity-{p}_SDcontinuity-{sd}_Psocial-{p}_SDsocial-{sd}_Pmemory-{p}_SDmemoryMax-{sd}_SDmemoryMin-{sd}_SDmemorySteps-5", where {p} is 1000 times the weight parameter, {sd} is 1000 times the equivalent standard deviation for the kappa parameter, and both are rounded to the nearest integer. Example: "Pgoal-100_SDgoal-1000_Pcontinuity-100_SDcontinuity-350_Psocial-100_SDsocial-800_Pmemory-700_SDmemoryMax-2000_SDmemoryMin-400_SDmemorySteps-5"

Within each simulation folder, a number of subfolders can be found. This should normally be 30. Each of these represents a single run of a simulation within a condition. The naming convention is "{condition}_run-{run_counter}", where {condition} is the name of the condition ("experimental", "pair", or "solo"), and {run_counter} is a counter that starts at 1 and goes up from there (should be 1-10 in the current set).

Within each simulation run subfolder, there are CSV files. These hold the actual data from journeys by artificial navigators. There are two types of data file, one for efficiency, and one for the travelled path. Both types of CSV have a header row with the names of the columns, followed by data rows.

Efficiency files are named "efficiency_gen-{gen_nr}.csv", with {gen_nr} indicating the generation number. This starts at 0, ends at 4 (inclusive), and increments by 1. Efficiency files have three columns: "flight" for the flight counter (int, starts at 1), "efficiency_agent1" for the efficiency for the first agent's efficiency (float, between 0 and 1), and "efficiency_agent2" (float, between 0 and 1).

Flight path files are named "xy_gen-{gen_nr}_flight-{flight_nr}.csv", with {gen_nr} being the same as above, and {flight_nr} being the journey number. This starts at 0, ends at 11 (inclusive), and increments by 1. Path files have four columns: "x_agent1" for the first agent's horizontal coordinate (float), "y_agent1" for the first agent's vertical coordinate (float), "x_agent2" for the second agent's horizontal coordinate (float), and "y_agent2" for the second agent's vertical coordinate (float).

From generation 2 in the experimental condition, the first is the experienced agent, and the second is the naive agent. Float values coded as "nan" reflect there is no data. This occurs for e.g. the second agent in the solo condition and the first-generation experimental condition.