Discrete event simulation
The structure of OpenSIMPLY is as a stack of layers where the lowest provides discrete event simulation approach (DES). The principles of DES can be formulated in these concepts:
That is a sequence of actions that fully or partially describe an object behavior. Use here the traffic lights as an example object. The actions in this case are the changing of the light color: from red to yellow, from yellow to green, and so on. A certain color changing is described as a certain process. A process can be activated or suspended. Active process is suspended when another process is activated. Only one process can be active in the certain time. Therefore it has to be known which time which process has to be activated.
An event concept is a cornerstone of DES: not every time quantum is simulated, but only a certain time points when a process has to be activated or suspended. For traffic lights example it has to simulate only the time points of colors switching: from red to yellow, from yellow to green, and so on. The time in between is of no interest. A time point presents in simulation only when the state of object is changing. Such state changing is understood in DES as an event. If the state of the object is stable then in term of DES no event happens. If there is no event, no simulation actions should be performed concerning this object. That important and reasonable concept in DES saves a lot of simulation runtime.
So, as DES operates with events they should be kept somewhere. This job is carried out by a special list called schedule. It keeps the items containing events and corresponding processes. Such item is called event notice. They are ordered in schedule accordingly to event time. The first item contains the earliest event, the last one contains the latest. Inserting of event notice on a proper position in schedule is called event planning.
It is as follows: a process of the first event notice is activating. If a process has a time pause in behavior description, then a process is suspended on pause point, and next active phase of process is planned: current event notice is removed from schedule, and a new one containing pause ending time is inserted into schedule on certain position. And simulation is going on: a process of the first event notice is activating, and so on.
OpenSIMPLY tutorial contains the practical examples with detailed description. All of them are ready to compile.
The project documentation is available in different formats and compatible with any IDE.
to play around.