# Experimenting with Agent-Based Model Simulation Tools
## 4 ABM Tools Comparison
### Available Features  
Every ABM tool should offer some fundamental features to assist the user in creating their model [16]. Table 2 lists these properties, which are based on the desiderata discussed in Section 2.3 and includes facilities to write, run, analyze, and optimize ABMs. Tables 3 and 4 compare the tools according to whether they support each desirable feature. \begin{table}
\begin{tabular}{p{142.3 pt} p{142.3 pt}} \hline \hline
**Feature** & **Description** \\ \hline
**Programming Language** & Programming language adopted for model development. \\
**GUI** & Availability of a Graphical User Interface (GUI) to control the simulation execution. \\
**Visual programming** & Use of a Visual Programming Language (VSL) to support the model development phase. \\
**Simulation environment** & Fields and topologies available to create the simulation environment, including GIS data. \\
**Visualization** & Possibility to graphically visualize the model. \\
**Snapshot and checkpoint** & Presence of functionalities to pause and save the simulation state and resume it later. \\
**Modularity and reusability 1 ** & Adoption of a modular design supporting the reuse of portions of simulation code that can be combined to realize other simulations. \\
**Inspector** & Facilities for retrieving the model’s information during its execution. \\
**Analysis tools 2 ** & Presence of tools for statistical and non-statistical analysis, creation of charts and plots. \\
**Random number generator 3 ** & Support for the custom generation of random numbers. \\
**Batch runner 4 ** & Facilities to automatically perform multiple runs of the same simulation to assess whether stochastic processes influence the model’s output. \\
**Continuous Integration (CI)/ Continuous Development (CD)** & Facilities to let developers automate code continuous integration and delivery while keeping track of the simulation versions. \\
**Model exploration and optimization 5 ** & Facilities for exploring the model’s behavior when its input parameters vary and optimizing its outcomes. This feature also includes automated testing. \\
**HPC** & Exploitation of parallel and distributed computing as well as integration with cloud platforms for in-model execution or optimization. \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Description of the desirable features for ABM platforms. We do not explicitly report the feature \"Modularity and reusability\" as a column since all frameworks support this property to some extent, primarily thanks to their model development language. In particular, most of the tools exploit an object-oriented programming (OOP) approach, natively benefiting from the concepts of inheritance and polymorphism. Further, OO programming languages, such as Java and Scala, represent the building blocks for domain-specific languages (like NetLogo and GAML), which directly inherit their OO characteristics. In this context, it is worth mentioning how GAMA is the first (and unique) tool introducing the concept of modularity by design thanks to the co-modeling mechanism [22], which enables users to incorporate previously defined agents or models inside new models to create more complicated simulations. \begin{table}
\begin{tabular}{l l l l l l l l} \hline \hline \(\downarrow\) **Tool/Feature \(\rightarrow\)** & **Inspector** & **Analysis** & **Random Number** & **Batch** & **CI/CD** & **MEO** & **HPC** & **MEO** \\  & & **Tools** & **Generator** & **Runner** & & **In-Model** & **MEO** \\ \hline \hline
**ActressMAS** & ✓ & ✓ & ✓ & & & & & **Parallel,** & & \\  & & & & & & & & **distributed** & \\ \hline
**AgentPy** & & ✓ & ✓ & ✓ & & & **Wish extension [102]** & ✓ & & & **Parallel** \\ \hline
**Agents.jl** & ✓ & ✓ & ✓ & ✓ & & & **Wish extension [103]** & ✓ & & & **Distributed via the Distributed** \\  & & & & & & & **Wish extension [103]** & ✓ & & & **module** [104] \\ \hline
**Care HPS** & & & ✓ & & & & & & **Parallel,** & \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Comparison of ABM tools based on their features.