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
   127   128   129   130   131   132   133   134   135   136   137