In this chapter, you have learned a great deal about modeling processes within discrete-event dynamic systems using simulation. All of the modules found in Arena’s Basic Process panel, except for the SCHEDULE module have been discussed. The modules covered included:
Used to create and introduce entities into the model according to a pattern.
Used to dispose of entities once they have completed their activities within the model.
Used to allow an entity to experience an activity with the possible use of a resource.
Used to make assignments to variables and attributes within the model
Used to capture and tabulate statistics within the model.
Used to combine entities into a permanent or temporary representative entity.
Used to create duplicates of an existing entity or to split a batched group of entities.
Used to provide alternative flow paths for an entity based on probabilistic or condition based branching.
Used to define variables to be used within the model.
Used to define a quantity of units of a resource that can be seized and released by entities.
Used to define a waiting line for entities whose flow is currently stopped within the model.
Used to define different entity types for use within the model.
Used to define a list of elements within that can be indexed by the location in the list.
In addition to Arena’s Basic Process panel, the following constructs from the Advanced Process Panel have been introduced:
From the Advanced Process panel, this module allows input and output to occur within the model.
From the Advanced Process panel, this module defines the characteristics of the operating system file used within a READWRITE module.
From the Advanced Process panel, this module allows the user to define named logical/mathematical expressions that can be used throughout the model.
From the Advanced Process panel, this module allows an entity to experience a delay in movement via the scheduling of an event.
We also saw how to access the basic programming blocks available on the BLOCKS panel via the WHILE-ENDWHILE blocks.
From the Blocks panel, these modules allow for iterative looping.
Finally, we illustrated the following modules from the Advanced Transfer Panel.
- STATION module
Allows the marking in the model for a location to which entities can be directed for processing.
- SEQUENCE module
Allows for pre-specified routes of stations to be defined and attributes to be assigned when entities are transferred to the stations.
- ROUTE module
Facilitates the movement between stations with a time delay.
With all these modules, you can already model very complex systems.
In addition to systems modeling, we learned that when developing a simulation model, we are really developing software programs. To develop a program in Arena, you used data modules to define the elements to be used in the model and flow chart modules to specify the logical flow of the model. The flow chart style that facilitates has its advantages and disadvantages. The primary advantage is that you can quickly build useful models within the environment without really knowing how to program. This is a great boon to the use of simulation technology. The primary disadvantage is that the flow chart paradigm makes it difficult to organize and develop code that is well structured.
Because of this disadvantage, I strongly encourage you to plan your simulation model carefully (on paper) prior to entering it into the computer. If you just sit down and try to program at the computer, the effort can result in confusing spaghetti code. You should have a plan for defining your variables and use a naming convention for things that you use in the model. For example, attach an “r” to the beginning of your resource names or add a “v” to the beginning of your variables. Also, you should fill in the description property for your modules and use good common sense module names. In addition, you should list out the logic of your model in some sort of pseudo-code. Examples of pseudo-code were provided within the chapter. Additional examples of this will be given in future chapters of this text. Finally, you should use the LABELS, STATIONS, and sub-models to organize your code into manageable and logically consistent pieces. You should treat simulation model development more like a programming effort than you might have first thought.
The next couple of chapters will build upon the modeling foundations learned in this chapter. Chapter 5 will return to some statistical concepts as we learn how to simulate infinite horizon systems. will concentrate on building models that incorporate randomness and how facilitates modeling random processes. Then, we will explore some of the more advanced modules within Arena. Along the way, more of the modules and concepts needed to build more realistic simulation models will be presented.