Page 133 -
P. 133

130                                                    J.M. Galán et al.

            simplification; i.e. the executable model and the programmer’s specifications are
            by definition the same (see Fig. 7.3). (We consider two models to be the same
            if and only if they produce the same outputs when given the same inputs.) The
            programmer’s job consists “only” in writing the executable model in a programming
                   5
            language. If the programmer does not make any mistakes, then the implemented
            model (e.g. the code) and the executable model will be the same.
              Any mismatch between someone’s specifications and the actual model he passes
            to the next stage is considered here an error (see Fig. 7.3). As an example, if the
            code implemented by the programmer is not the same model as his specifications,
            then there has been an implementation error. Similarly, if the computer scientist’s
            specifications are not complete (i.e. they do not define a unique model that produces
            a precise set of outputs for each given set of inputs), we say that he has made an
            error since the model he is producing is necessarily fully specified (by definition of
            the role). This opens up the question of how the executable model is defined: the
            executable model is the same model as the code if the programmer does not make
            any mistakes. So, to be clear, the distinction between the role of computer scientist
            and programmer is made here to distinguish (a) errors in the implementation of a
            fully specified model (which are made by the programmer) from (b) errors derived
            from an incomplete understanding of how a computer program works (which are
            made by the computer scientist). An example of the latter would be one where
            the computer scientist’s specifications stipulate the use of real arithmetic, but the
            executable model uses floating-point arithmetic.
              It is worth noting that in an ideal world, the specifications created by each role
            would be written down. Unfortunately the world is far from ideal, and it is often the
            case that the mentioned specifications stay in the realm of mental models and never
            reach materialisation.
              The reason for which the last two roles in the process are called “the computer
            scientist” and the “programmer” is because, as mentioned before, most agent-
            based models are implemented as computer programs and then explored through
            simulation (for tractability reasons). However, one could also think of, e.g. a
            mathematician conducting these two roles, especially if the formal model provided
            by the modeller can be solved analytically. For the sake of clarity, and without great
            loss of generality, we assume here that the model is implemented as a computer
            program, and its behaviour is explored through computer simulation.
              Once the computer model is implemented, it is run, and the generated results are
            analysed. The analysis of the results of the computer model leads to conclusions on
            the behaviour of the computer scientist’s model, and, to the extent that the computer
            scientist’s model is a valid approximation of the modeller’s formal model, these
            conclusions also apply to the modeller’s formal model. Again, to the extent that


            5
            There are some interesting attempts with INGENIAS (Pavón and Gómez-Sanz 2003)touse
            modelling and visual languages as programming languages rather than merely as design languages
            (Sansores and Pavón 2005;Sansoresetal. 2006). These efforts are aimed at automatically
            generating several implementations of one single executable model (in various different simulation
            platforms).
   128   129   130   131   132   133   134   135   136   137   138