Page 40 -
P. 40

3 Types of Simulation                                           33

            3.5 Implementation


            We will now discuss some issues regarding the implementation (programming and
            running) of a simulator.
              A simulator can be time-driven, where the simulated time is advanced in constant
            time steps, or event-driven, where the time is advanced based on the next event. In an
            event-driven simulation, a simulation engine drives the simulation by continuously
            taking the first event out of a time-ordered event list and then simulating the effects
            on the system state caused by this event. Since time segments where no event takes
            place are not regarded, event-driven simulation is often more efficient than time-
            driven simulation. On the other hand, since time is incremented at a constant pace
            during a simulation in time-driven mode, this is typically a better option if the
            simulation involves user participation.
              There are a number of platforms or toolkits for agent-based simulation available,
            such as Swarm, NetLogo, and RePast (see Railsback et al. (2006) for a critical
            review of these and some other platforms). These are freely available, simplify
            the programming, and can be of great help, in particular for modellers that are not
            skilled programmers. However, they all impose some limitations on what can be
            modelled, which may or may not be crucial for the application at hand. An approach
            without such limitation is of course to programme the simulator from scratch using
            ordinary programming languages like Java or C, which is more difficult and time-
            consuming. In some cases, e.g. if you want to distribute the simulation on a number
            of computers, it may be appropriate to use an agent platform, such as JADE. In this
            case, the individuals may be implemented as actual software agents. In particular,
            when the number of individuals simulated is large and/or the models of individuals
            are complex, it may be too time-consuming to run the simulation on a single
            computer. Instead, one may distribute the computational load on several computers
            in order to get reasonable running times. It should be mentioned that there are some
            efforts on making agent-based simulation platforms run on large-scale computer
            networks such as Grids (see, e.g. the work by Chen et al. (2008)).
              It is worth noting that the resulting software is an approximation of a simulation
            model, which in turn is an approximation of the actual system. Thus, there
            are several steps of verification and validation that need to be addressed in the
            development of a simulation model, as discussed in Chap. 9 (David et al. 2017).



            3.6 Conclusion


            As we have seen, there are many different types of individual-based social simula-
            tion. In the table below, we provide a summary.
   35   36   37   38   39   40   41   42   43   44   45