The “does what?” In the first
question refers to the model’s processes. In this ODD element only the self-explanatory
names of the model’s processes should be listed: ‘up-date habitat’, ‘move’,
‘grow’, ‘buy’, ‘update plots’, etc. These names are then the titles of the
sub-models that are described in the last ODD element, ‘Submodels’. Processes
are performed either by one of the model’s entities (for example: ‘move’), or
by a higher-level controller that does things such as updating plots or writing
output to files. To handle such higher-level processes, ABM
software platforms like
Swarm (Minar et
al., 1996) and
NetLogo (Wilensky, 1999) include
the concept of the ‘Model’, or ‘Observer’, itself; that is, a controller object
that performs such processes.
By “in what order?” we refer to
both the order in which the different processes are executed and the order in
which a process is performed by a set of agents. For example, feeding may be a
process executed by all the animal agents in a model, but we must also specify
the order in which the individual animals feed; that is, whether they feed in
random order, or fixed order, or size-sorted order. Differences in such
ordering can have a very large effect on model outputs (Bigbee et al., 2006;
Caron-Lormier et al., 2008).
The question of when variables
are updated includes the question of whether a state variable is immediately assigned
a new value
as soon as
that value is calculated by
a process (asynchronous updating), or whether the new
value is stored until all agents have executed the process, and
then all are
updated at once
(synchronous updating). Most
ABMs represent time simply
by using time
steps: assuming that
time moves forward
in chunks. But
time can be represented in
other ways (Grimm
and Railsback, 2005,
Chapter 5). Defining a model’s schedule
includes stating how time is modeled, if it is not clear from the ‘Entities,
State Variables, and Scales’ element.