Page 132 -
P. 132
7 Checking Simulations: Detecting and Avoiding Errors and Artefacts 129
ment specification of that set is a legitimate particular case of the thematician’s
model and the set as a whole is representative of the thematician’s specifications
(i.e. the set is sufficient to fully characterise the thematician’s model to a satisfactory
extent).
Drogoul et al.’s third role is the computer scientist. Here we distinguish between
computer scientist and programmer. It is often the case that the modeller comes
up with a formal model that cannot be implemented in a computer. This could be,
for example, because the model uses certain concepts that cannot be operated by
present-day computers (e.g. real numbers, as opposed to floating-point numbers)
or because running the model would demand computational requirements that are
not yet available (e.g. in terms of memory and processing capacity). The job of
the computer scientist consists in finding a suitable (formal) approximation to
the modeller’s formal model that can be executed in a computer (or in several
computers) given the available technology. To achieve this, the computer scientist
may have to approximate and simplify certain aspects of the modeller’s formal
model, and it is his job to make sure that these simplifications are not affecting
the results significantly. As an example, Cioffi-Revilla (2002) warns about the
potentially significant effects of altering system size in agent-based simulations.
The Navier-Stokes equations of fluid dynamics are a paradigmatic case in point.
They are a set of non-linear differential equations that describe the motion of
a fluid. Although these equations are considered a very good (formal and fully
specified) model, their complexity is such that analytical closed-form solutions are
available only for the simplest cases. For more complex situations, solutions of the
Navier-Stokes equations must be estimated using approximations and numerical
computation (Heywood et al. 1990; Salvi 2002). Deriving such approximations
would be the task of the computer scientist’s role, as defined here.
One of the main motivations to distinguish between the modeller’s role and the
computer scientist’s role is that, in the domain of agent-based social simulation, it is
the description of the modeller’s formal model that is usually found in academic
papers, even though the computer scientist’s model was used by the authors to
produce the results in the paper. Most often the modeller’s model (i.e. the one
described in the paper) simply cannot be run in a computer; it is the (potentially
faulty) implementation of the computer scientist’s approximation to such a model
that is really run by the computer. As an example, note that computer models
described in scientific papers are most often expressed using equations in real
arithmetic, whereas the models that actually run in computers almost invariably use
floating-point arithmetic.
Finally, the role of the programmer is to implement the computer scientist’s
executable model. In our framework, by definition of the role computer scientist,the
model he produces must be executable and fully specified, i.e. it must include all the
necessary information so given a certain input the model always produces the same
output. Thus, the executable model will have to specify in its definition everything
that could make a difference, e.g. the operating system and the specific pseudo-
random number generator to be used. This is a subtle but important point, since it
implies that the programmer’s job does not involve any process of abstraction or