The Swarm project was started in 1994 by Chris Langton, then at Santa Fe Institute (SFI)in New Mexico. It is currently based at the non-for-profit organization, Swarm Development Group also based in Santa Fe, New Mexico. The aim was to develop both a vocabulary and a set of standard computer tools for the development of multi-agent simulation models (so-called ABMs, short for Agent-Based Models). Armed with this framework, researchers are able to focus on the substance of the modeling task, avoiding some of the complicated details of computer coding.
The Swarm project has benefitted from the contributions of many programmers, including Roger Burkhart, Nelson Minar, Manor Askenazi, Glen Ropella, Sven Thommesen, Marcus Daniels, Alex Lancaster, Vladimir Jojic, and Irene Lee.
Swarm is a collection of software libraries which provide support for simulation programming. Among the most prominent features are the following.
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 turns out to be very well suited to discussions of agent-based models.
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, schedulestheir 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.
Swarm Provides Many Handy Tools. As we shall see in later sections, 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.
Users build simulations by incorporating Swarm objects in their own programs. Users are encouraged to study a number of tutorial examples in order to make full use of the Swarm libraries and the strategy of modeling that inspires them.