30 October 2012

Post date: Oct 30, 2012 5:55:09 PM

Discussion of the range of available tools and modelling packages that can be used to do social systems.

While waiting for everyone to arrive, we opened the session with a report from Stuart and Eric about their experience of some recent operations research training: how to use Scenario Generator. This is a front end to Simul8, often used by health care planners. It doesn't allow you to follow individuals, but focuses instead on modelling events, e.g., acute illnesses, hospital visits. It is marketed as being simple enough to allow non--programmers to build models. Stuart and Eric were not entirely convinced.

Discussion of other packages:

    • Repast: free, Java-based. Multiple options for coding: visual, Groovy scripting language, or full-on use of Java. Advantage seems to be the built-in features, e.g., a GUI, various structures for representing agents. Good mailing list, some example programs already out there. Eric mentioned a few weird quirks and unaddressed bugs that may lead him to move away from it. The learning curve is more like a "learning cliff"; documentation could be better. Some frustrations with weird results that turned out to be due to known bugs that were only discovered because Eric scanned the mailing list. Angela W. moved away from it because its GIS integration simply didn't work. Interesting debate about whether a new modeller would be better off adopting Repast versus learning enough Java to do the same things independently.
    • AnyLogic: very much not free: licences cost up to £12,000. Allows the combination of different modelling styles, e.g., agent-based, system dynamics, discrete-event modelling. It's aimed at the non-developer, and the primary way of doing things is always visual. Like Repast, it's built on Java, and extra coding can be done by bringing up Java editors. Potentially very powerful but some problems with speed of execution. If you don't know Java already you might like AnyLogic very much, but if you already know Java you may find it frustrating as it forces you to do things a certain way.
    • Mason: free Java agent-based framework that focuses on performance and transparency of the underlying Java. Tutorials are excellent. If you wanted to learn Java by starting out with an agent-based modelling package, this would be the one to choose.
    • NetLogo: simple, accessible, Logo-based modelling system. Active community, lots of example programs, easy way to get started on agent-based modelling. Only drawback seems to be that it presumably put some limits on what you can do. One quirk is that it is inherently spatial: even if you want to model something non-spatial you have to put it in spatial terms. You might struggle to implement fancier agent architectures due to the presumption that agents are very simple rule-based systems. Impressive degree of model-sharing amongst the community: most of the other systems discussed here would not make model sharing so easy, and especially not using general-purpose programming languages. See, e.g., "The Modelling Commons for NetLogo", http://modelingcommons.org/browse/list_models.
    • Simul8: commercial discrete-event simulation package. Costs lots of money, does queueing models (which may make it unsuitable for agent-based modellers). University has a site licence.
    • Stella, Vensim: specialist tools for system dynamics modelling. Essentially this is translating differential equations into box and arrow diagrams. May not be relevant to anyone in the group as they're not suited for agent-based modelling.

Building things yourself using a general-purpose programming language such as C, C++, Java, or Python is of course the alternative to all of the above.