JaamSim: Simulation Tool Simplifying Complex Systems

By Priya Ravindran


The rate at which technology is progressing today, one has to be creative, futuristic and code efficiently on the go. What if you could use your Java scripting skills to simplify the behaviour of complex systems? How about bringing it all down to models and simulations of sequences of well-defined events? This is what JaamSim lets you do!

JaamSim, short for Java Animation Modelling and Simulation, is a discrete event-simulation software package that can run on Windows, Linux or OS X systems, and is supported by Apache2.0 free open source software license.

What to expect from discrete system-simulation software

The idea behind simulating a system is clear-cut—to replicate its functionality, imbibing all your ideas into it. The system is a bunch of components put together, each depicting a certain functionality at a certain time or under given conditions. The component could be a simulation entity, an entity generator or a source as it is colloquially called, a channel or entity conveyor, or an entity sink where the entire data converges.

Modelling a server in JaamSim
Fig. 1: Modelling a server

The stimulus flows from one section, through the entire model, and finally appears at the sink, creating the process flow. This is, of course, the basic requirement for the simplest of systems. As complexity adds on, you might need a queue, a branch, additional resources or even an entity container to hold multiple entities. box 155

Smooth processing. In JaamSim, a sub-class of thread allows for entities to move through its methods, otherwise called a process. To create a process flow, you can move around, resize and place the components, connecting stages one after another, and also set the time at which each entity will be added to the model and the time each would spend at every stage of the same.

Testing During Design

As each model is created, Simulation Object stores inputs that define basic parameters such as run duration. While operating the system is as simple as selecting start/pause/stop/reset buttons from the control panel, the speed of simulation is decided by the real-time speed-up factor, as specified by you in the controls. By default, simulation time is equal to one real-time second. Multiple simulations can also be run one after another, each of which can be accessed by their run number and run index.

JaamSim Software package overview
Fig. 2: Experience your dream car

Event-driven design. Not just processes, JaamSim is built to handle event-driven models and a mix of both as well. A method can be processed in parallel or in series, allowing for the much-needed flexibility in system functionality. As a consequence, a new method runs serially and a new process runs in parallel, which means that when a method is halted, the process need not be started all over again.

The entire functioning is managed by Event Manager Object, which maintains separate lists for future events and conditional events, and handles these separately, too. The latest added events are handled first, but conditioned events are processed in the order in which these were entered.

Here, there, everywhere. The one feature you cannot leave out in a real-time system is the factor of dynamic variability. While these cannot be exactly accounted for in simulation, one can certainly consider randomness and statistical phenomena. Here, Probability Distribution feature comes to the aid of the designer.

The designer specifies the range and time span for such inputs, and these are randomly introduced into the system, paving the way for a nearly-accurate real-time model. JavaSim provides a huge list of distributions to select from, like uniform, triangular, exponential and log-logistic distributions. It also provides user-defined probability distributions, both continuous and discrete. All of these distributions can also be played around with, like the case of changing the random seed value.


Please enter your comment!
Please enter your name here