Swarm

Category Cross-Omics>Agent-Based Modeling/Simulation/Tools

Abstract Swarm is a library of object-oriented classes that implements the Swarm ‘conceptual framework’ for agent-based models and provides many tools for implementing, observing, and conducting experiments on Agent-Based Modeling systems (ABMs).

Users write their own software but (a) follow Swarm's conceptual framework and conventions to design the software, and (b) use the Swarm libraries to do much of the work.

The library is written in Objective-C, an object-oriented extension of the C programming language.

Basic Facts About Swarm -- Swarm is a collection of software libraries which provide support for ‘simulation programming’. Among the most prominent features are the following:

1) Swarm Code is Object-Oriented. The swarm libraries are written in a computer language called "Objective-C", a superset of the C language. Objective-C adds the ability to create software "classes" from which individual instances can be created.

These instances are self-contained entities, and the terminology of object-oriented programming (OOP) turns out to be very well suited to discussions of agent-based models.

2) Swarm Programs are Hierarchical. Most swarm applications have a structure that roughly goes like this. First, a top level-- often called the "observer swarm"-- is created. That layer creates screen displays and it also creates the level below it, which is called the "model swarm".

The model swarm in turn creates the individual agents, schedules their activities, collects information about them and relays that information when the observer swarm needs it. This terminology is Not required by Swarm, but its use does facilitate it.

3) Swarm Provides Many Handy Tools. The Swarm libraries provide a number of convenient pieces of code that will facilitate the design of an agent-based model. These tools facilitate the management of memory; the maintenance of lists; scheduling of actions; and many other chores.

4) Users build simulations by incorporating Swarm objects in their own programs. Users are encouraged to study a number of tutorial examples provided by Swarm in order to make full use of the Swarm libraries and the strategy of modeling that inspires them.

Swarm is a Dynamic Platform -- Swarm is free software. The current Swarm distribution is effectively released under the GNU General Public License.

The free software model of software development is particularly effective for a tool like Swarm, for both theoretical and practical reasons:

1) Complete Observability. With full source available, if necessary, the modeler can always track the execution of the simulation right down to the operating system level.

This is very important for reproducibility, and ultimately allows you to go about proving (in an abstract mathematical sense) a simulation's `correctness'.

2) Developer Mind-Share. More practically, Swarm is open source so that the manufacturer can harness developer mind-share: more technically minded users can identify bugs, write patches, and implement new features generally contribute to the evolution of Swarm.

Prerequisites for Success with Swarm –

Swarm was originally conceived as a set of standardized methods for the design of multi-agent simulation models. One needs Not to be a highly accomplished computer program to user the Swarm libraries.

In fact, as the installation process for Swarm becomes increasingly streamlined, it is quite easy for anyone with suitable hardware to test some of the sample applications.

For people who have Windows or Linux operating systems, compiled versions of the Swarm libraries are available and installation is quite painless.

However, it is Not easy to create new Swarm applications. Doing so requires the creation of a computer program. While one need Not be an expert programmer, one must have a rudimentary understanding of vital computing concepts.

The required knowledge will vary with the sort of model that one is intending to create, of course, but, at the bare minimum, users must have:

1) A basic understanding of computer programming; and

2) Either of the two (2) object-oriented programming languages, Java or Objective C.

People who have Not done computer programming will thus need to do some background preparation before they try to make a serious effort at building a Swarm model.

Swarm is designed to help researchers build models in which low-level actors interact (often called "complex systems"). The researcher has to give content to "agents," possibly by thinking of them as honey bees, investors, trees, or (the ubiquitous) "bugs."

One research goal is to discern overall patterns that emerge from these detailed behaviors at the individual level.

Object oriented programming is ideally suited to represent models of this sort. The objects are self-contained. Objects may be designed to convey information (answer questions) from other objects and also they can retain, categorize, and summarize information.

Note: A careful study of either of the object-oriented programming languages (Java or Objective-C) is required before any significant progress can be made in building a Swarm model.

Swarm User Guide -- The Swarm User Guide is somewhat out of date but still a good place for beginners to learn what Swarm is and get started using it. Among the topics covered are:

1) An introduction to object-oriented programming (OOP);

2) The conceptual foundation of Swarm (essential for using Swarm successfully!);

3) Swarm's graphical interfaces;

4) Using tutorials and examples to learn how to program with Swarm;

5) Using the collections, random number, and serialization tools;

6) Debugging.

System Requirements

Contact manufacturer.

Manufacturer

Manufacturer Web Site Swarm

Price Contact manufacturer.

G6G Abstract Number 20436

G6G Manufacturer Number 104064