Predefined Models
Predefined agent based models exist in the Models
submodule in the form of functions that return model, agent_step!, model_step!
when called.
They are accessed like:
using Agents
model, agent_step!, model_step! = Models.flocking(; kwargs...)
The Examples section of the docs outline how to use and interact with each model.
So far, the predefined models that exist in the Models
sub-module are:
Agents.Models.battle
— Methodbattle(; fighters = 50)
Same as in Battle Royale.
Agents.Models.daisyworld
— Methoddaisyworld(;
griddims = (30, 30),
max_age = 25,
init_white = 0.2,
init_black = 0.2,
albedo_white = 0.75,
albedo_black = 0.25,
surface_albedo = 0.4,
solar_change = 0.005,
solar_luminosity = 1.0,
scenario = :default,
seed = 165
)
Same as in Daisyworld.
To access the Daisy
and Land
types, simply call
using Agents.Models: Daisy, Land
Agents.Models.flocking
— Methodflocking(;
n_birds = 100,
speed = 1.0,
cohere_factor = 0.25,
separation = 4.0,
separate_factor = 0.25,
match_factor = 0.01,
visual_distance = 5.0,
extent = (100, 100),
spacing = visual_distance / 1.5
)
Same as in Flock model.
Agents.Models.forest_fire
— Methodforest_fire(;
density = 0.8,
griddims = (100, 100)
)
Same as in Forest fire model.
Agents.Models.game_of_life
— Methodgame_of_life(;
rules::Tuple = (2, 3, 3, 3),
dims = (100, 100),
metric = :chebyshev
)
Same as in Conway's game of life.
Agents.Models.growing_bacteria
— Methodgrowing_bacteria()
Same as in Bacterial Growth.
Agents.Models.hk
— Methodhk(;
numagents = 100,
ϵ = 0.2
)
Same as in HK (Hegselmann and Krause) opinion dynamics model.
Agents.Models.opinion
— Methodopinion(;dims=(10, 10), nopinions=3, levels_per_opinion=4)
Same as in Opinion spread.
Agents.Models.predator_prey
— Methodpredator_prey(;
n_sheep = 100,
n_wolves = 50,
dims = (20, 20),
regrowth_time = 30,
Δenergy_sheep = 4,
Δenergy_wolf = 20,
sheep_reproduce = 0.04,
wolf_reproduce = 0.05,
)
Same as in Model of predator-prey dynamics.
To access the Sheep
, Wolf
and Grass
types, simply call
using Agents.Models: Sheep, Wolf, Grass
Agents.Models.schelling
— Methodschelling(;
numagents = 320,
griddims = (20, 20),
min_to_be_happy = 3
)
Same as in Schelling's segregation model.
Agents.Models.social_distancing
— Methodsocial_distancing(;
infection_period = 30 * steps_per_day,
detection_time = 14 * steps_per_day,
reinfection_probability = 0.05,
isolated = 0.5, # in percentage
interaction_radius = 0.012,
dt = 1.0,
speed = 0.002,
death_rate = 0.044, # from website of WHO
N = 1000,
initial_infected = 5,
seed = 42,
βmin = 0.4,
βmax = 0.8,
)
Same as in Continuous space social distancing for COVID-19.
Agents.Models.sugarscape
— Methodsugarscape(;
dims = (50, 50),
sugar_peaks = ((10, 40), (40, 10)),
growth_rate = 1,
N = 250,
w0_dist = (5, 25),
metabolic_rate_dist = (1, 4),
vision_dist = (1, 6),
max_age_dist = (60, 100),
max_sugar = 4,
)
Same as in Sugarscape.
Agents.Models.wealth_distribution
— Methodwealth_distribution(;
dims = (25, 25),
wealth = 1,
M = 1000
)
Same as in Wealth distribution model.
Agents.Models.wright_fisher
— Methodwright_fisher(;
numagents = 100,
selection = true
)
Same as in Wright-Fisher model of evolution.