You are here

An article comparing five agent-based simulation platforms

Here is an article entitled "Agent-based Simulation Platforms: Review and Development Recommendations," written by Steven F. Railsback, Steven L. Lytinen, and Stephen K. Jackson. This article compares five agent-based simulation platforms: NetLogo, MASON, Repast, Objective-C Swarm, and Java Swarm. The five platforms were reviewed by implementing example models in each. Some important findings from this study include:

  • "Swarm was designed as a general language and toolbox for ABMs, intended for
    widespread use across scientific domains. Swarm's developers started by laying out
    a general conceptual approach to agent-based simulation software. Key to Swarm is
    the concept that the software must both implement a model and, separately, provide
    a virtual laboratory for observing and conducting experiments on the model. Another
    key concept is designing a model as a hierarchy of "swarms", a swarm being a group
    of objects and a schedule of actions that the objects execute. One swarm can contain
    lower-level swarms whose schedules are integrated into the higher-level swarm's; simple
    models have a lower-level "model swarm" within an "observer swarm" that attaches
    observer tools to the model. The software design philosophy appears to have been to
    include software that implements Swarm's modeling concepts along with general tools
    likely to be useful for many models, but not to include tools specific to any particular
    domain. Swarm was designed before Java's emergence as a mature language. One
    reason for implementing Swarm in Objective-C was that this language's lack of strong
    typing (in contrast to, e.g., C++) supports the complex-systems philosophy of lack of
    centralized control; e.g., a model's schedule can tell a list of objects to execute some
    action without knowing what types of object are on the list. Swarm uses its own data
    structures and memory management to represent model objects; one consequence is
    that Swarm fully implements the concept of "probes": tools that allow users to monitor
    and control any simulation object, no matter how protected it is, from the graphical
    interface or within the code."
  • "Java Swarm was designed to provide, with as little change as possible, access to Swarm's Objective-C library from Java. Java Swarm was motivated by a strong demand among Swarm users for the ability to write models in Java, not by the objective of providing Swarm's capabilities as cleanly and efficiently as possible in Java. Java Swarm therefore simply allows Java to pass messages to the Objective-C library, with work-arounds to accommodate Java's strong typing."
  • "Repast development appears to have been driven by several objectives. The initial
    objective was to implement Swarm, or equivalent functionality, in Java. However,
    Repast did not adopt all of Swarm's design philosophy and does not implement swarms.
    Repast was also clearly intended to support one domain – social science – in particular
    and includes tools specific to that domain. The additional objective of making it
    easier for inexperienced users to build models has been approached in several ways by
    the Repast project. These approaches include a built-in simple model, and interfaces
    through which menus and Python code can be used to begin model construction."
  • "MASON was designed as a smaller and faster alternative to Repast, with a clear
    focus on computationally demanding models with many agents executed over many
    iterations. Design appears to have been driven largely by the objectives of maximizing
    execution speed and assuring complete reproducibility across hardware. The abilities
    to detach and re-attach graphical interfaces and to stop a simulation and move it among
    computers are considered a priority for long simulations. MASON's developers appear
    intent on including only general, not domain-specific, tools. MASON is the least mature
    of these platforms, with basic capabilities such as graphing and random number
    distributions still being added."
  • "NetLogo clearly reflects its heritage as an educational tool, as its primary design
    objective is clearly ease of use. Its programming language includes many high-level
    structures and primitives that greatly reduce programming effort, and extensive documentation
    is provided. The language contains many but not all the control and structuring
    capabilities of a standard programming language. Further, NetLogo was clearly
    designed with a specific type of model in mind: mobile agents acting concurrently on
    a grid space with behavior dominated by local interactions over short times. While
    models of this type are easiest to implement in NetLogo, the platform is by no means
    limited to them. NetLogo is by far the most professional platform in its appearance and
    documentation."
  • The Objective-C version of Swarm "is the most mature library platform and is stable and well-organized. Objective-C seems more natural than Java for ABMs but weak error-handling and the lack of developer tools are drawbacks."
  • "A rough comparison of execution speed found MASON and Repast usually fastest, Swarm fastest for simple models but slowest for complex ones, and NetLogo intermediate."
  • "MASON, Repast, and Swarm provide explicit methods for scheduling actions both in fixed time and dynamically. Because it was designed primarily for one kind of model, NetLogo provides fewer tools for explicit control of scheduling."
  • MASON, Repast, and Swarm use the same, somewhat complex, three step process to display agents in space. "NetLogo, in contrast, automatically draws agents on a built-in animation window; users can customize shapes and colors."
  • "Netlogo, with its heritage as an educational tool, stands out for its ease of use and excellent documentation. It is easy to recommend NetLogo for models that are (1) compatible with its paradigm of short-term, local interaction of agents and a grid environment and (2) not extremely complex."
  • "MASON could be a good choice for experienced programmers working on models that are computationally intensive, e.g., having many agents or long run times.

This article was found at the Agent-Based Modeling Resources Page of swarm.org