Vahana.jl is a new open-source high-performance software framework for development of large-scale agent-based models (ABM) of complex social systems.
Vahana models are expressed as synchronous graphic dynamical systems (SyGDS). This allows Vahana to run a simulation in parallel and to distribute the simulation across multiple nodes of a cluster. New extensions to the traditional SyGDS approach allow the implementation of complex ABMs.
This talk will introduce Vahana.jl, a new open-source software framework tailored to the development of large-scale agent-based models (ABMs), with a focus on complex social networks.
The foundation of Vahana.jl lies in an approach to ABM known as a synchronous graph dynamical system (SyGDS). This method advances the principles of cellular automata by transitioning from cells to vertices of a graph representing agents, and using directed edges to establish neighborhood interactions.
Vahana.jl elevates the concept of SyGDS by introducing several by adding a multi-layer approach that enabling a more nuanced and detailed representation of complex systems by treating different interactions as distinct layers in the graph.
In addition to the theoretical discussion of SyGDS, the talk will of course also provide practical insights by implementing an (incomplete) toy model. Furthermore, we also demonstrate how spatial information can be embedded in the graph structure and how Vahana integrates with the Julia Ecosystem, such as DataFrames and Graphs.
The development of Vahana.jl has been driven by a strong focus on performance. The presentation discusses how this emphasis influenced the design and implementation choices, highlighting the effective use of Julia's meta-programming features to enhance the execution speed of simulations. This performance aspect is substantiated with results from two distinct models, including a simulation of Covid-19 spread across Germany, demonstrating Vahana's applicability to real-world scenarios and its capacity for large-scale simulations.
Links: Repository: https://github.com/s-fuerst/Vahana.jl Documentation: https://s-fuerst.github.io/Vahana.jl/dev/ Episim example: https://git.zib.de/sfuerst/vahana-episim/