Enterprise Dynamics Tutorial
Enterprise Dynamics Tutorial
TUTORIAL
Enterprise Dynamics 9
Simulation Software / TUTORIAL
Papendorpseweg 77, 3528 BJ Utrecht, The Netherlands www.incontrolsim.com
Preface
If you want to drive a car, you are legally required to have a driving license. This demonstrates that you have
learned how to control a vehicle and that you are not a major threat to other road users. Equally, nobody would
expect to be able to learn to drive a car simply by reading the manual supplied in the glove box.
As far as simulation software - with its extensive possibilities - is concerned, there is no driving license. But here
too training is a prerequisite to understanding the software and its application to simulation problems. To make
an analogy with the manual supplied with a new car: merely flipping through the pages is not likely to be
sufficient to learn how to actually drive the car.
Enterprise Dynamics (ED) from INCONTROL Simulations Solutions is a software program for discrete event
simulation. The software is supplied with an extensive online help system. However, the demand arose from
beginners especially in the educational field for a more structured step-by-step approach that would help
them to learn the first principles of Enterprise Dynamics quickly while working alone.
The result is this Tutorial and it represents a first step to fulfilling this demand. The Tutorial covers a significant
part of Enterprise Dynamics. It teaches you the basic skills to create your own simulation model and interpret the
results.
A word of thanks goes to all the people, who have contributed to the development of this tutorial, and our users
who have made comments in how to improve our tutorial and help system.
We invite you to forward comments about this tutorial or the software, suggestions for improvement etc. to
[email protected].
The Enterprise Dynamics Development and Support team and the Enterprise Dynamics Training & Education team.
Enterprise Dynamics Tutorial
1 Table of Contents
2 Tutorial Layout
2.1 The learning perspective
This tutorial teaches beginners to find their way through the Enterprise Dynamics (ED) simulation package.
The tutorial starts in Chapter 4 with Enterprise Dynamics's opening window. From there and through a progressive
approach, you will get to know increasingly more about Enterprise Dynamics. This occurs mostly through
examples: small problems in a specific context. You will learn about the functionality of Enterprise Dynamics by
building and experimenting with models.
This approach has several advantages:
1. The user learns Enterprise Dynamics through modeling a simulation problem, which corresponds to the
purpose for which the package is being used in practice.
2. The functionalities of a program are more effectively learned when they are connected to applications.
3. The user can refer back to several solutions in examples when he or she is confronted with a similar
problem.
Briefly, this tutorial aims not only to show what a function of the software does, but also how and when it can be
applied. In addition, some parts of this tutorial can be used as a reference function, for example the overviews in
the annexes.
To be clear, this tutorial does not make the manual available under the help menu (or when you press F1)
superfluous. Users who wish to reach a higher level in building simulation models will use the manual frequently,
as it forms a complete documentation for all software functionalities.
2.2 Notation
When a submenu is referred to, the symbol | is used. So File |Preferences refers to the submenu Preferences
(consisting of a number of standard functions), which can be found under the File menu. Emphasis on important
matters is rendered by bold or italic writing of words. The case studies and the related questions are written in
this font. When 4DScript code is to be found in a text, this font has been used.
A warning is preceded by: Warning! and an important tip, are displayed in a Tip box:
File Make, open or save files, to set preferences and to control standard functions such as printing.
Display Open viewer and layout windows to display models and to open the library windows with modeling
objects.
Simulate Open a Run Control or Clock window. Design and perform an experiment.
Results To generate reports and graphics of a single simulation run or evaluate results of an experiment.
Tools Contains tools such as the 4DScript interact and Autofit to fit a distribution to given data.
Help Open the documentation, the Example Wizard as well as to find company and version information.
Developer Tools useful for developer to create libraries an attribute function.
Each main menu item is divided in to groups. See the documentation for a complete description.
Picture 4-5: Buttons to open the Library Tree and 2D Builder window.
Source: the function of this atom is to generate products into the model.
Queue: this atom is a waiting area for customers or products.
Server: the function of this atom is that of a machine or of a counter. Atoms entering a server undergo a
process and remain in this atom for a certain time (the process time).
Sink: the products or customers leave the model through this atom.
Example 1
An average of 20 customers per hour come into a post office. The assistant has on average two minutes to help a
customer. Of course, the number of customers may vary from one hour to another.
The two-minute time that the assistant has to help a customer can vary as well. A customer who only wants to
buy stamps will need less time than a customer who wants to open a new account. The customers are served on a
first-in first-out basis.
A few customers complained about the queues and because the post office manager is very concerned about the
service to his customers, he wants to inquire into this problem.
Questions and assignments
1. How high is the utilization of the post office assistant? What does that mean?
2. Can you make an estimate of the average queue length?
3. Which characteristics would you measure for the post office manager?
Simulation is a tool to gain insight into the average queue length. Because this model is the first one we are going
to build, it will be dealt with step by step.
We therefore use the four atoms mentioned in the beginning of this section and put them into the model in the
above-mentioned order. The first one is thus the Source, then the Queue, the Server and finally the Sink.
These atoms and many others can be found in the Library. Just select an atom and drag it onto the Model Layout
window. The four atoms that are required for this model can all be found in the first category BASIC
MODELING. Click the + belonging to the first category BASIC MODELING to open the section, then drag a
Source, then the Queue, the Server and finally the Sink in the model. When this is done, you get to see Picture
51 on your screen:
There are many more icons available with the Enterprise Dynamics installation. You can also add your own
icon files to the Resource Manager and use these in your model. Click on the Resource Manager button on
the Tools page of the main menu to open this window. Click on Add, a window appears. Browse and select
the an icon and click OK to add it to the Resource Manager. You then can use this icon as the 2D icon of a
product.
In this case, the icon is only changed to improve the visualization. However, if distinguishing between different
types of customers is necessary, the use of several icons can bring additional clarity. For example, one group of
customers could be represented by a green icon and another by a blue icon.
The model can now be saved, with File|Save as. For reference purposes, the model of this post office can be
found in the map tutorial models under the name Postoffice1.mod.
Atoms can simply be copied including all entered fields and parameters-! For this, first click on the atom
to be copied and then on F6: a duplicate of your atom is created. You can also use Ctrl+C to copy and
Ctrl+V to paste the atom.
To copy more than one atom right-click and select an area around these atoms or hold down the Ctrl-key
and click on the atoms to add these to your selection: click F6 or use Ctrl+C to copy the selection and Ctrl-
V to paste it. You can reposition the entire selection at ones.
When the simulation is started, you will see that the customers are still sent to the first counter. In order to
correct this, we have to look into the method that Enterprise Dynamics uses to direct the customers.
In the View menu of the Model Layout window, select the option Channels, see Picture 56. By doing so, the
channels of the atoms appear. The purpose of these channels in Enterprise Dynamics is to route products and to
Picture 5-7: The original model of the post office with channels switched on
When the lines between two channels do not appear curved but squared, it might be helpful to switch on the
option Channels as Arches in the View | Channels, see again Picture 56. As soon as the channels are switched
on, a yellow box is shown in the upper left corner of all atoms. This box contains the input and output channels
of the concerned atom, see Picture 58.
One of the revisers of this document happens to be color-blind, (as are most laser printers) and therefore
has trouble distinguishing an open (green) and closed (red) channel. You can change these color settings in
Enterprise Dynamics yourself by clicking File|Preferences |Appearances. Change the color of 2D -> Open
channeland 2D -> Closed channel.
By dragging a line between an output and an input channel with the mouse cursor, two atoms are connected with
each other. By dragging a line between an input or an output channel and the central channel of the same atom,
a connection is broken.
Now connect the channels in the Enterprise Dynamics model in such a way that the customers only go to one of
the three counters and afterwards from one counter to the exit. The result should look like Picture 510. Restart
the simulation (do not forget to reset!) and check if the customers now go to the right counters.
Picture 5-11: The list of predefined option for the "Send To" property of the Queue
Explain why in option 2 or option 3, either the first or last server will get the highest utilization, while the
servers utilizations in option 4 will be more or less the same after the simulation has run for some time!
In the Send To field, you can either enter a number, write a short piece of 4DScript code that will result in the
output channel number, or use predefined code. For beginners, the last option is definitely the easiest method.
By clicking on the small down triangle in the input field, a list appears, showing the predefined options that the
user can select. After a certain option is selected, text displayed in blue can be modified. Obviously, this
possibility is only applicable if there is something left to change.
Now select a strategy in which the utilization of the 3 counters is about the same. If the utilizations of the
counters are not directly visible, use both mouse buttons in order to zoom in or zoom out. View the model also in
3D with Display | 3D Viewer or Display | 3D Builder!
Picture 5-12: The 3D-model with the three counters modeled as machines
Questions and assignments
5. Is the layout with 3 counters sufficient?
The model can be saved now. For reference purposes, the model of this post office is to be found in the folder
tutorial models under the name Postoffice2.mod.
Picture 6-4: Part of the model with (already connected) Result atoms; left a StatusMonitor on the right a Generic
Monitor.
Configuring the Generic Monitor atom takes more work. Again, the first step is to connect the monitor with the
atom you want to observe. In this case, we want to know how many windows are leaving the factory per hour. As
a result, the monitor has to be connected with the Queue before the Sink. Connect the input channel of the
monitor to the central channel (the information channel) of the Queue. You can also double-click or right-click
the monitor atom and then press the button Select Atom select from the list that appears the atom that is
going to be observed.
Secondly, you have to enter what is going to be observed. For this, double-click or right-click once again on the
monitor atom and adjust the Variable to Monitor. Select the option Output per hour from the list of
predefined options.
If the requested variable does not appear in the list, 4DScript code has to be entered. To this end, select the
option 4DScript Expression from the list and click the square button to open a 4DScript Editor. You can now enter
your own code. However, this is not recommended for beginners.
Now you see why we added the Queue before the Sink: to use the pre-defined statement Output per hour (a Sink
has no output!).
Using a large number of monitor atoms with the sample rate set to the default value of 5 seconds can be
the cause of models running very slowly! Remember that the monitor atom is being displayed every 5
simulated seconds, and thus is taking up a lot of processing time! This phenomenon even occurs when the
model layout window is closed. In many instances, a sample rate of 60 seconds or even 3600 seconds is
preferable. Therefore use the default sample rate of 5 seconds in monitor atoms with caution.
By selecting the option Summary Report in the Results menu, a report such as in Picture 66 appears.
Warning! The option General history (by checking) as well as the individual atom has to be selected, see Picture
67. At first it might seem a good idea to turn history on for all atoms, click Select All atoms. However,
recording history this way, especially for large models, will have the effect of slowing down the simulation
unnecessarily.
At this stage, we will only focus on the possibility of creating graphs by means of the menu option Graphs,
because the atom Graph often needs to be programmed. The Graph atom might be convenient for advanced
users, because all possible variables can be defined by using 4DScript.
Step 3 Experimentation
Running the experiment according to its definition. This step requires no action from the user!
If the sample rate of your monitor atom is still set to 60 seconds, or even worse 5 seconds, this might be a good
time to set it to 36000 seconds (10 hours), or even 1E9 (1 billion seconds, about 32 years), since you will not need
the monitor atom during the experiment. It will make your model run considerably faster during the experiment.
Click on Experiment Wizard on the simulation page of the main menu, a window appears, see Picture 6-14. Start
with giving the required values for the observation period, number of runs and the warm-up period in the
Experiment Setting, see Picture 614. If you are finished you can click Next.
We are now ready to define the Performance Metrics (PFMs). In the Edit Category Window click Add to create a
new performance metric, see Picture 6-15. We are interested in the capacity per hour of the production system.
We can measure this by measuring the number of products that enter the Sink. The output of the system can thus
be measured by measuring the input of the Sink. To define a PFM on the Sink first click Select Atom and select
the Sink. We still need to define what we would like to measure at the Sink. Therefore click Add in the
Performance Metric section. We can now enter a name and select a performance metric from the list.
Important!
For more insight into the syntax and the structure of 4DScript, this would be the time to work your way
through the tutorial 'A first start in 4DScript'.
Double-clicking on fields into which 4DScript can be entered, activates the 4DScript editor. The F2 key
gives access to a list with 4DScript commands, including a short explanation of each command.
The required label is called up in the cycle time of the Servers and used as service time:
Label([servicetime], First(c)). So, instead of entering a number directly, a 4DScript command is used
which produces a number.
Read the tutorial A first start in 4DScript for the syntax of the Label command and an explanation of the meaning
of First(c).
The complete model can be found under the name bank1a.mod. This model can easily be converted to a system
of separate queues (bank1b.mod).
Questions and assignments
5. Estimate the average waiting times in both systems based on a number of 100-hour runs. Do the answers
correspond with your intuition?
As both commands play a big role, the full syntax is given here:
HumanResourceTeam_CallResources(e1,e2,e3,e4,{e5,e6})
This command can contain 6 variables; variables 5 and 6 are optional. The following applies:
Open human Resource1.mod in the Tutorial Models or correctly adjust the Server atoms in your own model. Run
the model and verify that the Human Resource hops constantly from one drilling machine to the other or to the
inspection site. Processing sites that want to begin with an operation but have no Human Resource at their
disposal, turn red in color!
Every time a call for a Human Resource is made a task is added to the team. By default, the tasks are processed
according to their arrival sequence (FIFO). This can lead to the model getting stuck in a so-called deadlock, as a
drilling machine can no longer get rid of its products. Make a long simulation run in order to study this situation.
Later we will learn how such a deadlock can be prevented.
The utilization rate of the Human Resource can be established during a run by connecting a Status monitor atom
to the Human Resource or with the Experiment Wizard and will be in excess of 80% (Busy status). Does this match
your own calculation?
In short; it seems although the model can handle the flow fine, the Human Resource has to work hard even
though its walking does not (yet) take time. How to include walking will be discussed in the following section.
Does the Human Resource move nicely up and down between the various routes?
Important!
Optimize Network with the Network Controller allows users of the network to always take the shortest path (the
algorithm of Dijkstra is applied to the internal network). This is why it is necessary to perform this step after
every change made in the network.
Picture 10-8: Call order sequence for the Human Resource without priorities
Based on the FIFO principle the Human Resource now goes to drilling machine 1, then to drilling machine 2 and
then back to inspection. So it is clear that in very busy periods the Human Resource continues to walk around in
circles and that the system can deadlock!
We now want to assign priority to the inspection task. The syntax of the call-statement in Chapter 10-1 offers
help. On inspection, change the Trigger on Entry:
HumanResourceTeam_CallResources(refHumanResourceTeam, c, i, 1)
to:
HumanResourceTeam_CallResources(refHumanResourceTeam, c, i, 1, 2)
The calls from Inspection now have priority 2, while the calls from the drilling machines retain (default) priority
1. A 1 can be added to this last statement, but it is not necessary. We also need to change the task handling
strategy on the HumanResourceTeam from FIFO to By priority descending. Change the Sort task by property of
the HumanResourceTeam to By priority descending, this setting can be found on the Strategies page of the
HumanResourceTeam. If the calls in Picture 10-8 are now sorted by priority first, and only then by time of call,
Picture 10-9: Call sequence for the Human Resource with priorities
This, in fact, means that the row of inspection orders will be processed first. Why?
Those who want to see this phenomenon in action best take one of the three Human Resource models without
priority, watch out for when the model is in danger of deadlocking, stop the run and adjust the priority of the
inspection, and then continue the run.
The models with priority are included: human resource1 with priority.mod, and so on.
11 The Transporter
In practice, the transport of products over distances takes place with forklifts, AGVs, Reach Trucks or other
vehicles. In Enterprise Dynamics, these vehicles are simulated with the Transporter or the Advanced Transporter.
The Advanced Transporter can either move freely on the pane or be restricted to paths in a network. This
instantly reminds us of the Human Resource described in the previous chapter. In addition, indeed, for the free-
range movement of the Advanced Transporter on the pane or movement restricted to paths, we are using the
same concepts as for the Human Resource. We therefore advise you to work through Chapter 10 first!
There are two Transporters included in the Floorbound group of the Transport category, namely the Transporter
and the Advanced Transporter, but only the latter can drive over the paths of a network. In Chapter 11-1 we list
the possibilities of both Transporters, followed by an example of the Transporter in Chapter 11-2. In Chapter 11-3
we will first repeat this example for the Advanced Transporter, followed by expanding the subject by adding a
network. Chapter 11-4 describes the ideas behind and the connection with the Dispatcher, the Advanced
Transporter and the Destinator in more detail. Chapter 11-5, discusses load and unload strategies of the
Advanced Transporter, while Chapter 11-6 describes the simultaneous use of several Advanced Transporters.
Picture 11-3: The Dispatcher, the Advanced Transporter and the Destinator
The Dispatchers input channels are linked to the output channels of the pick-up sites, and the output channels
are linked with one or more Advanced Transporter(s). The logic of the pick-up process is written on the
Dispatcher.
The Destinators input channels are connected with the output channels of one or more Advanced Transporter(s),
and the output channels are linked to the input channels of the destinations. Aside from adjusting channels, not
much else takes place on the Destinator.
Therefore, the Advanced Transporter is located in the middle and contains, among other things, the parameters
that relate to the subsequent routing, speed, and loading and unloading.
Now go ahead, remove the Transporter from transporter1.mod, and drag the three above-mentioned atoms into
the model. Connect the channel in the proper manner. In order to compare the Advanced Transporter with the
Transporter, you still have to select the smallest queue from the queue of red and blue products.
Therefore, on the Dispatcher, Sort Tasks By. Select:
3. Content minimum --> atoms in the container with the smallest content are dispatched first.
On the Advanced Transporter under General Parameters, Send To, select:
5. By percentage: 50% of the products go to channel 1, the remaining percentage goes to channel 2
Alternatively, select option 4, where an output channel is chosen at random.
This model can be found under transporter3.mod and is portrayed in Picture 114.
Same name leads to waiting and collecting another 4 radios from all pick-up sites;
Same container leads to waiting and picking up another 4 radios from Queue10.
In both of these situations, the products named 'radio' must still be able to appear; so watch out for deadlocks!
For now, we stop explaining the application of Transporters with or without network for the time being.
It is clear that we are now able to model a number of complex problems in warehouse environments.