"MASON is a high performance open-source modeling toolkit in pure Java,
designed to be fast, highly hackable and modifiable, and to guarantee
repeatable results, among many other capabilities. MASON comes with
extensive visualization capabilities and regularly runs on everything
from laptops to back-end supercomputers".
"Distributed MASON is an
open-source, massively distributed version of MASON meant for
server/farm and cloud computing deployment using a combination of MPI
and RMI. It runs MASON over a large number of collective machines. "
"GeoMASON
is an open source set of extensions to MASON which add GIS
capabilities, including reading and writing standard formats, embodying
agents in GIS environments, and visualization."
"Distributed
GeoMASON is an open source set of extensions to GeoMASON to enable it to
run over Distributed MASON in both server/farm and cloud computing
environments."
For those interested in GIS and agent-based models, we have added many more application examples (a sample of which is shown below), along with fixing a number of bugs, and adding new code for compatibility with Distributed MASON. For more details check out the MASON webpage: http://cs.gmu.edu/~eclab/projects/mason/.
In the paper we detail how we have designed Mesa-Geo to handle spatial data (both in terms of raster and vector via GeoSpace), how we have enabled visualization of geographical data and such models along with creating features to export geographical data from the simulations (using Rasterio and GeoPandas). To support this discussion we also provide some explicit examples on how the pieces fit together range from rainfall flowing over a digital terrain model (DEM)
to Schelling types of models using points and polygons as agents, to
that of agents using road networks to navigate over an area. Boyu has also put together more details about the examples at: https://mesa-geo.readthedocs.io/en/latest/examples/overview.html (which includes movies of them running). The actual code for the models and Mesa-Geo can be found at https://github.com/projectmesa/mesa-geo. Just to give you a sense of the paper and what Mesa-Geo can do, below we provide the abstract to the paper, some figures showing the architecture, along with some example applications. While at the bottom of the post you can see the full reference and a link to the paper itself.
Abstract: Mesa is an open-source agent-based modeling (ABM) framework implemented in the Python programming language, allowing users to build and visualize agent-based models. It has been used in a diverse range of application areas over the years ranging from biology to workforce dynamics. However, there has been no direct support for integrating geographical data from geographical information systems (GIS) into models created with Mesa. Users have had to rely on their own implementations to meet such needs. In this paper we present Mesa-Geo, a GIS extension for Mesa, which allows users to import, manipulate, visualize and export geographical data for ABM. We introduce the main components and functionalities of Mesa-Geo, followed by example applications utilizing geographical data which demonstrates Mesa-Geo's core functionalities and features common to agent-based models. Finally, we conclude with a discussion and outlook on future directions for Mesa-Geo.
Class diagram of the Agent, GeoAgent, and Cell classes
Component diagram of GeoSpace and its related classes
Example applications using Mesa and Mesa-Geo: (a) Rainfall model, (b) Population model, (c) GeoSchelling (polygons) model, (d) GeoSchelling (points \& polygons) model, and (e) Agents and networks model.
If you have any thoughts or comments about Mesa-Geo please let us know.
Full reference:
Wang, B., Hess, V. and Crooks A.T. (2022), Mesa-Geo: A GIS Extension for the Mesa Agent-Based Modeling Framework in Python, Proceedings of the 5th ACM SIGSPATIAL International Workshop on Geospatial Simulation (GeoSim 2022), Seattle, WA. pp 1-10. (PDF)