1 Introduction
The Simulation Collection implements a hybrid discrete and continuous event simulation engine for developing simulation models in Racket (formerly known as PLT Scheme). The Simulation Collection:
Provides a process-based, discrete event simulation engine.
Provides a robust interprocess communications mechanism.
Supports combined discrete and continuous simulation models.
Provides automatic data collection and associated graphics.
Is designed to facilitate construction of component-based simulation models.
Is written in, and provides access to, the Racket programming language.
The source code is distributed with the Simulation Collection and is licensed under the GNU Lesser General Public License, Version 3.0 [LGPL].
The motivation behind the Simulation Collection is to provide the simulation engine for developing knowledge-based simulation models in Racket. It is based on a knowledge-based simulation system originally written in Symbolics Common Lisp [Williams90] [Williams96]. This is not as much a port of the earlier work as it is a complete re-engineering of the system into Racket. In particular, it makes extensive use of continuations to provide a process-based approach to building simulation models. It also adds support for building continuous simulation models, which were not part of the original work.
The functionality and terminology of the simulation collection is similar to that found in SIMSCRIPT II.5. Some of the examples programs in this manual are based on examples from Building Simulation Models with SIMSCRIPT II.5 [Russell99] and Introduction to Combined Discrete-Continuous Simulation Using SIMSCRIPT II.5 [Fayek02]. The most important difference is that SIMSCRIPT II.5 is a simulation language while the simulation collection is written in and runs under an existing programming language, Racket. In this regard it is similar to Simulation in Python (SimPy), which is a simulation system that runs under the Python propgramming language—
1.1 Routines Available in the Simulation Collection
The Simulation Collection covers a range of functionality for developing and executing simulation models:
Simulation Environments (Basic)
Simulation Control (Basic)
Events
Processes
Resources
Data Collection
Queues (Formerly Sets)
Continuous Simulation Models
Monitors
Simulation Classes
Simulation Control (Advanced)
Simulation Environments (Hierarchical)
Simulation Components
The use of these functions is described in this manual. Each chapter provides detailed definitions of the functions, with example code.
1.2 The Simulation Collection is Free Software
The Simulation Collection is free software—
1.3 Obtaining the Simulation Collection
The preferred method for obtaining the Simulation Collection is via PLaneT, Racket’s centralized package distribution system. The PLaneT identifier for the simulation collection is (planet williams/simulation/simulation) or, if you are using any of the graphical features, (planet williams/simulation/simulation-with-graphics)—
The source code is maintained on the Schematics project website and Subversion repository at SourceForge.
Note that Version 4.0 and higher of the Simulation Collection requires Racket Version 5.0 or higher.
1.4 No Warranty
The Simulation Collection is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is your responsibility to validate the behavior of the software and their accuracy using the source code provided. See the GNU Lesser General Public License, Version 3 [LGPL] for more details.