Page 79 -
P. 79
74 E. Norling et al.
been achieved. It would be impractical to record the details of every variable for
every run of the simulation, but presenting results in summary form alone may
hide essential details. At the very least, it is essential to record the initial parameter
settings (including random seeds, if random numbers are used) so that the summary
results may be regenerated. It may also be informative to record at least a small
number of detailed traces that are illustrative of the simulation process (once one
has determined which parameter configurations produce “interesting” results).
Documentation is the last stage to be mentioned here but is something that should
be developed throughout the exploration and consolidation of a model. Firstly, as
mentioned above, the code should be reasonably self-documenting (through sensible
naming and clear formatting) to facilitate the modeller’s own understanding.
Secondly, the consolidated model should be more formally documented. This should
include any assumptions (with brief justifications), descriptions of the main data
structures and algorithms and, if third-party algorithms or code have been used,
a note to their source. This may seem like unnecessary effort, particularly if the
modeller has no intention of publicly releasing the code, but if questions arise some
months or years down the track, such documentation can be invaluable, even for
the original author’s understanding. Chapter 15 in this volume (Grimm et al. 2017)
looks at documentation and how one might approach this.
Finally, the modeller must present the model and its results to a wider audience.
This is essential to the process of producing a model, since one can only have
some confidence that it has been implemented correctly when it has been replicated,
examined and/or compared to other simulations by the community of modellers. The
distribution of the model should include a description of the model with sufficient
detail that a reader could re-implement it if desired. It should present the typical
dynamics of the system, with example output and summaries of detailed output. The
relevant parameters should be highlighted, contrasting those deemed essential to the
results with those with little or no impact. The benchmark measurements should be
summarised and presented. To maximise a simulation’s use in the community, the
simulation should be appropriately licensed to allow others to analyse, replicate and
experiment with it (Polhill and Edmonds 2007).
5.7 Tools to Aid Model Development
As indicated previously, there is now a variety of systems for aiding the development
of complex simulations. These range from programming language-based tracing
and debugging tools to frameworks designed explicitly for social simulation, which
include libraries of widely used patterns. Learning to use a particular system or
framework is a substantial investment, and because of this, most people do not
swap from system to system readily once they have mastered one (even when an
alternate system may provide a far more elegant solution to a problem). Ideally, a
modeller would evaluate a range of systems when embarking on a new project and
decide upon the most appropriate one for that project. In practice, most modellers