Self Teaching Guide
The self teaching guide is designed to walk you through a series of interesting lessons and exercises to help you become proficient with ProcessModel.
Install the Software
A model is made up of multiple files including additional temporary files which are created during simulation. Creating a model “package” is the method ProcessModel uses to bundle the essential files together in a compressed (.spg) format. This facilitates moving models to a new location (either on your computer or on another computer), or creating multiple versions of a model as you build your application. To open a model package, open ProcessModel and click the Open (CTRL + O) option from the File menu. Then browse for the package file. Don’t use WinZip (or other zipping program) to create or install package files.
When opening a model file you will be opening a .SPG file. To open a model package, open ProcessModel and click the Open (CTRL + O) option from the File menu. Then browse for the package file. Do not simply double click on a model file from My Computer or Windows Explorer. Doing so may not open the application properly.
To aid in your learning process, each lesson will have questions to check your comprehension of the concepts being covered. Your answers can be verified by checking the Appendix at the end of this guide.
Self Teaching Guide Conventions
The following icons will be used throughout this manual to indicate sections to take note of.
|Action to take|
|Important information to be aware of|
|Tip or something to think about|
|Questions to answer in order to confirm comprehension of information covered|
|Watch tutorial video|
|Bold||Menu items to click, text to be typed, or other actions to take|
Continue with Lesson 1: Your First Model
Lesson 1: Your First Model
See Overview of Modeling with ProcessModel video tutorial.
See Learn How to Use the Interface video tutorial.
Operating Parameters and Requirements
In our first lesson we will model a small call center. The objective of this lesson is to find the appropriate staffing level for a given call volume. We will be modifying the model itself, as well as changing some parameters in order to reach the objective.
Help desk staff (Level 1 resource) make $8/hr while support staff (Level 2 resource) make $12/hr.
75% of the calls taken can be resolved over the phone within the first 2 minutes. Once the question is answered, the call exits the system. But the remaining 25% of calls are more difficult and require additional research. The research function takes 20 minutes to complete. Following the research, the call must be returned to the customer. This call back takes 3 minutes.
New calls come into the call center every 5 minutes. Management has determined that the average customers with a difficult issue should not to wait more than 60 minutes to receive a call back.
Open the Model
Start ProcessModel and open the Lesson 1 – Call Center model package by selecting the Open option from the File menu.
This will install the model files from the package but keep the package intact. That way you can change the model as much as needed. Then, if you ever need to go back to the original version of the model, you can just install the package again. Just make sure you use File / Save As to change the name of your model before installing the package again. Otherwise you will overwrite your current model of the same name.
You should now see the model shown below.
Answer the following questions without simulating the model. Supposing 200 calls arrived:
1. How many calls exit without requiring research?
2. How long does each simple call take to complete?
3. How many calls require research?
4. How long does it take to service the difficult calls?
Simulating the Model
To simulate the model, click the Simulation menu and then select the Save & Simulate option.
The upper left region of the simulation window is called the Scoreboard. It shows some key statistics for entities which have completed the process and left the model. The upper right section of the window shows the simulation clock. 30 hours and 23 minutes into the simulation, the 63 completed difficult calls have taken an average of 681.24 minutes to make it through the process. That may be a surprise since the total activity time for the model is only 25 minutes. One of the benefits of simulation is to demonstrate what will actually happen, rather than what is supposed to happen, or what you think will happen.
You can speed up the simulation or slow it down by dragging the scroll bar at the top of the window to the right or left.
The indicator lights above the resources show their activity. Red means the resource is on break or off shift. Blue means the resource is on shift but waiting for work. Green means the resource is currently working on an entity.
The number above and to the left of an activity represents the contents of its input queue. In this case there are 14 calls waiting to be returned because the activity is currently busy. The number below an activity shows the current contents of a multi-capacity location. The Perform Research activity has a capacity of 10, but since there is only 1 Level 2 resource, only 1 entity can be processed at a time at that location.
View the Output Report
Following the simulation you will be asked if you want to see the results. Click No, after returning to ProcessModel click the output report button .
Click the General Report and then goto the Resources section. You’ll notice that the Level 2 resource was busy 96.7% of the time while the Level 1 resource was only busy 40% of the time.
Click the Entity section. There you see that 70 Difficult calls left the model and took an average of 669.69 minutes to do it.
Goto the Activities section. Notice the input queue for the Return Call activity had an Average Contents of 21.76 and an average wait time of 497.37 minutes. That’s over 8 hours in that activity alone before the call was returned. Our manager is not happy!
Solution 1 – Hire More Staff
Close the output report. Then double click on the Level 2 resource and change the Quantity field to 2.
Save this as a new file by clicking the Save As option on the File menu. Save the file as using the name Lesson 1 – Solution 1. Now simulate your model and find the average cycle time for the Difficult calls.
5. How much improvement was there in the cycle time?
6. How did the resource utilization change?
7. Is that utilization change good or bad?
Solution 2 – Change Entity Handling
While there was a dramatic improvement in cycle time, solution 1 will increase cost. Let’s try another where the Level 2 resource stays with the entity from the time they begin research until after they return the call.
Open the original call center model by clicking File and then Open. Select the Lesson 1 – Call Center model. Change the Get and Free connector from Perform Research to Level 2 to a GET.
Also change the Get and Free connector from Level 2 to Return Call to a Free.
Now, instead of the Level 2 resource being freed immediately after the Perform Research work is complete, the resource will travel with the Difficult call through the Return Call activity until the call is complete and has been returned.
Save this new model as Lesson 1 – Solution 2. Simulate the model.
The average cycle time is now 212.27 minutes which is not as good as in Solution 1. However, there is no increase in cost. The Perform Research input queue has an average contents of 8.28 and an average time of 179.23 minutes.
8. Where is the queue buildup now?
9. What happened to the input queue buildup at Return Call?
Solution 3 – Change Responsibilities
Since the Level 1 resource has some free time, let’s see what happens if we have them return calls instead of the Level 2 resource.
Close any models you have open. Open the Lesson 1 – Call Center model. Click the dashed line connecting the Level 2 resource to the Return Call activity. Press the Delete key on your keyboard. Hover your mouse over the Level 1 resource. Then click and drag your mouse to Return Call.
Rename your model to Lesson 1 – Solution 3 by clicking the Save As option on the File menu.
After simulating this new model, you’ll notice the cycle time for Difficult calls has dropped to 105.35 minutes.
10. What was the Average Contents value for the Perform Research input queue?
11. How long did the average Difficult call wait in the input queue of the Perform Research activity?
12. What was the utilization for each resource?
Solution 4 – Alternate Resource
Another alternative is to cross train Level 1 workers so they can help doing research when they aren’t busy taking calls. Remember though, taking calls is their first priority. So if they are doing research and a call comes in, they need to stop doing their research in order to take the call.
Open the Lesson 1 – Call Center model. Hover the mouse over the Level 1 resource. Click and drag your mouse to the line connecting Level 2 to Perform Research.
To place priority on taking calls, click the connector between Level 1 and Take Call. Then click the Respond Immediately check box.
Save this file as Lesson 1 – Solution 4. Then simulate the model.
The average cycle time for Difficult calls is no 53.95 minutes. Remember management wanted that time to be under 60 minutes.
13. Several alternatives were tried in this lesson. Given your knowledge of business, which solution do you think makes the most sense?
14. What other solutions would you suggest? Do you see how ProcessModel can help you determine the best alternative?
15. Go back to the original call center model. Review the operating parameters and requirements outlined at the beginning of this lesson. Double click each object in the model to locate each of those parameters
Continue with Lesson 2: Replications and Distributions
Lesson 2: Replications and Distributions
Distributions (which we will discuss later in this lesson) are a method used in ProcessModel to introduce randomness or variability. For example, you may have an activity where the processing time is not always constant due to the type of entity being processed, or a variety of other reasons. In order to understand the importance of running replications in a simulation, let’s suppose you have 3 consecutive activities, each having a distribution in their time fields. Because the values for those times are chosen randomly each time an entity enters the processes, it is possible that the majority of the times chosen will be on the low range of possible values. That of course would give a lower than expected overall cycle time for your process. Now let’s say you delete one of the processes. You would expect the average cycle time to drop because there is one less activity. However, because of the randomness of the distributions, the two remaining activities could return many time values in the high range of the scale. In that case, the average cycle time would actually go up instead of down. Even though this is an extreme example, it demonstrates the nature of randomness. Replications allow you to run a simulation multiple times, generating different random values for each replication. Then by taking an average of those replications, your results are much more realistic and repeatable.
When using replications, you can view the minimum and maximum results for each section in the output detail report. Run your replications, then on the output report’s filter tab, click Statics and select the check the Min – Max checkbox. Min – Max should now be selected.
The min and max values will be displayed in each of the report sections similar to that shown below.
Open the last model used in Lesson 1, Lesson 1 – Solution 4. Click on the Simulation menu and select Options.
You’ll remember that the simulations in Lesson 1 ran for 40 hours. The Options menu is where the simulation run length is determined. Warmup length is the amount of time you want to run your model before collecting statistics (use to preload a production line). Replications determines the number of times a simulation is repeated before displaying the results.
Turning off the animation in the Options window will make the simulation run much faster.
Let’s see what happens when you set the Replications to 30, turn off the animation and the scoreboard. Click Close, simulate the model, click No to close Output Detail Report, Click from the toolbar to view the output report.
Goto the Entity Summary tab on the General Report.
The results of each replication are shown in the first 30 rows. The last two rows show the Average and Standard Deviation for all replications. Note the Average Cycle Time average of the replications is 68.95 which is above the required 60 minute maximum specified by management.
A distribution could be defined as a set of values which specify the relative frequency with which an event has occurred or is likely to occur. In the real world, events tend to occur randomly, according to certain statistical patterns or distributions. Distributions allow you add randomness or variability to your model in order to make it more accurately reflect reality.
Distributions are of two major types: discrete and continuous. Discrete distributions contain a finite number of possible outcomes. Two examples would be an entity randomly routing to one of several locations, or a randomly generated quantity of arriving entities. Continuous distributions contain an infinite number of possible outcomes. Examples include generating service times or the time between arrivals.
The following represent only 4 of the commonly used distributions in ProcessModel. For a complete list of available distributions you can open the Stat::Fit program from ProcessModel’s Tools menu.
|Triangular||T(a, b, c, s)||a = mimum
b = mode
c = maximum
Example: T(2, 10, 15)
|Uniform||U(a, b, s)||a = mean
b = half range
|User-defined (or discrete)||D n (% 1 , X 1 , . . . % n , X n )||% = percentage of time the value is returned
x = value to be returned
n = number of return values (between 2 and 5)
Example: D3(20, 35, 30, 45, 50, 37.5)
The following diagrams show what the Triangular and Uniform distributions explained above would look like.
Triangular – Unload time for trucks could be as little as 7 minutes, is typically 18, but could be as long as 45 minutes. To model this example, you would enter T(7, 18, 45) in the Time field at the Loading Dock activity.
Uniform – Everyday you have anywhere between 50 and 150 customers come to your store. To model this example, you would enter U(50, 150) in the Quantity field of your daily pattern arrival.
User-defined – One of two types of prep need to occur on each part entering your process. 34% of the time the prep takes 8 minutes. 66% of the time it takes 14 minutes. To model this example, you would enter D2(34, 8, 66, 14) in the Time field of the Prep activity.
Close any currently open model and open the Lesson 1 – Call Center model. Double click the Perform Research activity and enter T(10,20,30) in the Time field.
Adding the time distribution will cause the time to vary between 10 and 30 minutes, with most times being around 20 minutes, for each entity that enters this activity.
Double click the arrival route (line between the Call entity and the Take Call activity). Enter D2(90,1,10,2) in the Quantity field. Then enter T(2,5,12) in the Repeat Every field.
90% of the time, a quantity of 1 call will arrive. 10% of the time, 2 calls will arrive together. Calls will arrive between 2 and 12 minutes apart, with the majority of arrivals occurring around 5 minutes apart.
Set this model to run 10 replications by clicking Simulation and selecting Options. Save this model as Lesson 2, then simulate it.
1. What is the average and standard deviation for the Level 2 resource?
2. What is the average and standard deviation for the Difficult calls?
3. Though you don’t see a typed distribution, where do you find randomness or variability in the Lesson 1 – Call Center model?
4. Think of a real world situation where you would use a triangular distribution. What questions would you ask to obtain the parameter values you need?
Though you can use estimates of what your randomized data values will be at any given time, it is always best to use real data to generate reliable results based on quantitative data. That is where Stat::Fit comes in (available on the Tools menu). Stat::Fit is a statistical tool which allows you to create statistical distributions based on actual measured data.
Let’s look at one example of why it is important to use Stat::Fit. One distribution which is fairly easy to understand is the Triangular distribution. It has 3 parameters: a minimum value, a mean value, and a maximum value. For example, suppose we have an activity that takes a minimum of .25 minutes, usually takes 2 minutes, but could take as long as 100 minutes. That is easily written as T(.25,2,100). However, if the data should actually be represented by a Lognormal distribution, the graph below shows where much of the time you could be getting wrong values if you used a Triangular distribution instead.
So taking the easy route (or using the easy distribution) may cost you in reliable results. Using collected data and Stat::Fit gives you confidence that you can depend on your output accuracy when introducing variability into your model.
For the next portion of our lesson, suppose you have collected data for the Perform Research activity, but you don’t know what distribution to use or how to get that data it into your model.
Close your current model and open Lesson 1 – Call Center. Click the Tools menu and select Stat::Fit. In the Document1: Data Table window, click in the column to the right of the number 1.
Enter the following numbers in the Data Table (you can select, copy and paste this data): 25 18 19 12 25 26 20 15 21 20 22 23 15 14 25 26 19 23 15 17 19 22 18 24 20
If you already have your data in another application like Excel, you can copy and paste your data points rather than typing them manually.
After entering your data, click the Auto::Fit button, select the unbounded option, and click OK.
To view the graph of any of the distributions simply click the distribution name on the left.
Load the Weibull distribution into the Perform Research activity by clicking Stat::Fit’s Export button, then click OK.
Exit Stat::Fit and double click the Perform Research activity. Highlight the 20 in the Time field. Right click your mouse and select Paste. This will paste the Weibull distribution you created in Stat::Fit into your model.
Continue with Lesson 3: Entity Arrivals
Lesson 3: Entity Arrivals
Entities are the things that move through your process. They include things like phone calls, patient’s, customer orders, raw materials, service requests, parts, etc. Entities come into your model through Arrival routes (with double headed arrows).
Close any open models and open Lesson 1 – Call Center. Double click on the arrival route connecting the Call entity to the Take Call activity.
A single Call arrives every 5 minutes. Using a Periodic arrival with a First time value of 0, the first call arrives immediately as the simulation begins.
Continuous – Entities will enter the model as soon as there is capacity to accept them at the first location (activity or storage) connected to the arrival. If the first activity has an input queue, it is ignored.
Daily Pattern – Entities arrive in a weekly (168 hours) repeating pattern, at times and quantities you specify on a given day of the week. If the start time and end time is different, the entities will arrive in a randomly distributed fashion during that block of time. The Quantity field may be a constant, distribution, or scenario parameter.
Ordered – Entities arrive according to the parameters established in the Order Signal route connected to it. This means a request must be made by an event downstream from the ordered arrival rather than from the arrival itself.
Periodic – Entities arrive at the interval indicated in the Repeat every field, in the quantity specified. Since all simulations start at midnight on Monday morning, that is when the first arrival occurs, unless you specify a value in the First time field in which case the arrival will be delayed by that amount of time. Each field may be a constant, distribution, or scenario parameter.
Scheduled – Entities arrive according to schedule you define using a numbered day (e.g. 1 st Monday, 3 rd Thursday). Each arrival is a one-time occurrence which the system does not repeat. The Quantity field may be a constant, distribution, or scenario parameter.
Daily Pattern Example
Let’s create a daily pattern arrival in which a quantity of 48 entities arrives between 8am and noon, then another 48 arrive between noon and 4pm.
Double click on the arrival route connecting the Call entity to the Take Call activity. Change the arrival Type to Daily Pattern and click Define Pattern. Then click New. In the Start time field enter 8:00 am. In the End time field enter 12:00 pm. In the Quantity field enter 48.
Click New and repeat the process for 12:00 pm to 4:00 pm.
Now copy the Monday pattern to Tuesday through Friday by clicking the Copy day button. Click Tuesday and then click Paste Monday. Repeat for Wednesday through Friday. Then click Close.
Each day, Monday through Friday, is divided into two blocks of 8am to noon, and noon to 4pm. In each of those 10 blocks a quantity of 48 calls will arrive, randomly distributed through each block.
Daily pattern arrivals (as well as scheduled arrivals and shifts) use a 24 hour clock. Up to now we have only been concerned with simulating straight working hours. As you will see shortly, this will impact how you setup your models.
Save this model as Lesson 3 and then simulate it.
1. What is the average cycle time for Difficult calls?
2. What is the utilization of the Level 2 resource?
3. Why has the utilization decreased?
4. Why did the animation stop during the simulation?
5. How many days were simulated?
6. How do you make the simulation run for an entire week?
7. If you change the arrival so all 96 entities arrive between 8:00am and 8:01 am, Monday through Friday, how does this change the results and why?
Continue to Lesson 4: Routings
Lesson 4: Routings
Routings are lines that connect the locations (activities, storages, etc.) in the model. Ten different kinds of routings allow for great flexibility in how entities move through a model. These routing types include
See The Logic of the Flow video tutorial on routing.
In the Lesson 1 – Call Center model there is only 1 routing type, the 3 percentage routes.
Note: The numbers 25% and 75% shown on the routes above are simply text labels used for clarity and have no affect on the actual percentages used.
These routes cause a specified percentage of the entities leaving a location to select that route when moving to the next location. With the exception of Create routes, no other routing type may be combined with percentage routes leaving a location. The sum of all percentage routes at a given location must equal 100%.
This is the time it takes the entity to move across the route to the new location. Any expression is valid.
The percentage of entities that should use this route. Only constants are allowed in this field.
This optional field allows you to rename an entity. If you have placed an icon in your model for this new entity, its name will appear in the drop down list and the name should be selected from that list rather than typed in. If no new icon exits, you may type a new name and the previous entity’s icon will continue to be used.
Unique statistics are kept for each entity named in the model. Thus, in the call center example, ProcessModel shows different statistics for Call and Difficult. When renaming an entity, all attributes and statistics are inherited from the previously named entity.
Since cycle time, the time an entity spends in the model, can only be accurately reported if the entity has left the model, stats are not collected until that time.
This route is used when you want to create additional entities to be processed. Often this route is used for parallel processing such as a customer placing an order which generates additional tasks such as data entry, credit approval, etc. In the example below the Truck entity would be considered the parent entity and the Pallet entity would be the child.
Create “after activity” or “before activity”
The new entity can be created before processing the activity from which originates, or after activity processing is complete.
This is the time it takes the entity to move across the route to the new location. Any expression is valid.
This is the number of entities to be created (0 – 9999). Any expression is valid.
Created Entity Name
The new entity must have a name given to it. If you have placed an icon in your model for this new entity, its name will appear in the drop down list and the name should be selected from that list rather than typed in. If no new icon exits, you may type a new name and the previous entity’s icon will continue to be used.
Attach routes are typically used in conjunction with Create routes. This route will attach one or more entities, known as child entities, to another single entity, known as a parent entity, which is waiting at the attach location. Once attached, the combined group of entities continues through the model as a single unit, with the parent entity’s graphic and attributes. Attributes of the child entity are masked by the parent and not accessible unless the entities are later detached.
It is best to either hold the attaching child entities in a storage, or make sure the child activity has an output queue of sufficient size to hold all waiting entities. That way if the parent and children somehow get out of sequence, the attach route won’t keep other waiting child entities from getting passed the entities first in line waiting for their parent.