The simulation & modelling task for the MONARC project requires to describe complex programs running in a distributed environment. For such type of applications, I think that the simulation tool(s) should provide basic support for executable entities. In most uses these executable entities ( "active objects" or " actors" ) conceptually (if not actually) execute concurrently. Such active objects extend the concept of objects to concurrent computation by encapsulating a thread of control and and having interfaces to interacts with other objects. This process oriented approach for discrete event simulation is well suited to describe concurrent running programs. The "active objects" (having an execution thread , a program counter, stack .. ) allow an easy way to map the structure of a complex application into the simulation framework. Discrete event simulation packages without multi-thread support, even if they are process oriented, require to describe the "simulated objects" in terms of "elementary processes". For complex programs this is not a simple task and the simulation model is quite different from the application program. Java has build in multi-thread support for concurrent processing. Usually the implementation is done at the Operating System (lightweight processes) level . The Threads class in Java is for concurrent programming not simulation. However, simulation packages can be developed by using the multi-thread structure and providing a new scheduler to be used with the threaded objects for discrete event simulations. Packages which also provide support for distributed objects (through RMI or CORBA) can be used on distributed simulations , or for an environment in which parts of the system are simulated and interfaced through such a mechanism with other parts which actually are running the real application. The distributed object model can also provide the environment to be used for autonomous mobile agents. Attached, I am sending a list (in html with links) with several such simulation packages. Best regards, Iosif  

 Some discrete event simulation packages based on a multi-thread process oriented design:

PTOMEMY II   ( University of California at Berkeley)

Heterogeneous Concurrent Modeling and Design in JAVA.
Complete new redesign of the Ptolomy simulation package.  It can provide a framework for "open distributed object-oriented systems".

Ptolemy II is a set of Java packages supporting heterogeneous, concurrent modeling and design.  Ptolemy II includes a number of support packages, such as graph, providing graph-theoretic manipulations, math, providing matrix and vector math and signal processing functions, plot, providing visual display of data,  providing a type system, data encapsulation and an expression parser, etc.

Has distributed object support.
A draft of the Ptolemy II Design Document  ( pdf ).

Should be released very soon.
 

Parsimony ( University of Waterloo )
Parsimony stands for PARallel SIMulator Once Named Yaddes. And Yaddes stands for Yet Another Distributed Discrete Event Simulator.

The Parsimony Project is a vehicle for conducting research in distributed, network-centric computing.
The main objective is the development of a Java-based testbed for distributed interactive simulation.
Has a distributed object support and grahics.
 
 

 Silk    (ThreadTec, Inc. )
Silk is a Java-based modeling tool for the simulation, study and improvement of industrial systems.
Silk is a next generation modeling tool which merges the familiar process-description modeling methodology within an advanced object-oriented language
using industry-standard development environments. Silk is a  complete package of process-oriented simulation constructs including JavaBeans components for visual modeling. Includes a variety of methods for entity generation, resource scheduling and output post-processing using Microsoft Execl.


 Price  $1900  ( a basic version is free for academic )
 

Simjava  ( The University of Edinburgh )

Simjava is Java Based version of  Hierarchical computer Architecture design and Simulation Environment (HASE) .
It allows for the rapid development and exploration of computer architectures at multiple levels of abstraction, encompassing both hardware and software.
Within HASE there are graphical entity  design and edit facilities, entity library creation and retrieval mechanisms, an animator, and statistical analysis and experimentation tools for deriving system performance metrics.
Simjava is a process based discrete event simulation package for Java, similar to Jade's Sim++, with animation facilities.
Distributed simjava is an extension of simjava  based on RMI .
 
 

JSIM ( University of Georgia)

JSIM is a Java-based simulation and animation environment supporting Web-Based Simulation .
Simulation models may be built using either the event package (Event-Scheduling Paradigm) or the process package (Process-Interaction Paradigm).
In addition, a graphical designer (jmodel package) allows process models to be be rapidly built graphically. The qds package (Query Driven Simulation) under development controls the storage, retrieval and execution of simulation models as Java Beans and utilizes JDBC to access databases. It also stores model inputs and outputs. Finally, JSIM has three foundation packages: queue, statistic and variate.
 

JavaSim  (Department of Computing Science, University of Newcastle upon Tyne)

JavaSim is a set of Java packages for building discrete event process-based simulation, similar to that in Simula and C++SIM (from which JavaSim is derived).
 
 

Swarm ( The Santa Fe Institute)
Swarm is a software package for multi-agent simulation of complex systems being developed at The Santa Fe Institute.
Swarm is intended to be a useful tool for researchers in a variety of disciplines, especially artificial life. The basic architecture of Swarm is the simulation of collections of concurrently interacting agents: with this architecture, we can implement a large variety of agent based models. Our initial target is Unix machines running GNU Objective C and X windows: the source code is freely available under GNU Licensing terms.
 
 
 
 

Other simulation packages:
 

MODSIM III (  CACI )
Simulation Language , Development Environment , Graphics & Animation , Application Development Library , Database Connectivity , Graphical Network Editor , HLA (High Level Architecture) Interface

PARSEC ( UCLA , Parallel Computing Laboratory )
Parallel simulation environment for complex systers
Parsec is a C-based simulation language,  for sequential and parallel execution of discrete-event
simulation models. It can also be used as a parallel programming language.

QASE   (AST ENGINEERING SERVICES, Inc. )
Simulation modeling tool for distributed client/server applications.

SimCad ( CreateASoft, Inc. )
Visual general purpose DES. --------------E4BDC5F3EAFDC03A8139671C--