Pro Model Simulation
Pro Model Simulation
in order to evaluate and improve system performance. Simulation provides a virtual method for doing system experimentation. Typical applications of simulation include: Work-flow planning Capacity planning Cycle time reduction Staff and resource planning Bottleneck analysis Inventory reduction Throughput analysis Cost reduction Productivity improvement Production scheduling Line balancing Batch size optimization Layout analysis Maintenance scheduling
Simulation analysis is appropriate if the following hold: Decisions are operational in nature Process is well defined and repetitive in nature Activities and events are interdependent and variable The cost of simulation analysis does not exceed potential cost reduction Cost of simulation analysis does not exceed experimentation on the actual system Benefits of Simulation approach Captures system interdependencies Accounts for variability in the process Is versatile enough to model both manufacturing and service processes Shows behavior over time Is less costly, time consuming, and disruptive than experimenting on the actual system Provides information on multiple performance measures Provides results that are easy to understand and communicate Runs in compressed time Forces attention to detail in a process
Simulation procedure Step 1: Define objective, scope, and requirements Step 2: Collect and analyze system data Step 3: Build and validate model Step 4: Conduct experiments Step 5: Analyze results and develop recommendations
Simulation system elements Entities, activities, resources, and controls. Entities Items processed through the system
Human/animate (customers, patients, passenger, etc.) Inanimate (Parts, documents, etc.) Intangible (calls, e-mail, etc.) Activities Tasks performed in the system Entity processing (check-in, treatment, either directly or indirectly on the inspection, fabrication, etc.) entities. Activities consume time Entity/resource movement (ride elevator, and use resources forklift travel, etc.) Resource adjustment (Machine setups) Maintenance & repair Resources May be required for performing Human/animate (operator, doctors, etc.) activities. Have characteristics Inanimate (equipment, tooling, etc.) such as, capacity, speed, cycle Intangible (information, power, etc.) time, reliability, etc. Controls Controls how, when, and where Production routing sequence activities are performed Work schedules Task prioritization System variability Type of variability Activity times Event arrivals Quantities Decisions Random behavior Discrete distribution Continuous distribution System variables Decision variables Independent variable Response variables Examples Service time, repair time Time between customer arrivals, time between failure Order quantity, batch size, number of workers absent Customer routing, accept/reject part, join queue Finite number of possible values (number of items in a lot, number of members in a group, etc. A range of values such as a time between arrivals, service time, travel distance, etc. Controllable variables, such as number of machines, number of windows Service time, processing time Variables that measure the system performance (metrics)
System performance metrics (Response variables) Flow time Average time it takes for an entity to be processed through the system Utilization Percentage of time resources are in productive use Waiting time Time spent waiting Queue/inventory levels Number of customers waiting or parts in storage Throughput Number of customers served, no. of parts produced
Promodel objects Object Entities Description Anything the model can process, such as parts, customers, patients. Fixed place where entities are routed for processing, waiting, decision making, or some other activity. Arrival parameters for the entities Important parameters Creating a record With New checked, click a graphic . Capacity and number of units With New checked, click a graphic icon and click anywhere in the layout. For a waiting line double click the icon, change object type to Queue and set other parameters.
Locations
Arrival
Arrival location, Click header Entity and select number of objects the arrival entity. per arrival, total Click header Location and number of select the location for arrival. arrivals, frequency Type INF for Occurrences indicating no limit for number of arrivals during the simulation. Enter inter-arrival time parameter for Frequency. E.g. for exponential time with mean 2 minutes, enter e(2) min. Process Click header Entity and select Entity, Location, an entity for processing. and operation Click header Location and select a location. Click header Operation and type operation logic. E.g.: wait N(2.4,.5) min Routing Click header Output and Output, select an entity for output Destination, Rule Click header Destination and select a location Click header Rule and set up one or more rules for routing the entity. Click below the last row to create alternative routing
Example 1: Bank with one teller; Arrival of customers follows exponential distribution with an average of one customer every 2 minutes. Service time follows normal distribution with an average of 2.4 minutes and a standard deviation of .5 minutes. Waiting line is limited to 7 customers. Simulate the operation from 11 a.m. to 1 p.m. Let the warm-up period be 2 hours. Flowchart
Arrival Entity = Customer Frequency = e(2) min Routing First 1 Teller Window Units = 1, Capacity = 1 Service time: N(2.4,.5) min Exit
Entity record:
Location records
If the location is a queue, change Queuing for output to FIFO under the Rules tab. Arrival record
******************************************************************************** * Arrivals * ******************************************************************************** Entity Location Qty Each First Time Occurrences Frequency Logic -------- ------------------- ---------- ---------- ----------- ---------- -----------Customer Teller_Waiting_Line 1 INF e(2) min
Simulation options
Results: Locations
Name Teller Waiting Line Teller Window Scheduled Time (HR) 2 2 Capacity 7 1 Total Entries 54.23 50.20 Avg Time Per Entry (MIN) 10.43 2.35 Avg Contents 4.72 0.98 Maximum Contents 7 1 Current Contents 5.03 0.97 % Utilization 67.49 98.30
Summary of average results: Lobby Total number of customers served = Average wait time for exited customers (minutes) = Average length of waiting line = Average wait time for all customers including ones still in the bank (minutes) = % of time waiting line is empty = % of time waiting line is full = Utilization of teller windows 49.23 9.09 + 2.32 = 11.41 minutes 4.72 customers 10.43 minutes 4.66% 17.24% 98.3%
Service Level Total customer arrivals = Total entries at the waiting line + Failed arrivals = 54.23 + 9.60 = 63.83 Service level = Total entries at the waiting line /Total customer arrivals = (54.23/63.83) x 100 = 84.96% Example 2: Same bank as before, but with two tellers and 40% of arriving customers first sit at a desk and fill out forms. Time to fill forms takes between 2.5 and 5.5 minutes. Assume total customers in the bank cannot exceed 13. Flowchart
Arrival Entity = Customer Frequency = e(2) min
Door Capacity
p = .4 =1 p = .6
Desk Capacity = 3 Service time: U(4,1.5) min Routing First 1 Teller_Waiting_Line FIFO, Capacity = 7 Routing First 1 Teller_Window Units = 2, Capacity = 1 Service time: N(2.4,.5)
Exit
******************************************************************************** * Locations * ******************************************************************************** Name Cap Units Stats Rules Cost ------------------- --- ----- ----------- --------------- -----------Door 1 1 Time Series Oldest, , Desks 3 1 Time Series Oldest, , First Teller_Waiting_Line 7 1 Time Series Oldest, FIFO, Teller_Window 1 2 Time Series Oldest, , First Teller_Window.1 1 1 Time Series Oldest, , Teller_Window.2 1 1 Time Series Oldest, , ******************************************************************************** * Entities * ******************************************************************************** Name Speed (fpm) Stats Cost ---------- ------------ ----------- -----------Customer 150 Time Series ******************************************************************************** * Processing * ********************************************************************************
Process Entity Location Operation -------- ------------------- -----------------Customer Door Customer Desks WAIT U(4, 1.5) min Blk Output ---- -------1 Customer Customer 1 1 1 Routing Destination ------------------Teller_Waiting_Line Desks Rule ---------0.600000 1 0.400000 Move Logic ------------
******************************************************************************** * Arrivals * ******************************************************************************** Entity Location Qty Each First Time Occurrences Frequency Logic -------- -------- ---------- ---------- ----------- ---------- -----------Customer Door 1 0 INF e(2) min
Results: Locations
Name Door Desks Teller Waiting Line Teller Window.1 Teller Window.2 Teller Window Scheduled Time (HR) 2 2 2 2 2 4 Capacity 1 3 7 1 1 2 Total Entries 61.43 26.50 61.50 34.90 27.47 62.37 Avg Time Per Entry (MIN) 0.02 3.85 0.70 2.34 2.36 2.35 Avg Contents 0.01 0.85 0.38 0.68 0.54 0.61 Maximum Contents 1.00 3.00 3.53 1.00 1.00 2.00 Current Contents 0.00 0.93 0.20 0.70 0.47 1.17 % Utilization 0.86 28.32 5.38 68.00 54.04 61.02
Summary of average results: Lobby Total number of customers served = Average wait time for exited customers (minutes) = Average length of waiting line = Average wait time for all customers including ones still in the bank (minutes) = % of time waiting line is empty = 61.20 0.27 + 0.44 = 0.71 minutes 0.38 customers 0.70 + 0.02 = 0.72 minutes 77.33%
% of time waiting line is full = % of time desks are empty = % of time desks are full = Utilization of teller windows: Window # 1 = 68.0%, Window #2 = 54.04%, Overall = 61.02% Service Level Total customer arrivals = Total entries at the door + Failed arrivals = 61.43 + 0.60 = 62.03 Service level = Total entries at the door/Total customer arrivals = (61.43/62.03) x 100 = 99.0%
0% 42.68% 5.64%
Example 3: Same bank as in example 2, but with an ATM and a drive-thru window. The waiting line for ATM is limited to 3 customers. For customers arriving at the lobby, assume 40%-40%20% for customer directly joining the queue, sit down to fill forms and joining the ATM waiting line, respectively. The time to complete the ATM transaction follows normal distribution with mean = 2 minutes, and standard deviation =.5 minutes. For the drive-through line, cars arrive according to exponential distribution with a mean of 5 minutes. Service time for drive-thru window is triangular with minimum of 1 minutes, mode of 2 minutes and maximum of 5 minutes. There are only two tellers serving the two teller windows inside the lobby of the bank and the drive-through window. Also, assume only three cars can wait in line for drive-thru service. In addition to other statistics, track the number of customers in the bank also. Flowchart
Arrival 1 Entity = Customer Frequency = e(2) min Increment Customers_in_bank
Door Capacity
p = .4 =1 p = .2
ATM_Line FIFO, Capacity = 3 ATM Units=1, Capacity =1 Service time: N(2,.5) min
p = .4
Desk Capacity = 3 Service time: U(4,1.5) min Routing First 1 Teller_Waiting_Line FIFO, Capacity = 7 Routing First 1 Teller_Window Units = 2, Capacity = 1 Service time: N(2.4,.5) min
Exit
Decrement Customers_in_bank
Exit
Decrement Customers_in_bank
Exit
******************************************************************************** * Locations * ******************************************************************************** Name ------------------Door Desk Teller_Waiting_Line Teller_window Teller_window.1 Teller_window.2 ATM_Line ATM DriveThru_Line DriveThru_Window Cap --1 3 7 1 1 1 3 1 3 1 Units ----1 1 1 2 1 1 1 1 1 1 Stats ----------Time Series Time Series Time Series Time Series Time Series Time Series Time Series Time Series Time Series Time Series Rules Cost --------------- -----------Oldest, , Oldest, , First Oldest, FIFO, Oldest, , First Oldest, , Oldest, , Oldest, FIFO, Oldest, , Oldest, FIFO, Oldest, ,
******************************************************************************** * Entities * ******************************************************************************** Name Speed (fpm) Stats Cost ---------- ------------ ----------- -----------Customer 150 Time Series Car 150 Time Series ******************************************************************************** * Resources * ******************************************************************************** Res Ent Name Units Stats Search Search Path Motion Cost ------------- ----- -------- ------ ------ ---------- -------------- -----------Shared_Teller 2 By Unit None Oldest Empty: 150 fpm Full: 150 fpm ******************************************************************************** * Processing * ********************************************************************************
Process Entity Location Operation Blk Output -------- ------------------- --------------------- -------Customer Door Inc Customer_In_Bank 1 Customer Customer Customer Customer Desk WAIT U(4, 1.5) min 1 Customer Customer Teller_Waiting_Line 1 Customer Customer Teller_window GET 1 Shared_Teller Wait N(2.4,.5) min FREE 1 Shared_Teller Dec Customer_In_Bank 1 Customer Customer ATM_Line 1 Customer Customer ATM Wait N(2,.5) min 1 Customer Dec Customer_In_Bank Car DriveThru_Line 1 Car Car DriveThru_Window Get 1 Shared_Teller WAIT T(1,2,5) min Free 1 Shared_Teller 1 Car Routing Destination Rule ------------------- ---------Teller_Waiting_Line 0.400000 1 Desk 0.400000 ATM_Line 0.200000 Teller_Waiting_Line FIRST 1 Teller_window FIRST 1 Move Logic ------------
EXIT
FIRST 1
******************************************************************************** * Arrivals * ******************************************************************************** Entity Location Qty Each First Time Occurrences Frequency Logic -------- -------------- ---------- ---------- ----------- ---------- -----------Customer Door 1 0 INF e(2) min Car DriveThru_Line 1 0 INF e(5) min ******************************************************************************** * Variables (global) * ******************************************************************************** ID Type Initial value Stats ---------------- ------------ ------------- ----------Customers_In_Bank Integer 0 Time Series
Results: Locations
Name Door Desk Teller Waiting Line Teller window.1 Teller window.2 Teller window ATM Line ATM DriveThru Line DriveThru Window Scheduled Time (HR) 2 2 2 2 2 4 2 2 2 2 Capacity 1 3 7 1 1 2 3 1 3 1 Total Entries 60.03 24.53 48.53 27.97 21.40 49.37 11.50 11.70 23.37 23.57 Avg Time Per Entry (MIN) 0.01 3.84 1.09 2.77 2.90 2.82 0.22 2.00 2.07 3.00 Avg Contents 0.01 0.78 0.47 0.64 0.52 0.58 0.03 0.19 0.44 0.59 Maximum Contents 1.00 2.93 3.60 1.00 1.00 2.00 1.23 1.00 2.47 1.00 Current Contents 0.03 1.10 0.20 0.57 0.43 1.00 0.00 0.10 0.43 0.70 % Utilization 0.63 26.14 6.69 64.46 51.99 58.22 0.87 19.40 14.80 59.23
Results: Resources
Name Shared Teller.1 Shared Teller.2 Shared Teller Units 1 1 2 Scheduled Time (HR) 2 2 4 Number Times Used 36.03 36.57 72.60 Avg Time Per Usage (MIN) 2.46 2.44 2.44 % Utilization 73.76 74.00 73.88
Results: Variables
Name Customers In Bank Total Changes 120 Avg Time Per Change (MIN) 1.00 Minimum Value 0.00 Maximum Value 7.27 Current Value 2.43 Avg Value 2.64
Service level: Total customer arrivals = Total entries at the door + Failed arrivals = i.e. = 60.03 + 0.40 = 60.43 Service level = Total entries at the door /Total customer arrivals = (60.03/60.43) x 100 = 99.3% Total car arrivals = Total entries at the drive-through line + failed car arrivals = 23.37 + 1.00 = 24.37 Service level for car arrivals = (23.37/24.37) x 100 = 95.90%
Example 4: Consider the same bank as in example 3. Suppose that 20% of the arriving customers are business customers, and the remaining 80% are regular customers. Also, assume that the service time for business customers will be according to exponential distribution with a mean of 20 minutes and no change in service time for the regular customers. Changes needed: 1. Define an entity Attribute for Customer Type 2. Define a User-defined distribution for the probability of customer type 3. Stamp each customer arrival with the Customer type attribute 4. Code the service time at teller window using Customer Type attribute 1. Define an entity Attribute for Customer Type
3. Stamp each customer arrival with the Customer type attribute in the Arrival Table
4. Code the service time in the Process Table at the Teller window location using Customer Type attribute
Start new block Check this box to signal the beginning of a new routing block. Checking this box will place a number in the Blk field for that record. First Available By turn Until full Probability User condition Most available Random Longest Unoccupied If Send If Join Request Routing is to the first available location in the order they are listed. Routing rotates through the locations in the list. Routing is to a single location until it is full; then it is switched to the next location, and so on. Routing is according to the given probabilities. Routing is based on the condition provided. Routing is to the location with most available capacity. Routing is at random. Routing is to the location that was unoccupied the longest. Routed based on a SEND request from a location to the destination location. Selects a location whenever a JOIN request is issued at that location. Entities routed with the JOIN routing rule are not actually sent to their destination until a JOIN statement is encountered at the destination location.
Advanced commands Three commands for using and releasing resources: Get/Free Syntax samples
GET GET GET GET GET {<quantity>} <resource> {,<priority>} {AND or OR {quantity} <resource> {,<priority>}...} Res1 3 Res1, 5 2 Res1OR 3 Res2 Res1, 3 AND (Res2 OR Res3)
Description: Captures a specified number of resources as they become available. A resource captured with the GET statement is released with a FREE statement. Every GET must have a corresponding FREE or an error occurs when the entity exits the system. Use Syntax samples USE {<quantity>} <resource> {,<priority>} FOR <time> {AND or OR {<quantity>} <resource> {,<priority>} FOR <time>... } USE 2 Res2, 5 FOR 4:23:03 USE 2 Res1 FOR 2.0 min OR 3 Res2 FOR 1.5 min USE Res1, 3 FOR 1 hr AND (Res2 FOR 5 OR Res3 FOR 5) Description: Captures a resource or combination of resources as each resource becomes available. Once the resource has been captured it is used for the specified amount of time, and then freed when the specified duration is over. Jointly Get/Free ALL Syntax samples JOINTLY GET {<quantity>} <resource> {,<priority>} {AND or OR {<quantity>} <resource> {,<priority>}} JOINTLY GET 3 Res1,5 JOINTLY GET 2 Res1 OR 3 Res2 JOINTLY GET Res1,3 AND (Res2 OR Res3) Description: Captures a specified number of resources when that number of resources is available. When capturing multiple resources, none of the resources will be captured until all are available. The command Free ALL can be used to free all the resources.