SIMSCRIPT HOME
WHAT'S NEW
DESCRIPTION
FEATURES
ENVIRONMENT
PLATFORMS
DOCUMENTATION
SOLUTIONS
TRAINING
SIMSCRIPT ARCHIVE
LATEST NEWS &
TECHNICAL PAPERS
 



SIMSCRIPT III PRODUCT FEATURES

SIMULATION
LANGUAGE
SIMGRAPHICS
DEBUGGING
PORTABILITY

  SIMSCRIPT III is Object-Oriented, modular, free-form, English-like simulation development and modeling language. It is a self-documenting, general-purpose object–oriented programming language with embedded constructs for process oriented simulation.

SIMSCRIPT III is designed to be used for discrete-event and combined discrete/continuous simulations. It is used world wide for building object-oriented, modular, portable, high-fidelity, scaleable simulation and modeling applications with excellent interactive graphical user interfaces and animated graphics.

  The Free-form, English-like Simulation and Modeling Language

The syntax of SIMSCRIPT III English-like and "self-documenting." Identifiers may be arbitrarily long, and through the define to mean and substitute statements, the user may tailor the appearance of the source code if desired. This not only helps others to better understand what the code is doing but helps reduce further development and maintenance costs.

SIMSCRIPT III is a superset of the SIMSCRIPT II.5, all models written in SIMSCRIPT II.5 will run under SIMSCRIPT III with the compatibility switch.

  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.


  • Resources
    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
    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.



  General Purpose Language Features
  • data types
    The SIMSCRIPT III language provides a full complement of features used in object-oriented general-purpose programming. There are several basic data types available including REAL, INTEGER, DOUBLE, POINTER, REFERENCE, TEXT, CLASS. TEXT values are dynamic character strings whose allocation and de-allocation are managed automatically by the system. CLASS is a dynamic type, it encaptulates data and methods, and can be dynamically instantiated.


  • Operators
    There are numerous operators available which include not only the standard arithmetic, relational and logical operators but a large variety of "built-in" functions for such diverse tasks as computing the square root, concatenating TEXT and performing date arithmetic.


  • Dynamic Arrays
    All arrays are dynamic, i.e. the number of elements are specified at run-time rather than compile time.


  • Control Statements
    Conditional statements include the IF-ELSE and the SELECT CASE statements. Loops are controlled by one or more "control phrases," such as the FOR, WHILE and WITH phrases, which may be mixed and matched in any way. The FIND statement provides a search capability for sets.


  • Powerful I/O Constructs
    SIMSCRIPT III provides complete facilities for I/O. Both free-form and formatted input are supported as well as a variety of output statements including a report generation capability. Files may contain character or binary data.


  • Subsystems/modules/packages
    SIMSCRIPT III supports modularity. A program may consist of main module and multiple programming modules. Main module contains preamble, main routine and may import multiple modules/subsystems. The preamble can be public and private and contains classes, data structure and process type definitions of the module/subsystem. Implementation of the subsystem contains executable routines and functions. SIMSCRIPT routines and functions may have parameters as well as local variables and may be recursive. A routine may be called directly by a CALL statement or indirectly using a SUBPROGRAM variable. In addition, a "monitoring" routine may be defined which is called whenever a particular attribute or global variable is accessed.


  • NON-SIMSCRIPT Modules - Interoperability
    SIMSCRIPT III is an open environment. Functions and routines written in C/C++, FORTRAN, and Java can be invoked from a SIMSCRIPT III program by simply declaring them as non-SIMSCRIPT routines or functions. This provides an elegant way for interfacing with the specialized libraries, databases, specialized tools like MATLAB and middleware for distributed simulation like HLA RTI.

  SIMGRAPHICS

SIMGRAPHICS refers to the graphics extensions to the SIMSCRIPT III language. Using the interactive editors from the Simstudio, the user describes off-line the appearance of graphs, icons and forms that can subsequently be used by a SIMSCRIPT program. This capability makes it simple for a program to present graphical displays of data, show animated images of the objects in the model, and obtain interactive input from the user of the program using mouse-based menus and forms.
  • Presentation Graphics
    Values in your program are graphed on demand or automatically as they change. Several types of graphs are available including line graphs, bar graphs, trace plots, pie charts, dials and level meters. A graphical display of statistics, which is updated as the simulation progresses, greatly enhances the understanding of the system under study and speeds your analysis. You can see changes in the utilization of resources in your model while the simulation is running instead of waiting for post-run analysis.


  • Animation
    A graphical image, called an icon, may be associated with an object or entity. It may appear motionless on the screen or may be given a velocity that causes it to be animated. With this capability, it is possible to graphically display the objects of the model as they move through the system and interact with one another. This also improves the understanding of the model and is a very useful debugging tool.


  • Forms
    The SIMSCRIPT III forms capability simplifies the development of an effective user-interface for a mouse-based window environment. The toolkit for the programmer includes pull-down menus, scrolling lists, radio buttons, value fields, pop-up menus, tabbed dialog boxes, palettes, etc. Automatic validation of input values is provided and may be selectively enhanced by the programmer.



  BUILT-IN DEBUGGING SUPPORT

SIMSCRIPT III provides considerable debugging support. This includes extensive run-time checking as well as special statements for tracing the execution of the program. In addition, a full-scale symbolic interactive debugger is provided.

  PORTABILITY

Programs written in SIMSCRIPT III with SIMGRAPHICS are portable. They can be developed on a PC running Windows and easily moved to any supported UNIX platform; they just need recompilation.
Home | Products | Solutions | Services | Support | Education | Downloads | Training | Corporate | Contact