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


1 year 40 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 47 weeks ago
1 year 48 weeks ago
1 year 48 weeks ago