A simulation is the execution in time of a model, represented by a computer program, that gives information about a system being investigated. The library sim adopts the method of the Discrete Event Simulation. With this approach, the components of the model consist of events, which are activated at certain points in time and in this way affect the overall state of the system. The points in time that an event is activated are randomized. Events exist autonomously and they are discrete so between the execution of two events nothing happens. The library sim provides an event-based, as well as a process-oriented approach of writing a simulation program. With the process-oriented approach, the components of the program consist of entities, which combine several related events. Events and entities are provided as abstract classes that must be refined by the application programmer to define the actual events and entities participating in the simulation.
Sim is written in the C++ programming language, which is presented in [Stroustrup 91]. The library provides classes, that can be used by writing a C++ simulation program. We provided the library with such a functionality, that the resulting language is similar to simula, which is described in [Pooley 86]. The structures underlying the scheduler, queue and histogram classes and most of the code implementing the probability distributions have originally been adapted from an excellent C simulation library, presented in [Watkins 93].
The library can be compiled to both a pure ASCII version (which is the fastest) as well as a hush version (which has graphical features). Simulation programs can be linked to both versions of the library. The hush library is not described here. See [Eliens 95] for a description.
The sim library has been in use for student programming assignments
at the Vrije Universiteit for over a year. It may be obtained by anonymous
ftp from ftp.cs.vu.nl
,
directory eliens/sim
.
You may also retrieve it via http://www.cs.vu.nl/~eliens/sim/
.
It comes with the sources, manual pages, a variety of examples and
an extensive users-guide.