# Experimenting with Agent-Based Model Simulation Tools
## 3 ABM Tools Overview
### ABM Tools Description
Designed to be a ready-to-use tool for the ABM community, krABMaga embraces the architectural concepts of the well-adopted MASON simulation library to provide modelers with a familiar programming environment and decrease the learning curve of the framework. However, krABMaga re-engineered some aspects of the MASON architecture to exploit Rust's peculiarities and programming model. This framework comprises all functionalities required for developing and executing a model, including a visualization component and a convenient UI. Additional functionalities relate to running model exploration jobs on parallel, distributed, and cloud architectures. _MaDKit_ (Multi-agent Development Kit) [55] is a lightweight Java library for designing and simulating agent systems. The tool follows an organization-centered rather than an agent-centered approach based on the AGR (Agent/Group/Role) model. MaDKit provides several functionalities via APIs, including agents' lifecycle management and distribution, being mainly designed to be used by users with some programming knowledge. _MASON_[56] is a discrete-event simulation toolkit written in Java for designing, executing, and visualizing ABMs. MASON provides functionalities and API supporting the most common needs of a modeler, including common agents' behavior, environment creation, and scheduling management. One of the main advantages of MASON is its snapshot system enabling the user to stop and save a simulation and resume it in another machine thanks to the compatibility provided by the Java Virtual Machine. Moreover, thanks to the existing extensions, additional features are available, including GIS data with GeoMASON [57], model exploration with ECJ [58], or the possibility of executing a simulation on distributed systems and Cloud Computing with DistributedMASON [59]. Further, MASON is well-suited to computationally intensive models or long-running simulations. _MASS_ (Multi-Agent Spatial Simulation) [60] is a multi-agent and spatial simulation library designed to address the need for parallel ABMs. The architecture is based on the coordinator-worker approach, where the coordinator process spawns workers at different computing nodes to run parallel simulations. MASS automatically manages agent execution and migration as well as the simulation space through several APIs, which facilitate the model development (if the user has some basic knowledge of Java). _Mesa_[61] is a Python-based ABM framework providing built-in core components to easily create, visualize, and analyze simulations. Mesa is one of the most used and actively supported ABM libraries, which exploits Python's popularity to provide ease of use and accessibility. One of the main advantages of Mesa is its extensibility allowing users to develop and share their components through an open-source ecosystem. This approach created a rich community providing extensions for any need, including the possibility to exploit a multi-processor system, support for GIS data, and advanced analysis. _NetLogo_[62] is an agent-based modeling environment implemented in Java and Scala, and it is considered the standard platform for developing ABMs. The importance and popularity of NetLogo rose to prominence thanks to its community, which is continuously providing extensions such as GIS data usage, 3D visualization, and integration with other languages, such as Python with PyNetLogo [63] or Pylogo [64], or R with RNetLogo [65]. Other relevant extensions worth to be mentioned are HubNet [66] for creating participatory simulations and BehaviorSpace [67] for providing parameter-sweeping capabilities using distributed and parallel techniques. NetLogo allows modelers to develop their models through a simple-to-use dedicated modeling language while offering a VPL to create and edit components to realize any simulation. However, its accessibility leads to significant limitations regarding model complexity.