We are going to develop a complex land-use and behaviour ABM in Netlogo as part of a larger project. The ABM team consists of three groups in three different countries. Therefore we decided to design a modular ABM so that each team can work on a different module simultaneously, with modules connected to each other via pre-defined interfaces. Apart from facilitating remote collaboration in code development, we think modular design also offers many other advantages, such as code reuse, incapsulation, and model upscaling.
Does anyone have previous experiences in developing a modular ABM collaboritvely in Netlogo? What are your experiences like, and what are the lessons learned? Any suggestions will be highly appreciated.
From my experience, if you want to create a modular ABM model using Netlogo you need to employ another tool as well, that will manage I/O, this could be a control code, in python, Matlab etc. or a database that could manage I/O. Now, if you need the link between the different modules to be dynamic (i.e., at every tick) I do not know if this is possible, with Netlogo, due to the Java engine. It is however, not recommended to I/O dynamically (there was a recent post at [netlogo-users] group).
I have created a modular ABM, using Mesa, which allowed to use all the OOP abilities of python, version control which is important in collaborative projects, visualization (i.e. dash) etc allowing the dynamic link between the modules.
I hope this helped a bit! Feel free to contact me!