1 Introduction
The PLT Scheme Simulation Collection implements a combined discrete and continuous event simulation engine for developing simulation models in PLT Scheme. The simulation engine:
Provides a process-based, discrete event simulation engine.
Supports combined discrete and continuous simulation models.
Provides automatic data collection.
Is designed to facilitate construction of component-based simulation models.
The source code is distributed with the simulation collection and licensed under the GNU Lesser General Public License, Version 2.1 [LGPL].
The motivation behind the PLT Scheme Simulation Collection is to provide the simulation engine for knowledge-based simulation in PLT Scheme. 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 PLT Scheme. 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 PLT Scheme 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 the SIMSCRIPT is a simulation language while the PLT Scheme Simulation Collection is written in and runs under an existing programming language, PLT Scheme. In this regard it is similar to Simulation in Python (SimPy), which is a simulation system that runs under the Python propgramming language – although SimPy was not a major source of inspiration for the PLT Scheme Simulation Collection. Chapter 16 gives some examples of simulation models in both SimPy and the PLT Simulation Collection for comparison.
1.1 Routines Available in the Simulation Collection
The PLT Scheme Simulation Collection covers a range of functionality for developing and executing simulation models:
Simulation Environments (Basic)
Simulation Control (Basic)
Events
Processes
Resources
Data Collection
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 PLT Scheme Simulation Collection is free software – this means that anyone is free to use it and redistribute it in other free programs. The simulation collection is not in the public domain – it is copyrighted and there are conditions on its distribution. Specifically, the PLT Scheme Simulation Collection is distributed under the GNU Lesser General Public License, Version 2.1. A copy of the LGPL is provided with the software.
1.3 Obtaining the Simulation Collection
The preferred method for obtaining the PLT Scheme Simulation Collection is via PLaneT, PLT Scheme’s centeralized package distribution system. The PLaneT identifier for the PLT Scheme Simulation Collection is (planet williams/simulation/simulation) or, if using any of the graphical features, (planet williams/simulation/simulation-with-graphics) – either will download the entire simulation collection. See Chapter 2 for an example.
The source code is maintained on the Schematics project website and Subversion repository at SourceForge.
Note that Version 3.0 and higher of the PLT Scheme Simulation Collection requires PLT Scheme Version 4.0 or higher.
1.4 No Warranty
The PLT Scheme 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 2.1 [LGPL] for more details.