A practical guide to building your first discrete-event simulation model using the O²DES framework in C#.
As the O2DES is using the following techniques, please make sure that you have basic understanding of them.
In this paper, you will learn:
Below is the simplified class diagram for the O2DES simulator. Only the relevant public and protected parameters and classes are shown.
The class Scenario encapsulates the static properties of the system being simulated. These entities are static as they are simply a description of the entities and do not change in state during the simulation. These static properties include entities such as path, road, rack, SKU, etc. Essentially, this class should describe the entities present in the system.
The template for the Scenario class is as such:
The class Status, as the name suggests, tracks the respective status of the entities in the system. These entities are dynamic in nature as their respective states can change as the simulation progresses. Examples of such dynamic entities are load, server, etc. Consequently, the output statistics desired from the simulation should be inferred from this class. Click here to learn about the Status API.
The template for the Status class is as such:
The class Event is an abstract class which can be scheduled to change the status of the entities in the simulation, according to the discrete-event simulation paradigm. Each event in the simulation should be encapsulated as a new sub-class derived from this abstract class. Click here to learn about the Event API.
The template for the Event class is as such:
The Event class is the only class that has to be created multiple times, one for each event. The template is available in Project > Add New Item… as O2DESNet.Event. Name your new Event class and place the new .cs file into the Event folder in the solution.
The class Simulator contains the future event list and the simulation clock. The mechanism to drive the simulation forward is also contained in this class. Click here to learn about the Simulator API.
The template for the Simulator class is as such: