SIMSCRIPT III Product Features

- Simulation Concepts

Object-view and world-view
SIMSCRIPT III supports object-view though powerful data structures and concepts like classes, methods, objects, multiple inheritance and process-methods.

It also supports world-view and powerful concepts entities-attributes-sets. Both, world-view and object-view can exist in the same model, or a modeler may decide to use entirely object-view or a world-view only.
Object Attributes, Methods and a collection of Objects
Object types are defined with the class which can be instantiated, it contains object attributes and may have methods which describe object behavior, and may contain special process-methods with time elapsing capabilities which can be scheduled for execution in defined instances of time. Objects can inherit object properties (object attributes and methods) from multiple base objects, through single or multiple inheritance. Single inheritance is expressed naturally, like a tanker object "is a" vessel object.

Real world objects are represented as objects. Values associated with an object are stored in object attributes, which can be thought of as a field of a record. Objects are dynamically instantiated and there is no limit to the number of objects instantiated from a certain type.

A collection of objects can be maintained as a set. Sets are implemented as linked lists which may be traversed using simple language constructs and may grow and shrink as needed as entities are filed and removed. The ordering of objects in the set may be specified as FIFO, LIFO or ranked based on attribute values.
Process-methods, Processes and Events
In an object-view, process-method is an object method which has time elapsing capability and can be scheduled for execution in an instance of a simulation time. It described object activity. An object can have multiple process- method types, and multiple instances of the same process-method scheduled for concurrent execution.

In a world-view, a process or an event is a special routine (light wait thread) which may be associated with an entity to describe its real world behavior. These routines contain code which is scheduled for execution at a given point in simulation time.
Built-in concurrency
The simulation is driven by the execution of process methods, or processes and events. Built-in system timing mechanisms continually select the process-method, process or event which is scheduled next in simulation time and initiates its execution. Process-methods, processes and events can schedule the execution of other processes and events, cancel the execution of the process previously scheduled and even suspend its own execution and schedule its resumption.

This capability simplifies the task of modeling the behavior of real world objects as the simultaneously act alone and interact with each other. Any number of processes of a given class can be instantiated. The limit is imposed by the virtual memory of the platform.
Types of simulation
SIMSCRIPT III supports process oriented discrete event simulation, and combined discrete-continuous simulation.
The simulation of objects queuing for a resource is such a common requirement that SIMSCRIPT III provides special statements specifically for this purpose. A process routine can request a number of units of a resource and will be suspended if the request cannot immediately be fulfilled. Once the units become available the process is resumed. When the units are no longer needed, they are relinquished.
Automatic collection of statistics
Another common requirement of simulation is the need for collecting statistics. SIMSCRIPT III provides an automated way to collect any of a variety of statistics including histograms. Statistics may be weighted by simulation time (accumulated) or not (tallied).
Random number generation Yet another requirement of simulation is the need for random numbers. SIMSCRIPT III provides random number generators for several distributions, including uniform, normal, Poisson, exponential etc. Furthermore, SIMSCRIPT provides the users the ability to define their own distribution, from which random samples can be generated.

Checkpoint/Restart is an advanced feature which facilitates preservation of the model state in some point in time and then restart from a preserved state. It facilitates the exploration of different what-if scenarios through bypassing a long initiation phase in very large simulation models. This lets your models run faster while still giving you the accuracy you demand for your analysis.