Experiences with system dynamics on NetLogo

Hi everyone,
Grateful to be apart of this community. I am looking to talk to modellers who have worked on system dynamics with NetLogo. I am building an integrated SD + ABM model on NetLogo.
Beyond the NetLogo website, where can one find SD related documents specifically for NetLogo? Also, does anyone have ideas on how to approach use of parameters that are common between SD sub model and the ABM sub -model.

Typically, venism and SD have in-built dimension consistency compilers, what about Netlogo?

And with regards to behaviour space, the parameters that variables within the SD part, can their sensitivity analysis be studied as well?

Looking forward to hearing your thoughts.

Kind Regards,

Kritika

I tried the NetLogo System Dynamics module a couple of years ago. But I did not pursue it further as the module offers only very basic SD capabilities compared to the many features available in dedicated SD software like Vensim or Stella. Dimensional consistency check is one such feature that is absent in NetLogo SD.

I may be wrong here but I think the ABM module and SD module in NetLogo are independent of each other. That is, you cannot call the SD module from the ABM and vice versa.

If you would like to use both ABM and SD model at the same time and in parallel, I would suggest using Python System Dynamics library PySD. (PySD — PySD 3.14.2 documentation). I have tried PySD only with a few models but the main reasons I am suggesting PySD are as follows:

  1. PySD can run SD models developed with standard SD software like Vensim or through the XMILE format.
  2. NetLogo has a Python extension with which you can run Python codes from within the ABM.
  3. Since PySD can be called from the ABM, it means that the variables in ABM could be linked with parameters in the SD model thereby enabling BehaviorSpace runs to cover both the ABM and the SD model.

PySD has certain limitations too when compared to Vensim and other softwares and these are outlined in the documentation.

I hope this helps.

1 Like

You can integrate SD and ABM models in NetLogo. See the “Wolf Sheep Predation (Docked Hybrid)” model in the models library for an example of an ABM and SD running at the same time. That isn’t actually an integrated model—they are just running side-by-side for comparison—but it is still a useful example. You can reference variables between the two models, and I just checked that you can report variables from the SD model in BehaviorSpace.

That said, it is true NetLogo SD only offers pretty basic features. If you need more advanced SD features then using the python extension sounds like a good idea to me. You also could use a separate SD software for dimension consistency checks, but then replicate it in NetLogo and run everything together there.

Out of curiousity, what kind of model are you developing? We (the NetLogo team) haven’t seen much use of the NetLogo System Dynamics capabilities and haven’t put much effort into improving it over the years. If it is getting more use, we may add features to it (feel free to put in feature requests here)

1 Like

Hey there,

Many thanks for taking the time and putting in the effort to help me out. . .

While ABM and SD can be run as independent sub-models ( as demonstrated in an example in Netlogo Library - Wolf sheep population one), they can also be integrated. For integration, the parameters and variables common to both sub-models must be global variables so that they can be accessed ( you may check LimnoSES - social-ecological lake management undergoing regime shifts ).

However, NetLogo is still basic compared to other available SD-dedicated software. As you suggested, I also thought of creating the SD sub-model on Stella and evaluating dimensional consistency! Also, I will explore PySD and see how it helps build an integrated model. I will come back to this thread with my experience. (@Pradeesh )

Replying to @jzkelter
Hey there,
The model I am building is an SD + ABM hybrid model.
The SD and ABM sub-models are integrated through multiple linkage paths in a manner that:
⌁ behaviour from the AB model impacts the SD model from one than one channel
⌁ The SD model behaviour then informs the micro-level behaviours of the AB model.

How do I manage testing dimensional consistency for an SD model?
I need 12 SD models representing infection spread within 12 care homes distributed on a network. In Stella ( iThink), we can use the Array function to model 12 SD models, but I am unsure how to create that in NetLogo. One way could be to put a loop on all SD - ABM interactions. However, I can imagine that the program’s control flow will become complicated and impact computational efficiency.

So, array function ( running multiple SD models) and dimensional consistency checks are two features that can enhance the SD extension.
Until then, take care!
Kind Regards.