The GIS-CA toolkit is a software library that was developed at Utah State University's Remote Sensing and GIS Laboratory. It was developed as a general-purpose tool for conducting simulation-based experiments on landscape models built from GIS data layers. It was conceived originally as a method for representing GIS layers in a way that is accessible for agent-based simulations (where the agents roam around in the model landscape), but it was discovered early on in software development that representing the landscape itself as a set of agents allowed for simulation of dynamic landscape processes using CA, cellular stochastic, or spatial Monte Carlo rules.
The GIS-CA toolkit was developed from the Swarm libraries, which were developed under the direction of Chris Langton at the Santa Fe Institute (Minar et al., 1998). The Swarm libraries are a reusable set of software tools designed for agent-based simulations. Their primary utility is for management of many of the more difficult programming issues that arise when one tries to implement an agent-based simulation. The most important issue addressed by the Swarm libraries is enforcement of an accepted concurrency model for the agents' actions: in essence, how to simulate truly independent behavior of a multitude of individual entities (agents) who are acting in parallel when the simulation environment is processed through the single sequential processor of a computer. The principles of concurrency have been addressed in in the computer science literature (Agha, 1987), and the issues of implementing them are far from trivial. By using a standardized and public library such as Swarm, the researchers and those evaluating the research can concentrate on higher level details of agent behavior rather than the minutiae of how sequences of agents' behaviors are handled. Swarm also handles many of the details of list management, memory allocation, and scheduling that must be addressed when constructing an agent-based simulation, plus a very useful set of methods for probing (examining) the internal details of objects while the simulation is running.
The Swarm environment provides a generalized infrastructure of lists, schedules, and probes (collectively called a swarm) within which a model can be built. Within this model, a generalized SwarmObject is made available, which is a software object that is capable of responding to messages to create and destroy itself and do the things that are required for being a member of a swarm. A modeler takes a SwarmObject as a base object, and through inheritance adds on all the functionality and attributes (methods and variables) that are required to turn the object into an agent for his/her simulation. The examples used for discussion in this section are all derived from fundamental SwarmObects, and rely on Swarm's environment for management of the objects.
Both the GIS-CA toolkit and the underlying Swarm libraries are licensed under the GNU general protection license; they may be used and distributed free of charge as long as all of the source code is made freely available.
The remainder of this paper will describe how a dynamic landscape object can be created from Swarm's building blocks, how free-roaming agents can be placed into the fray, and the implications that this has for the modeling environment.