SSJ
V. 2.6.2.

SSJ : A Java library for a stochastic simulation
API specification

SSJ is a Java library for stochastic simulation, developed in the Département d'Informatique et de Recherche Opérationnelle (DIRO), at the Université de Montréal.

See:
          Description

Packages
umontreal.iro.lecuyer.charts This package contains classes to produce charts used in the Java software developed in the simulation laboratory of the DIRO, at the Universite de Montreal.
umontreal.iro.lecuyer.functionfit This package provides basic facilities for curve fitting and interpolation with polynomials as, for example, least square fit and spline interpolation.
umontreal.iro.lecuyer.functions This package contains a few utilities classes representing univariate mathematical functions.
umontreal.iro.lecuyer.gof This package contains tools for performing univariate goodness-of-fit (GOF) statistical tests.
umontreal.iro.lecuyer.hups Monte Carlo and quasi-Monte Carlo
umontreal.iro.lecuyer.probdist This package contains a set of Java classes providing methods to compute mass, density, distribution, complementary distribution, and inverse distribution functions for some discrete and continuous probability distributions.
umontreal.iro.lecuyer.probdistmulti This package contains Java classes providing methods to compute mass, density, distribution and complementary distribution functions for some multi-dimensional discrete and continuous probability distributions.
umontreal.iro.lecuyer.probdistmulti.norta  
umontreal.iro.lecuyer.randvar This package provides a collection of classes for non-uniform random variate generation, primarily from standard distributions.
umontreal.iro.lecuyer.randvarmulti This package provides a collection of classes for non-uniform random variate generation, very similar to randvar, but for multivariate distributions.
umontreal.iro.lecuyer.rng This package offers the basic facilities for generating uniform random numbers.
umontreal.iro.lecuyer.simevents This package provides the simulation clock and tools to manage the future events list.
umontreal.iro.lecuyer.simevents.eventlist This package provides different kinds of event list implementations.
umontreal.iro.lecuyer.simprocs Process-oriented simulation is managed through this package.
umontreal.iro.lecuyer.stat This package provides elementary tools for collecting statistics and computing confidence intervals.
umontreal.iro.lecuyer.stat.list Provides support for lists of statistical probes.
umontreal.iro.lecuyer.stochprocess This package provides classes to define stochastic processes {X(t), t≥0}, and to simulate their sample paths at a finite number of (discrete) observation times t0t1 ...
umontreal.iro.lecuyer.util This package contains utility classes used in the Java software developed in the simulation laboratory of the DIRO, at the Université de Montréal.
umontreal.iro.lecuyer.util.io This package provides tools for exporting data to text and binary files, as well as for importing data from files.

 

SSJ is a Java library for stochastic simulation, developed in the Département d'Informatique et de Recherche Opérationnelle (DIRO), at the Université de Montréal. It provides facilities for generating uniform and nonuniform random variates, computing different measures related to probability distributions, performing goodness-of-fit tests, applying quasi-Monte Carlo methods, collecting statistics (elementary), and programming discrete-event simulations with both events and processes. Additional Java packages are also developed on top of SSJ for simulation applications in finance, call centers management, communication networks, etc.


\fbox{\parbox{0.94\textwidth}{
\ttfamily
This file is part of SSJ.
\par
Copyri...
...ublic License
along with SSJ. If not, see \@ url{http://www.gnu.org/licenses}.
}}

Introduction and overview

Simulation models can be implemented in many ways[#!sLAW00a!#]. One can use general-purpose programming languages such as FORTRAN, C, C++, Java, or specialized simulation languages such as GPSS, SIMAN, and SIMSCRIPT. The general-purpose languages may be more familiar to the programmer, but usually do not have the necessary built-in tools to perform simulation. Implementing a model can become complex and tedious. Specialized simulation languages must be learned before models can be implemented, and they are not as widely available and supported as the most popular general-purpose languages.

Over the past few decades, commercial simulation tools with point-and-click graphical user interfaces such as Arena, Automod, Witness, and many others, have become by far the most widely used tools to develop simulation models. Among their main advantages, these tools do not require knowledge of a programming language, provide graphical animation, have automatic facilities to collect statistics and perform experiments, and can sometimes perform optimization to a certain extent. On the other hand, these specialized simulation tools, especially the point-and-click tools, are often too restrictive, because they are usually targeted at a limited class of models. With these tools, simulating a system whose logic is complicated or unconventional may become quite difficult. All the graphical and automatic devices also tend to slow down the simulation significantly. Fast execution times are important for example in a context of optimization, where thousands of variants of a base system may have to be simulated, or for on-line applications where a fast response time is required.

SSJ is an organized set of packages whose purpose is to facilitate simulation programming in the Java language. A first description was given in[#!sLEC02a!#]. Some of the tools can also be used for modeling (e.g., selecting and fitting distributions). As these lines are being written, SSJ is still growing. Several new packages, classes, and methods will certainly be added in forthcoming years and others will be refined.

The facilities offered are grouped into different packages, each one having its own user's guide, in the form of a PDF file. There is also a set of commented examples of simulation programs in a separate directory with its own guide. Programs are given for some of the examples used in the books of Law and Kelton[#!sLAW00a!#] and Glasserman[#!fGLA04a!#], for instance. The best way to learn about SSJ, at the beginning, is probably to study these examples and refer to the user guides of the different packages when needed. The PDF files are the official documentation. There is also a simplified on-line documentation in HTML format, produced via javadoc.

Dependence on other libraries

SSJ uses some classes from other free Java libraries.

The Colt library, developed at the Centre Européen de Recherche Nucléaire (CERN) in Geneva [#!iHOS04a!#], is a large library that provides a wide range of facilities for high performance scientific and technical computing in Java. SSJ uses the class cern.colt.listDoubleArrayList from Colt in a few of its classes, namely in packages umontreal.iro.lecuyerstat and umontreal.iro.lecuyerhups. The reason is that this class provides a very efficient and convenient implementation of an (automatically) extensible array of double, together with several methods for computing statistics for the observations stored in the array (see, e.g., Descriptive). The Colt library is distributed with the SSJ package as colt.jar. It must be added in the CLASSPATH environment variable.

The linear_algebra library is based on public domain LINPACK routines. They were translated from Fortran to Java by Steve Verrill at the USDA Forest Products Laboratory Madison, Wisconsin, USA. This software is also in the public domain and is included in the SSJ distribution as the Blas.jar archive. It is used only in the probdist package to compute maximum likelihood estimators.

The optimization package of Steve Verrill includes Java translations of the MINPACK routines [#!iMOR80a!#] for nonlinear least squares problems as well as UNCMIN routines [#!iSCHa!#] for unconstrained optimization. They were translated from Fortran to Java by Steve Verrill and are in the public domain. They are included in the SSJ distribution as the optimization.jar archive. It is used only in the probdist package to compute maximum likelihood estimators.

JFreeChart is a free Java library that can generate a wide variety of charts and plots for use in applications, applets and servlets. JFreeChart currently supports, amongst others, bar charts, pie charts, line charts, XY-plots, histograms, scatter plots and time series plots. It is distributed with SSJ as jfreechart-*.jar. JCommon is a free general purpose Java library containing many useful classes used by JFreeChart and other Java packages. It is distributed with SSJ as jcommon-*.jar. JFreeChart (and JCommon) are used in the SSJ package charts to create different kinds of charts.

SSJ also provides an interface to the UNURAN library for nonuniform random number generation [#!iLEY02a!#], in the umontreal.iro.lecuyerrandvar package. UNURAN does not have to be installed to be used with SSJ, because it is linked statically with the appropriate SSJ native library. However, the UNURAN documentation will be required to take full advantage of the library.

Acknowledgments

SSJ was designed and implemented under the supervision of Pierre L'Ecuyer, with the contribution of the following persons

Mathieu Bague, Sylvain Bonnet, Éric Buist, Maxime Dion, Yves Edel, Regina H. S. Hong, Alexander Keller, Pierre L'Ecuyer, Étienne Marcotte, Lakhdar Meliani, François Panneton, Jean-Sebastien Parent-Chartier, Richard Simard, Clément Teule, Pierre-Alexandre Tremblay, Jean Vaucher.

Its development has been supported by NSERC-Canada grant No. ODGP0110050, NATEQ-Québec grant No. 02ER3218, a Killam fellowship, and a Canada Research Chair to the author.


SSJ
V. 2.6.2.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.