Friday, November 11, 2022

Announcing MASON 21, Geomason 1.7 & Distributed MASON 1

Many visitors and readers to this site know that for a long time I have been involved with and developing agent-based models utilizing MASON. To this end, the other day Sean Luke posted a message to the MASON list-serve regarding new releases of MASON, GeoMASON  and the first release of Distributed MASON which is part of our NSF CI-EN: Enhancement of a Large-scale Multiagent Simulation Tool project

To quote from the email:

"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:

Examples of some of the GeoMason Models

If you have questions regarding MASON, GeoMason, or their distributed versions, join the MASON mailing list and ask


Tuesday, November 01, 2022

Mesa-Geo: ABM and GIS in Python (A Update)

A couple of months ago we had a post about Mesa-Geo but only a short one. Now we want to go into more detail as we (Boyu Wang, Vincent Hess and myself) just presented a paper about it at the 5th ACM SIGSPATIAL International Workshop on Geospatial Simulation (GeoSim 2022). The paper itself was entitled "Mesa-Geo: A GIS Extension for the Mesa Agent-Based Modeling Framework in Python" in which we discuss in detail the need for a python library for creating geographically explicit agents (or GeoAgents) and introduce its architecture. 

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: (which includes movies of them running).  The actual code for the models and Mesa-Geo can be found at 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. (2023), 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)