## 3 Materials and Methods
### Model Implementation Software  
After designing an ABM, agent-based programming languages or simulation toolkits have to be used to simulate it. These simulation toolkits are a type of simulation software specially made for translating the textual model of an ABM into a computational model. A simulation is an understandable manifestation of a model, coded and visualized by a computer program, which provides insights regarding the system under study. A simulation model basically refers to the computing algorithms or mathematical expression that involve the performance and total behavior of a system in the real-world scenarios [83]. In the early 1990s, general-purpose programming languages (GPPLs) were basically used for simulation. SMALLTALK, C++, and Java were the most common GPPLs in the ABM community of practice. Using GPPLs for agent-based simulation has some visible disadvantages. For example, modelers have to implement basic functions and plotting from scratch, and they should be very familiar with the programming language [84]. Such problems have resulted in the development of agent-based simulation toolkits that help modelers a lot to simulate the complex system under study. As presented in Table 6, the majority of toolkits support the primary GPPLs, including Java, C++, C, and Logo variant [85]. It should be noted that sometimes, an ABM can be directly developed in the programming phase through participatory simulation platforms. This type of simulation is useful for simulating systems that there is not enough data about; therefore, designing an initial conceptual model for them is almost impossible. According to this approach, an agent-based model is directly developed through direct participation of stakeholders of the problems in distributed platforms such as the client-server network. This simulation is very useful in research and education [86; 87].  
\begin{table}
\begin{tabular}{l c c c} \hline \hline \multirow{2}{*}{**Toolkit**} & \multicolumn{4}{c}{**Programming Languages**} \\ \cline{2-4}  & **Java** & **C++** & **C** & **Logo** \\ \hline ADK & * & & \\ AgentBuilder & * & * & * \\ AnyLogic & * & & \\ Ascape & * & & \\ DeX & & * & \\ Echo & & * & \\ iGen & * & * & * \\ LSD & & * & \\ Madkit & * & * & * \\ MAML & & * & \\ Mason & * & & \\ Netlogo & & * & \\ RepastS & * & & \\ Starlogo & & & * \\ StarlogoT & & & * \\ Swarm & * & & \\ \hline \hline \end{tabular} Note.* stands for support.  
\end{table}
Table 6: Toolkit and their programming languages.  
As it can be seen in the above table, some of the platforms are supported by multiple languages such as AgentBuilder, iGen, and Madkits that are supported by Java, C++, and C. During this paper, Nelogo 6.0.1 has been used to simulate the model (see the user interface in Appendix A). As one of the most frequently used agent-based modeling and simulation toolkit, Netlogo was developed by [PERSON] in 1999. Since its development, it has been regularly updated in the sequence of versions and a number of extensions. Readers can refer to Netlogo home page ccl.northwestern.edu/netlogo/ in order to get more information about this agent-based modeling toolkit.