The following files are found in the methods/
folder
sbatch.sh
initates a job array on slurmrun.jl
initates julia simulations after loading methods frommethods.jl
and the job array specific parameters frommain.jl
summariseFiles.R
opens all*.Rdata
files from the output directory, summarises values, returns a summary file into the working directory, zips the output folder, deletes the output folder and finally deletes allslurm*.out
files
Running the simulation code requires:
julia
(dependencies:Distributions
,StatsBase
,RCall
)r
(dependencies: igraph, dplyr, reshape2)
In our article, Cultural Selection Shapes Network Structure (https://www.biorxiv.org/content/early/2018/11/08/464883), we report results for the following iterations of the model:
- Social learning dynamics for fixed simple graphs
- Social learning dynamics for dynamic complex networks with fixed linking parameters
- Social learning dynamics for dynamic complex networks with evolving linking parameters
- Social learning dynamics for complex networks with evolving but coupled linking parameters
- Social learning dynamics for dynamic complex networks with switching selection regimes
Furthermore, in the ESM we report results for simulations with
- Low mutation rate
- Connection costs
- Varying population size and trait number
- Varying innovation and social learning success rate
To run the individual simulations follow the steps outlined below to adjust the simulation.
To use a simple graph such as a ring (as in the main text), find # Setup for evolution
in the main.jl
file and make sure evolveNetwork
is set to true
. This will which will create a ring graph of size nod
with neighbourhood neibhood
, and keep the network shape fixed. Note: this is currently only implemented for neutral selection, as parents for a newborn have to be adjacent to the newborn and are not selected based on their fitness.
Can be combined with: 8, and 9
To let linking parameters evolve, find # Setup for evolution
in the main.jl
file and make sure evolvePN
and evolvePR
are set to false
. This will keep the linking parameters fixed throughout a simulation, while the network is still dynamically rewired.
Can be combined with: 5, 7, 8, and 9
To let linking parameters evolve, find # Setup for evolution
in the main.jl
file and make sure evolvePN
and evolvePR
are set to true
. This will let the parameters evolve (and mutate) throughout a simulation.
Can be combined with: 6, 7, 8, and 9
Change grid
parameter in line 18 (pnprcoupled
) from false
(not coupled), to true
(couples pr
to pn
given an average degree k
and population size N
). In the main text we used average degrees 2, 6, 10, for a population of 100 individuals.
Can be combined with: 6, 7 (note, in this case mutation only affects PN), 8, and 9
To enable switching payoff regimes find ## 3EXPLOIT
in methodsJL
and uncomment the section starting with # Switching payoff method twice throughout the simulation
. This will change the payoff regime twice throughout a simulation run (after 1/3 and 2/3 of the rounds).
Can be combined with: 6, 7, 8, and 9
Change grid
parameter in line 19 (mutation rate, mutRate
). We used 1
for the main text and 0.01
for the appropriate simulations in the ESM.
Change grid
parameter in line 17 (connection cost, cc
). We used 0
for the no cost and 0.01
for the cost condition.
Change grid
parameter in line 1 (population size) and line 4 (number of seed traits). In the main text we used 100
for each parameter.
Change grid
parameters in line 2 (social learning success rate, socialLearningSuc
) and line 14 (individual learning success rate, indSuccessRate
). In the main text we used 0.75
and 0.01
respectively.