Developer Docs
Cloning the repository
Since we include documentation with many animated gifs and videos in the repository, a standard clone can be larger than expected. If you wish to do any development work, it is better to use
git clone https://github.com/JuliaDynamics/Agents.jl.git --single-branch
Creating a new space type
Creating a new space type within Agents.jl is quite simple and requires the extension of only 5 methods to support the entire Agents.jl API. The exact specifications on how to create a new space type are contained within the file: [src/core/space_interaction_API.jl]
.
In principle, the following should be done:
- Think about what the agent position type should be.
- Think about how the space type will keep track of the agent positions, so that it is possible to implement the function
nearby_ids
. - Implement the
struct
that represents your new space, while making it a subtype ofAbstractSpace
. - Extend
random_position(model)
. - Think about how the positions of agents will be updated as agents are moved, added or killed.
- Extend
move_agent!(agent, pos, model), add_agent_to_space!(agent, model), remove_agent_from_space!(agent, model)
. - Extend
nearby_ids(position, model, r)
.
And that's it!