Queueing ToolPak 4.0

Queueing ToolPak, version 4

The Queueing ToolPak is a set of MS Excel functions that perform basic calculations for waiting line analysis. Once you have installed the Queueing ToolPak on your computer you can use these functions as you would any other Excel function.

List of functions

Function wizard

Arguments

Assumptions

Tutorial 1

Tutorial 2

Error messages

Glossary

Credits

Installation

Direct your web browser to http://www.bus.ualberta.ca/aingolfsson/QTP/download.htm for installation instructions.


List of Functions

QTPMMS_ Functions

QTPMMS_TrafficIntensity: Average traffic intensity.

QTPMMS_Util: Average server utilization.

QTPMMS_L: Average number of customers in system.

QTPMMS_Lq: Average number of customers in queue.

QTPMMS_W: Average time in system.

QTPMMS_Wq: Average time in queue.

QTPMMS_PrEmpty: Probability that system is empty.

QTPMMS_PrWait: Probability that a customer will have to wait.

QTPMMS_PrFull: Probability that a the system is full (and arriving customers do not enter).

QTPMMS_PrState: Probability of observing the system in a particular state.

QTPMMS_ServiceLevel: Probability that a customer will wait less than some threshold time.

QTPMMS_MinAgents: Minimum number of servers needed to achieve a specified service level, assuming that system capacity is fixed.

QTPMMS_MinServers: Minimum number of servers needed to achieve a specified service level, assuming that queue capacity is fixed.

QTPGGS_ Functions

QTPGGS_TrafficIntensity: Average traffic intensity.

QTPGGS_Util: Average server utilization.

QTPGGS_L: Average number of customers in system.

QTPGGS_Lq: Average number of customers in queue.

QTPGGS_W: Average time in system.

QTPGGS_Wq: Average time in queue.

QTPGGS_PrWait: Probability that a customer will have to wait.

Functions Provided for Backward Compatibility

QTPMMS_Po: Same as QTPMMS_PrEmpty, i.e., probability that system is empty. Note: the "o" is an "oh," not a zero.

QTPMMS_PrBalk: Same as QTPMMS_PrFull, i.e., the probability that the system is full (and arriving customers do not enter).

QTPMMS_Version: Same as QTP_Version, i.e., returns the version number for the Queueing ToolPak.

Other Functions

QTP_NORMSDIST: Calculates the cumulative distribution function for a standard normal random variable.

QTP_Version: Returns the version number for the Queueing ToolPak.

Home


Function Wizard

Using the Function Wizard

The function wizard is a built-in Excel feature. To invoke it, click the [image] icon in the standard toolbar just below the menu bar. The function wizard lists function categories and function names. If you choose the Queueing ToolPak function category you will see a list of all the functions provided by the Queueing ToolPak. Clicking the name of a function will show its syntax and a brief description of what it calculates.

The formula palette is another built-in Excel feature that is useful when you remember the name of a function but not its arguments. Enter the equals sign followed by the name of the function in an empty cell. Then click the [image] icon just above the column headings of the spreadsheet. If you typed the name of the function correctly, you will see a dialog box listing the arguments for the function. Enter the arguments and click "OK."


Arguments

Queueing Function Arguments

The following lists and explains all the arguments used in the functions in the Queueing ToolPak. The arguments are classified as common (required by almost all functions), optional, and advanced (only required by some functions).

Common Arguments

All functions require the Arrival Rate and Service Rate arguments and most require the Servers argument.

Arrival Rate: Average rate at which customers arrive to the system. Has units of "customers / time unit". The time unit used must be the same as for Service Rate. The Arrival Rate must be greater than or equal to zero.

Service Rate: The average rate at which an individual server can serve customers. Has units of "customers / time unit" and is the reciprocal of the average time it takes to serve one customer. The time unit used must be the same as for the Arrival Rate. The Service Rate must be greater than zero.

Servers: The number of servers available to serve customers entering a queueing system. The number of servers must be a whole number that is greater than or equal to one.

Important: The first three arguments must satisfy:

Arrival Rate / (Service Rate * Servers) < 100%

This is required for the queueing system to be stable, that is, to prevent the queue from growing indefinitely.

(If the optional Queue Capacity argument is set to a finite value, then the condition above is not necessary -- the system will be stable regardless.)

Optional Arguments

Queue Capacity: The maximum number of customers that can wait in a queue. Must be a whole number that is greater than or equal to zero.

Example: If a call center has 20 lines and 16 agents on duty, then 4 callers can be kept on hold and the Queue Capacity is 4. It is assumed that customers that arrive when the queue is filled to capacity will balk. If the Queue Capacity argument is "infinity", then it is assumed that there is no limit on the capacity of the queue.

System Capacity: The total number of customers that can be in the system, either waiting or being served. Must be a whole number that is greater than or equal to one.

Note that System Capacity = Queue Capacity + Servers

Representing infinite capacity: if the optional Queue Capacity and System Capacity arguments are omitted then they are assumed infinite. If these arguments are provided, then an infinite value can be represented by the string "Infinity."

If the value of the argument is typed inside the function, such as QTPMMS_L(10,12,1,"Infinity"), then the quotation marks around "Infinity" are needed. If "Infinity" is typed in a cell and a reference to that cell is used as an argument to a QTP function, such as QTPMMS_L(10,12,1,A1), then the quotation marks are not needed.

Instead of "Infinity" one can use any string that begins with "inf", "Inf" or "INF".

Advanced Arguments

Threshold Time: A threshold time is used to specify a level of service of the form "80% of customers should wait 20 seconds or less before being served." In this example, the Threshold Time is 20 seconds.

The Threshold Time must be expressed in the same time units as used for the Arrival Rate and Service Rate. If that time unit is an hour, then a 20-second Threshold Time can be expressed as 20 / (60 * 60)

Service Level: A probability used to specify a level of service in the form "80% of customers should wait 20 seconds or less before being served". In this example, the Service Level is 80% or 0.8. The Service Level must be greater than or equal to zero and less than one.

State: The number of customers in a system, including both customers being served and customers waiting. The State must be a whole number that is greater than or equal to zero.

The next two arguments are required by the QTPGGS functions.

StDevArrivals: The standard deviation of the distribution of interarrival times.

StDevService: The standard deviation of the distribution of service times.

The following argument is only needed for the QTP_NORMSDIST function.

z: z-score for which the cumulative distribution function for a standard normal random variable is required.

Function Wizard


Assumptions

The functions in the Queueing ToolPak fall into two categories.

QTPMMS Functions

Functions in the first category have names that begin with "QTPMMS_" and are based on the following assumptions.

  • Arrival Process: Arrivals are assumed to come from a stationary Poisson process. Two equivalent ways of saying this are (1) the number of arrivals in a fixed time interval is Poisson distributed, or (2) the times between arrivals are exponentially distributed.
  • Waiting Room: Customers wait in a single queue (which may be spatially dispersed). It is possible to specify a finite capacity for the queue; otherwise the queue is assumed to have unlimited capacity.
  • Service Process: Customers are served first-come-first-served by one of several parallel and identical servers. Times to complete service are exponentially distributed.

The functions may provide adequate approximations even when some of these assumptions do not hold exactly, but strictly speaking these assumptions are required for the functions to give valid results.

A queueing system that satisfies these assumptions is commonly referred to as an M/M/s system, where the first "M" signifies a "memoryless" arrival process, the second "M" signifies a memoryless service process, and "s" is the number of servers. If the queue has a capacity C, then the system is denoted M/M/s/s+C.

More detail about the formulas for an M/M/s/s+C system can be found in survey management science textbooks (see http://www.spreadsheetanalytics.com for one list of such books). The mathematical derivations can be found, for example, in Fundamentals of Queueing Theory, 3rd Edition, by Donald Gross and Carl Harris, John Wiley & Sons, 1997.

QTPGGS Functions

Functions in the second category have names that begin with "QTPGGS_". These functions are based on the following more general assumptions.

  • Arrival Process: Times between arrivals ("interarrival times") are independent, but can follow any distribution.
  • Waiting Room: Customers wait in a single queue (which may be spatially dispersed). The queue is assumed to have unlimited capacity.
  • Service Process: Customers are served first-come-first-served by one of several parallel and identical servers. Times to complete service can follow any distribution.

A queueing system that satisfies these assumptions is referred to as a G/G/s system, where the "G"s signify that both the interarrival time distribution and the service time distribution are "General," i.e., they are not limited to an exponential distribution or any other specific distribution.

Exact results are difficult to compute for G/G/s systems, and require detailed knowledge of the distribution of interarrival times and the distribution of service times. Instead, the functions in this category provide approximate values and require only the mean and standard deviation of the interarrival time distribution and the service time distribution. The approximations used are described in the following articles:

1) Whitt, W. (1993) "Approximations for the GI/G/m Queue," Production and Operations Management, 2(2): 114-161.

Equation 2.24 is used for QTPGGS_Wq. QTPGGS_W, QTPGGS_Lq, and QTPGGS_L are then determined from QTPGGS_W = QTPGGS_Wq + 1/(Service Rate), QTPGGS_Lq = (Arrival Rate) * QTPGGS_Wq, and QTPGGS_L = (Arrival Rate) * QTPGGS_W

2) Whitt, W. (2003) "A Diffusion Approximations for the G/GI/n/m Queue," Operations Research, forthcoming.

Equations 1.1, 4.8, and 4.12 are used for QTPGGS_PrWait.


Tutorial 1

In this tutorial, we will go through a performance analysis of QTP Gas Emporium. This is a fictional gas station, illustrated above, that we will use to demonstrate the use of the Queueing ToolPak.

Note: This tutorial illustrates the analysis of a so-called "Markovian queueing system." All functions for analysing such systems have names that begin with "QTPMMS_". A separate tutorial (Tutorial 2) illustrates the analysis of more general types of queueing systems.

To go through the tutorial, you need to have Microsoft Excel open and QTP version 4 installed. You may wish to print this tutorial before you start. The material in this tutorial becomes progressively more conceptually challenging. If you are new to the analysis of waiting lines you may wish to go through the first part of the tutorial and then stop when the going gets rough and return to the tutorial later when you have become more comfortable with the concepts.

The tutorial assumes that you are comfortable with the following Excel operations:

  • Entering formulas in cells.
  • Formatting cells to display numbers as percentages and controlling how many decimal places are displayed.
  • Copying formulas to a cell range.
  • Graphing with the graph wizard.
  • Using one-way data tables.

The tutorial was written using Excel 2002.

QTP Gas Emporium has 4 pumps, as shown in the picture above. Arriving cars intending to purchase gas enter the station as long as less than 5 cars are waiting for service (in addition to 4 cars at the pumps). If 5 cars are waiting for service, then arriving cars will balk (not enter the station).

In the terminology of queueing theory, the 4 pumps are the servers, the arriving cars are the customers, and the queue capacity is 5.

To analyze this system using the Queueing ToolPak, one needs to measure the arrival rate and the service rate. Analysis of company records shows that the average number of cars served between 5 and 6 PM on weekdays is 50 (this is the arrival rate). A recent study showed that a car ties up a pump while getting gas for an average of 3 minutes (this is not the service rate -- more on that later).

Continue


Tutorial 1 - Data Entry

The first step in analyzing the performance of QTP Gas Emporium is to enter the data.

Enter the Arrival rate, Number of servers and Queue Capacity into a blank spreadsheet as shown above. We have used bold font to identify numbers that were enter directly, to distinguish them from numbers that are calculated with formulas. We have also included labels (such as "Arrival Rate") in the spreadsheet as reminders of what each number represents. The remainder of the tutorial will give you explicit instructions on what formulas and numbers to enter where, but it is up to you whether you also format numbers in bold face and enter explanatory labels on your spreadsheet.

The information above did not provide a service rate directly. Instead, we were told that the average time that a customer (a car) ties up a server (a pump) is 3 minutes. This is the service time per customer, not the service rate (a rate is a quantity per unit time). Enter the service time in cell E3 as shown.

To convert the service time to a service rate, enter the formula "=60/E3" in cell B2. The result is a service rate of 20 cars per hour. This means that on average, each of the 4 pumps could serve 20 cars per hour if the pump was never idle. Note that the formula you entered performed two conversions:

  1. From a service time to a service rate (by taking the inverse of the quantity in cell E3)

  2. From minutes to hours (by multiplying with 60).

A common error in analyzing waiting lines is to use inconsistent time units, which typically leads to nonsensical analysis. To avoid this, it is good practice to explicitly state the time units of the arrival and service rates you are using, as shown in the spreadsheet above.

Back | Continue


Tutorial 1 - Performance Analysis

Now that we have entered the basic parameters that describe the queueing system we can begin to analyze its performance.

Enter the formula "=QTPMMS_Util(B1, B2, B3, B4)" in cell B6 and press Enter. Then select cell B6 and click the "%" icon on the formatting toolbar. Your spreadsheet should now look as follows:

The QTPMMS_Util function calculates the server utilization. A server utilization of 62% means that on average, each pump can be expected to be occupied 62% of the time and idle (or in other words, available) 100% - 62% = 38% of the time.

The cell references B1, B2, B3, and B4 are the arguments to the QTPMMS_Util function. They are, in order, the arrival rate, the service rate, the number of servers, and the queue capacity.

Different functions in the Queueing ToolPak have different arguments. The function wizard provides an easy way to see what functions are available in the Queueing ToolPak and what their arguments are. To do so, select the cell where you want the formula entered and then click the function wizard icon on the standard toolbar (the "fx" icon). Choose "Queueing ToolPak" in the function category list. This will display all the functions in the Queueing ToolPak. Selecting one of those functions will show what arguments it takes (for example if QTPMMS_Util is selected, then QTPMMS_Util(Arrival_Rate, Service_Rate, Servers, Queue_Capacity) will be displayed).

Time-saving hint: Suppose you remember the name of a function but not its arguments. Select a cell, enter an equals sign and the name of the function, and then click the "fx" icon. This will open a dialog box showing the arguments to the function -- assuming you typed its name correctly!

Edit the formula in cell B6 to read "=QTPMMS_Util(-1, B2, B3, B4)" and press Enter. Cell B6 should now display the diagnostic error message that "#arrival rate < 0," i.e., the arrival rate argument is less than zero. Experiment with entering other invalid arguments, for example replacing B3 with 4.5. After you have finished experimenting, retype the correct formula "=QTPMMS_Util(B1, B2, B3, B4)" .

Next, enter the following four formulas in the cells indicated (click on the function names below for more information on each function):

Cell	Formula
B7 =QTPMMS_TrafficIntensity(B1,
B2, B3, B4)
B8 =QTPMMS_Lq(B1, B2, B3, B4)
B9 =QTPMMS_L(B1, B2, B3, B4)
B10 =QTPMMS_Wq(B1, B2, B3, B4)
B11 =QTPMMS_W(B1, B2, B3, B4)

Your spreadsheet should now look as follows:

These five calculations can be used to illustrate some fundamental relationships:

  • In cell D9, enter the formula "=B3*B6+B8" or in words, the "the number of servers times the average server utilization plus the average number of cars in queue." This quantity should exactly equal the average number of cars in the system (cell B9).

  • In cell D11, enter the formula "=B10+E3/60" or in words, the "average time in queue plus average service time (measured in hours)." As you might expect, this quantity should exactly equal the average time in system (cell B11).

Here are three more formulas to enter.

Cell Formula
B13 =QTPMMS_PrEmpty(B1, B2, B3, B4)
B14 =QTPMMS_PrWait(B1, B2, B3, B4)
B15 =QTPMMS_PrFull(B1, B2, B3, B4)

After entering the formulas, select the range B13:B15 and format it as percentages with two decimal places. Your spreadsheet should then look as follows:

Press "ctrl" and "~" together to switch to formula view, which is useful for checking your work:

What do the probabilities you calculated mean?

  • There is a 7.51% probability that an observer that arrives at a random instant finds the system empty of customers.

  • There is a 30.66% probability that such an observer finds the system in a state where an arriving customer would have to wait, i.e., all the pumps are occupied.

  • There is a 1.17% probability that an arriving potential customer finds the system with 5 customers already waiting. As a result, the arriving potential customer will not enter the system to become an actual customer, i.e., he will balk.

The QTPMMS_PrState function may help you gain a better understanding of the above three probabilities. The state of a queueing system (at least for so-called Markovian queueing systems) is the number of customers in the system. There can be at most 9 customers in the system we are analyzing (4 cars at the pumps and 5 cars waiting). Enter the numbers 0, 1, 2, ..., 10 in the range A18:A28. Then enter the formula "=QTPMMS_PrState(A18, $B$1, $B$2, $B$3, $B$4)" in cell B17 and copy this formula to the range B19:B28. This will calculate the probability that an observer arriving at a random instant sees 0, 1, 2, ..., 10 customers in the system. Format the probabilities as percentages and use the chart wizard to plot them, for example using a column chart. Your spreadsheet should then look something like this:

Note that cell B27 is blank. This is because the QTPMMS_PrState function returns nothing for states that are higher than the maximum number of customers in the system.

You can now check the following facts by making side calculations in the spreadsheet:

  • The state probabilities add up to exactly 100%.

  • The probability of the system being in state 0 is the same as the probability of the system being empty (cell B13 equals cell B18).

  • The sum of the probabilities of the system being in state 4 or higher equals the probability that a customer has to wait (cell B14 equals the sum of cells B22 to B27).

  • The probability of the system being in state 9 equals the probability that a potential customer will balk (cell B15 equals cell B27).

Note: The QTPMMS_PrWait function calculates the probability that an arriving customer enter the system and then waits for service. The probability that an arriving customer has to wait for service, given that (s)he enters the system (does not balk) can be calculated as (QTPMMS_PrWait - QTPMMS_PrFull)/(1 - QTPMMS_PrFull).

Now, it is time to revisit an assumption we have tacitly made up to now, namely that the arrival rate of 50 cars per hour that we used is appropriate. In fact, it is not, because it represents the average number of cars per hour that actually enter the system, rather than balk. This is because the company records only include customers that were actually served -- they do not include customers that arrived intending to purchase gas, but decided to go elsewhere when they saw that 5 cars were already waiting.

We will call the rate at which customers enter the system the effective arrival rate. In contrast, we will use the term actual arrival rate to refer to the rate at which customers arrive to the system, intending to enter it. The actual arrival rate includes customers that decide not to enter the system because of the number of customers waiting (i.e., customers who balk). Therefore, the actual arrival rate will always be larger or equal to the effective arrival rate.

All of the Queueing ToolPak functions require the actual arrival rate as an argument, rather than the effective arrival rate. To obtain the actual arrival rate from the effective arrival rate requires a bit of "reverse engineering" which we now describe.

Imagine for a moment that the actual arrival rate is 50 cars per hour. Then we have already calculated that the probability of balking will be 1.17%. Therefore, the effective arrival rate will be 50*(1-0.017) = 49.42 cars per hour. Enter the formula "=B1*(1-B15)" in cell E5 to verify this. Now, you can experiment with the (unknown) actual arrival rate in cell B1 and observe what the resulting effective arrival rate will be in cell E5. Your goal is to make the effective arrival rate equal to 50. A bit of trial and error should convince you that the desired actual arrival rate is 50.638 cars per hour. (Note: it is possible to use Excel’s Goal Seek or Solver to do the work for you). Enter this value in cell B1. Observe that the performance measures you have calculated change slightly as a result of this. Your spreadsheet should now look like this, in formula view:

Back | Continue


Tutorial 1 - Sensitivity Analysis

Now that you have constructed a basic model to analyze the performance of QTP Gas Emporium, you can use it to explore how sensitive the performance of the system is to changes in the design and operation of the facility, as well as external changes. We will go through one example of how this can be done.

The queue capacity of 5 cars may be an approximation of reality. The number of cars that an arriving potential customer will tolerate without balking depends on several factors, including the physical space available for cars to wait and the alternatives available to customers. Let us explore how the performance of the system changes when we change the assumed queue capacity. Specifically, let’s see how the probability of a customer having to wait varies as the queue capacity changes.

To do this, we will use a one-way data table. Enter the formula "=B14" in cell I2. Enter the numbers 0, 1, 2, ..., 10 in the range H3:H13. Then highlight the range H2:I13, choose the "Table ..." command from the "Data" menu, enter "B4" for the "Column Input Cell," leave the "Row Input Cell" blank, and press Enter. The results should look as follows:

Observe that the probability of waiting increases as the queue capacity increases. This happens because as the queue capacity increases, fewer potential customers balk, so more customers enter the system. However, there is a finite supply of potential customers (the actual arrival rate of 50.638 cars per hour) and therefore the probability of waiting will eventually stabilize at a limiting value as the queue capacity becomes larger and larger. The Queueing ToolPak provides two ways to calculate the limiting value of the probability of waiting. Either replace the formula in cell B14 with "=QTPMMS_PrWait(B1, B2, B3, "Inf")" or with "=QTPMMS_PrWait(B1, B2, B3)". In other words, an infinite queue capacity can be specified either by entering "Inf" for the queue capacity argument or by leaving the queue capacity argument out altogether. "INF" or "Infinity" or any other string that begins with the letters "INF", "Inf", or "inf" will also work.

Back | Continue


Tutorial 1 - Design

We end this tutorial by introducing three additional functions that allow you to design a queueing system to achieve a specified level of service at the lowest possible cost.

Suppose that the owner of QTP Gas Emporium would like to ensure that 90% of the customers that enter the system wait less than 30 seconds before gaining access to a pump.

First, let us evaluate the current situation. The 30-second threshold time must be converted to hours (since the arrival and service rates are per hour). Thirty seconds equals (30 sec.)(1 min./60 sec.)(1 hour/60 min.) = 30/3600 hours. Enter "=30/3600" in cell B30 and "=QTPMMS_ServiceLevel(B30, B1, B2, B3, B4)" in cell B31. You will see that in the current system, 76.68% of customers who enter the system wait 30 seconds or less, while 100% - 76.68% = 23.32% wait longer.

Suppose that it is possible to add more pumps, but that each additional pump consumes one of the spaces in the queue. That is, the system capacity (number of servers + queue capacity) is fixed at 9. Under these assumptions, the QTPMMS_MinAgents function will tell you the smallest number of pumps needed to achieve the desired level of service.

Enter "0.90" in cell B32 and enter "=QTPMMS_MinAgents(B30, B32, B1, B2, 9)" in cell B33. The QTPMMS_MinAgents function should return 5. You can enter 5 in cell B3 and 4 in cell B4 to verify that if the number of pumps is increased by one and the queue capacity decreased by one, the service level rises from 76.68% to 91.80%, meeting the 90% objective.

The QTPMMS_MinServers function is similar to the QTPMMS_MinAgents function, except that it assumes that the number of servers can be changed without affecting the queue capacity. An airline check-in counter is an example of a situation where this assumption is appropriate.

Your spreadsheet should now look like this (columns H and I have not been included):

If you have successfully followed all the steps this far, you are well on your way to learning how to analyze waiting lines. Well done!

Back | Return to Start


Tutorial 2

In this tutorial, we will go through a performance analysis of the check-in process for QTP Airlines. The layout of the check-in area at one of the airports served by this fictional airline is illustrated above.

Note: This tutorial illustrates the approximate analysis of "non-Markovian queueing systems." All functions for analysing such systems have names that begin with "QTPGGS_". A separate tutorial (Tutorial 1) illustrates the analysis of simpler "Markovian queueing systems." We recommend completing Tutorial 1 before this one.

To go through this tutorial, you need to have Microsoft Excel open and QTP version 4 installed. This tutorial was written using Excel 2002.

The check-in area has ten check-in counters and five automated check-in terminals, as shown in the picture above. During the busiest part of the day, agents staff all ten check-in counters and an average of 480 passenger groups arrive per hour. (A passenger group consists of people that check in together. A group could consist of one person.) Seventy percent of the groups line up to be served by an agent and the other thirty percent use the automated check-in terminals. For simplicity, we assume that passenger groups decide how they are going to check in (at a counter or using a terminal) before they come to the airport.

In queueing theory terms, the check-in area can be viewed as two separate systems, one with human agents as servers and the other with computer terminals as servers. In both systems, the customers are arriving passenger groups.

A recent study measured the time required for check-in by several passenger groups. The results indicate that the average time required for check-in was 1.75 minutes for groups served by agents and 1 minute for groups using the automated check-in terminals. The standard deviation of the check-in time was 2 minutes for groups served by agents and 0.5 minutes for groups using the automated check-in terminals. Check-in times for groups using the automated check-in terminals were shorter and less variable because many of these groups consisted of frequent travellers, traveling alone with no luggage to check.

Continue


Tutorial 2 - Data Entry

The first step in analyzing the check-in process is to enter the available data, as shown below.

It is important to choose an appropriate time unit and use it consistently throughout the analysis. As you can see, from row 8 down, a minute is used consistently as the time unit.

It is good practice to distinguish between spreadsheet cells that contain numbers (the "data") and cells that contain formulas. We have done this by using boldface font for cells that contain numbers.

Converting the data into a format that is suitable for the QTP functions requires the following preliminary calculations.

  • Fraction of total arrivals: We have entered 30% in cell C2. In cell B2, we entered the formula "=1-C2". We entered a formula instead of a number in cell B2 to facilitate later analysis where the fraction of total arrivals that use the check-in terminals is varied.

  • Arrival rate (per hour): Cell B3 uses the formula "=$D$3*B2" to calculate the arrival rate, per hour, to the check-in agents system. This formula can be copied to cell C3 to calculate the arrival rate, per hour, to the check-in terminals system.

  • Avg. interarrival time: This is the average time between successive arrivals. Cell B4 uses the formula "=60/B3" to calculate this average time, in minutes. This formula can then be copied to cell C4.

  • Arrival rate (per minute): Enter "=1/B4" in cell B8 to calculate the arrival rate, per minute, to the check-in agents system. Copy this formula to cell C8 to calculate the arrival rate, per minute, to the check-in terminals system.

  • Service rate: Enter "=1/B6" in cell B9 and copy this formula to cell C9, to calculate service rates per minute.

  • Stdev. arrivals: The QTP functions that we will be using will require the standard deviation of the interarrival time distribution as input. This information is not available to us. A reasonable default assumption is that the standard deviation of the interarrival times equals the mean interarrival time, which we have already calculated. To allow flexibility in further analysis, we have entered the assumed coefficient of variation (= standard deviation / mean) of the interarrival time distribution in cells B5 and C5. We can then calculate the standard deviation of the interarrival time distribution for arrivals to the check-in agents in cell B11 as "=B4*B5" (= mean * coefficient of variation). This formula can then be copied to cell C11.

We have organized the arrival rate, service rate, number of servers, the standard deviation of the interarrival times, and the standard deviation of the service times in a contiguous block of cells (starting in row 5), because these are the five arguments that will be needed by the QTP functions we will be using. It is not necessary to do this, but it will make it easier to enter some of the later formulas.

Back | Continue


Tutorial 2 - Performance Analysis

Tutorial - Performance Analysis

Now that we have entered the basic parameters that describe the queueing system we can begin to analyze its performance.

Enter the following formulas in the cells indicated. Click on the function names for more information on each function. Be careful to enter the two commas shown after "B10." We will discuss why this is necessary in a moment.

Cell Formula
B14 =QTPGGS_Util(B8, B9, B10,, B11, B12)
B15 =QTPGGS_TrafficIntensity(B8, B9, B10,, B11, B12)
B16 =QTPGGS_Lq(B8, B9, B10,, B11, B12)
B17 =QTPGGS_L(B8, B9, B10,, B11, B12)
B18 =QTPGGS_Wq(B8, B9, B10,, B11, B12)
B19 =QTPGGS_W(B8, B9, B10,, B11, B12)
B20 =QTPGGS_PrWait(B8, B9, B10,, B11, B12)

These formulas calculate various performance measures for the check-in agents system. Copy these formulas to column C to calculate the same performance measures for the check-in terminals system.

Your spreadsheet should now look as follows:

All of the functions we entered in column B have the same argument list, namely "B8, B9, B10,, B11, B12." The first three arguments are the arrival rate, service rate, and number of servers. The fourth argument is the queue capacity, but we leave this blank (by typing two commas after "B10") to indicate that there is no limit on how many people can wait simultaneously. Alternately, we could enter "INF" (for "infinite") between the two commas. The last two arguments are the standard deviation of the interarrival times and the standard deviation of the service times.

Technical note: If you enter a number (or a reference to a cell containing a number) for the queue capacity argument to one of the QTPGGS_ functions, you will get the message that this functionality has not yet been implemented in QTP. We included this argument for consistency with the QTPMMS_ functions and to make it possible for future versions of QTP to calculate performance measures for non-Markovian queueing systems with finite queue capacity.

System wide measures

In addition to performance measures for the two "subsystems" (the agent system and the terminal system) it is useful to calculate measures for the entire check-in system. We can calculate the average number in queue and the average number in system for the entire system simply by adding the corresponding quantities for each of the two subsystems. We can also calculate the average wait in queue, average time in system, and probability of having to wait for a randomly chosen customer group arriving to check in by taking a weighted average of the corresponding quantities for the two subsystems, using the fraction of arrivals to each subsystem as weights. Here are the necessary formulas:

Cell Formula
D16 =B16+C16
D17 =B17+C17
D18 =B2*B18+C2*C18
D19 =B2*B19+C2*C19
D21 =B2*B21+C2*C21

After entering these formulas, your spreadsheet should look as follows:

Press "ctrl" and "~" together to switch to formula view, which is useful for checking your work (we only show the columns that contain formulas, namely B, C, and D):

Back | Continue


Tutorial 2 - Sensitivity Analysis

You may have thought of various ways to improve the current check-in process. Now that we have a model of the current check-in process, we can use it to explore the impact of various changes to the process. We will illustrate the analysis of two possible changes. You can probably think of others.

The distribution of service times for passengers groups that are served by check-in agents is highly variable -- its standard deviation of 2 minutes is higher than the mean of 1.75 minutes. This is because the service time distribution has a long tail, corresponding to a small number of passenger groups that require an exceptionally long time to serve. There can be various reasons for these exceptionally long service times, such as passengers requiring rerouting or temporary delays in accessing the airline's information system.

There may be ways to reduce the service time variability -- for example, by improving the reliability of the airline's information system. Let's explore how such changes would impact the average time passenger groups wait in line.

We will use a one-way data table to do this. Enter the formula "=B18" in cell H2. Enter the numbers 0.00, 0.25, ..., 2.00 in the range G3:G11. Then highlight the range G2:H11, choose the "Table ..." command from the "Data" menu, enter "B12" for the "Column Input Cell," leave the "Row Input Cell" blank, and press Enter. The results should look as follows:

The average time in queue decreases as the standard deviation of the service times decreases, as one would expect. If the variability in service times could be eliminated completely, then the average wait would be reduced from 9.34 to 4.09 minutes. This is probably unrealistic, but it provides a benchmark. Even reducing the standard deviation from 2 minutes to 1 minute would reduce the average waiting time substantially, from 9.34 to 5.41 minutes.

The second change we will consider involves the fraction of passenger groups that use the check-in terminals. This fraction may increase over time as passengers become more comfortable with this new technology and as the technology itself becomes more reliable and easier to use. It might also be possible to speed up the pace of passengers switching to the terminals, for example by having staff on hand to assist first time terminal users, or by mailing instructions for how to use the terminals to passengers before departure. We can use another one-way data table to explore the possible impact of such actions. Specifically, we will see how the average number and the average time in the combined system of check-in agents and check-in terminals varies as the fraction of passenger groups that use the check-in terminals varies.

Enter the formula "=D17" in cell H14 and the formula "=D19" in cell I14. Enter the numbers 25%, 30%, ..., 65% in the range G15:G23. Highlight the range G14:I23, choose the "Table ..." command from the "Data" menu, and specify "C2" as the column input cell. The resulting table should look as follows:

First, observe that if 25% of passenger groups use the check-in terminals, then we get error messages. This is because the check-in agents are not able to keep up with an arrival rate of 480*(1-0.25) = 360 per hour. The combined service rate of the ten agents is only 10*60/1.75 = 342.9 per hour. We also get error messages when 65% of passenger groups use the check-in terminals, for a similar reason: this time, the check-in terminals are not able to keep up with the load that is put on them.

As the fraction of passenger groups that use the terminals increases from 30% to 50%, the average number in system and the average time in system decrease substantially. Increasing the fraction further is not helpful, however: the congestion in the system starts increasing again. The conclusion might be that a short term goal should be to increase the fraction of passenger groups that use the terminals to 50%. When that goal is reached, then it may make sense to invest in additional check-in terminals, before encouraging more passenger groups to use the terminals.

Keep in mind that the analysis described in this tutorial is only meant to illustrate what is possible. In reality, additional features may need to be included in the analysis. For example, when the fraction of passenger groups that use the terminals increases, the service times in the terminals system may increase. With the tools that you now have at your disposal, you can attempt to incorporate such additional considerations.

Back | Return to Start


Error Messages

The Queueing ToolPak is designed to give diagnostic error messages when possible. Error messages appear in cells where a Queueing ToolPak function is entered with inappropriate arguments. The list below shows all error messages generated by the Queueing ToolPak in alphabetical order.

We may not have anticipated all possible errors, so the absence of an error message should not be taken as a guarantee that the number is accurate. Also, for some errors, we were unable to display a diagnostic error message. Instead, "#VALUE," "#NUM!" or some other error message generated by Excel may appear.

#arrival rate < 0: You used an arrival rate that was less than zero. The arrival rate must be greater than or equal to zero.

#insufficient system capacity: The system capacity is insufficient to achieve the desired level of service. Two ways to avoid this are to increase the system capacity or decrease the desired level of service.

#not implemented: You entered a finite queue capacity as an argument for one of the QTPGGS_ functions. The current version of QTP does not perform calculations for finite capacity G/G/s systems.

#queue capacity < 0: You entered a queue capacity that was less than or equal to zero. The queue capacity must be a whole number that is greater than or equal to zero.

#queue capacity not integer: You entered a queue capacity that was not a whole number. The queue capacity must be a whole number.

#servers <= 0: You entered a number of servers that was less than or equal to zero. The number of servers must be greater than zero.

#servers not integer: You entered a number of servers that was not a whole number. The number of servers must be a whole number that is greater than zero.

#service level <= 0: You used a service level that was less than or equal to zero. The service level must be greater than zero.

#service level >= 1: You entered a service level that was greater or equal to 1 (=100%). The service level must be less than 100%. (A 100% service level would require infinitely many servers.)

#service rate <= 0: You used a service rate that was less than or equal to zero. The service rate must be greater than zero.

#state < 0: You entered a system state that was less than zero. The system state must be a whole number that is greater than or equal to zero.

#state not integer: You entered a system state that was not a whole number. The system state must be a whole number.

#stdev arrivals < 0: You entered a standard deviation of interarrival times that was less than zero. This standard deviation must be greater than or equal to zero.

#stdev service < 0: You entered a standard deviation of service times that was less than zero. This standard deviation must be greater than or equal to zero.

#system capacity <= 0: You entered a system capacity that was less than or equal to zero. The system capacity must be a whole number that is greater than or equal to 1.

#system capacity not integer: You entered a system capacity that was not a whole number. The system capacity must be a whole number.

#threshold time < 0: You used a threshold time that was less than zero. The threshold time must be greater than or equal to zero.

#utilization >= 100%: The arguments you used resulted in the quantity Arrival Rate / (Servers * Service Rate) being 100% or greater. This would lead to a queue that grows indefinitely. Three ways to avoid this are to increase the arrival rate, increase the number of servers, or increase the service rate.

#<argument> parameter error: You entered an argument that QTP did not understand (for example, a string instead of a number). Instead of <argument>, the error message will tell you the name of the argument that QTP did not understand.


Glossary

This glossary lists some common terms that are used for the analysis of waiting lines in different contexts, and the corresponding terms used in the Queueing ToolPak.

  • AHT = Average Handling Time: The average time to serve a customer. Equals one divided by the service rate.
  • AHT = Average Holding Time on Trunks: The average time a customer spends in the system, in a telecommunications context (trunk = telephone line). Use the QTPMMS_W function to calculate this. Note that this term has the same acronym as Average Handling Time, but a different meaning.
  • ASA = Average Speed of Answer: The average time a customer waits before being answered, i.e., the average time he or she waits in line. Use the QTPMMS_Wq function to calculate this.
  • ATB = All Trunks Busy: A situation where the system is filled to capacity, so that no new customers can enter the system. Used in telecommunications. Use the QTPMMS_PrFull function to calculate the probability of this occurring.
  • TSF = Telephone Service Factor: Same as QTPMMS_ServiceLevel.
  • Average Delay: Average waiting time in queue. Use the QTPMMS_Wq function to calculate this.
  • Average Delay of Delayed Calls: Average waiting time in queue, for those customers that actually waited. Use QTPMMS_Wq / QTPMMS_PrWait to calculate this.
  • Call Load: Equals the arrival rate times the average service time, or the arrival rate divided by the service rate. Measures the average amount of work, measured in time units, that is coming into the system per time unit.
  • Erlang B, or Erlang's loss formula: This formula calculates the probability that a caller will get a busy signal when calling a system where the number of agents equals the number of telephone lines (trunks). The QTPMMS_PrFull function, with Queue Capacity set equal to zero, calculates this quantity.
  • Erlang C formula: This formula calculates the probability that no server is available in a system with infinite queue capacity. Use the QTPMMS_PrWait function, with Queue Capacity omitted or set equal to "Inf," to calculate this quantity.
  • GoS = Grade of service: The probability that all lines are busy, in a telecommunications context. Use the QTPMMS_PrFull function to calculate this.
  • Occupancy: This is the same as server utilization.


Credits

Version 4 of the Queueing ToolPak was designed and developed by Armann Ingolfsson and Fraser Gallop. Earlier versions were programmed by Fraser Gallop, Jay Baraniecki, and Steven Kabanuk. Thanks to Tom Grossman for many constructive suggestions and to Aaryn Flynn and Laura Morrison for assistance.

Funding to develop the Queueing ToolPak has been provided by the University of Alberta Teaching Research Fund and the Natural Sciences and Engineering Research Council of Canada.

For new versions, errata and other current information about the Queueing ToolPak, point your web browser to http://www.bus.ualberta.ca/aingolfsson/QTP/ . The QTP_Version function returns the version number.


QTPMMS_TrafficIntensity

Calculates the average traffic intensity. This unitless quantity equals the average number of busy servers.

Basic Syntax

QTPMMS_TrafficIntensity(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_TrafficIntensity(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_Util

Calculates the fraction of time each server is busy in a queueing system.

Basic Syntax

QTPMMS_Util(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_Util(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_L

Calculates the average number of customers in a queueing system (including both those being served and those waiting).

Basic Syntax

QTPMMS_L(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_L(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_Lq

Calculates the average number of customers waiting in queue (excluding customers that are being served).

Basic Syntax

QTPMMS_Lq(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_Lq(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_W

Calculates the average time a customer spends in a queueing system (including both waiting time in queue and time in service).

Basic Syntax

QTPMMS_W(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_W(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_Wq

Calculates the average time a customer spends waiting in queue (excluding time in service).

Basic Syntax

QTPMMS_Wq(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_Wq(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_PrWait

Calculates the probability that a customer arriving to a queueing system has to wait for service, as opposed to starting service immediately upon arrival.

Basic Syntax

QTPMMS_PrWait(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_PrWait(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.

Additional Information

When the Queue Capacity is finite, QTPMMS_PrWait is the probability that an arriving customer has to wait for service. The other possibilities are that the customer does not have to wait, or that the customer balks (does not enter the system).

The probability that an arriving customer has to wait for service, given that (s)he does not balk, can be calculated as

(QTPMMS_PrWait - QTPMMS_PrBalk)/(1 - QTPMMS_PrBalk)

When the queue capacity is infinite, no customers will balk.


QTPMMS_PrEmpty

Calculates the probability that a queueing system is empty of customers.

Basic Syntax

QTPMMS_PrEmpty(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_PrEmpty(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_PrFull

Calculates the probability that the system is full to capacity. In this situation, an arriving customer will depart without entering the system because the lineup is equal to the Queue Capacity.

Basic Syntax

QTPMMS_PrFull(Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_PrFull(Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite, no customers will depart without entering the system, and QTPMMS_PrFull will equal zero.


QTPMMS_PrState

Calculates the probability that a queueing system has exactly State customers in it--either being served or waiting. (This function is the probability distribution on the number of customers in the system).

Basic Syntax

QTPMMS_PrState(State, Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_PrState(State, Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.


QTPMMS_ServiceLevel

Returns the probability that a customer waits less than or equal to Threshold Time time units. (This function is the cumulative distribution function for the waiting time).

For example, if Threshold Time is 2 minutes and this function returns 0.80 it means that 80% of customers wait 2 minutes or less. Note that the Threshold Time must be entered using the same time units as the Arrival Rate and Service Rate. If these rates are per hour then a Threshold Time of 2 minutes should be entered as: (2 minutes)(1 hour / 60 minutes) = 1/30 hours

Basic Syntax

QTPMMS_ServiceLevel(Threshold_Time, Arrival Rate, Service Rate, Servers)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_ServiceLevel(Threshold_Time, Arrival Rate, Service Rate, Servers, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.

Additional Information

When the Queue Capacity is finite, QTPMMS_ServiceLevel is the probability that an arriving customer has to wait Threshold Time or less for service. The other possibilities are that the customer has wait longer than Threshold Time, or that the customer balks (does not enter the system).

The probability that an arriving customer has to wait Threshold Time or less for service, given that (s)he does not balk, can be calculated as

(QTPMMS_ServiceLevel - QTPMMS_PrBalk)/(1 - QTPMMS_PrBalk)

When the queue capacity is infinite, no customers will balk.


QTPMMS_MinServers

Returns the minimum number of servers needed to ensure that the probability that a customer waits less than Threshold Time time units is greater than or equal to Service Level.

Basic Syntax

QTPMMS_MinServers(Threshold_Time, Service Level, Arrival Rate, Service Rate)

Advanced Syntax

There is an option to use a finite Queue Capacity, where customers in excess of Queue Capacity are not admitted to the queue:

QTPMMS_MinServers(Threshold_Time, Service Level, Arrival Rate, Service Rate, Queue Capacity)

If the Queue Capacity argument is omitted, it is assumed infinite.

Additional Information

This function can be used to determine the number of servers needed to achieve a specified level of service where the Queue Capacity (the total number of customers that can wait in line) is fixed and it is possible to add servers without reducing the queue capacity. For example, this is typically the case for an airline check-in area or retail bank. The queue capacity can be specified as infinite.

When the Queue Capacity is infinite, this function gives the same result as the MinAgents function with an infinite System Capacity.


QTPMMS_MinAgents

Returns the minimum number of agents needed to ensure that the probability that a customer waits less than Threshold Time time units is greater or equal to Service Level.

Basic Syntax

QTPMMS_MinAgents(Threshold_Time, Service Level, Arrival Rate, Service Rate)

Advanced Syntax

There is an option to use a finite System Capacity, where the total number of customers allowed in the system (being served or waiting) can be at most System Capacity :

QTPMMS_MinAgents(Threshold_Time, Service Level, Arrival Rate, Service Rate, System Capacity)

If the System Capacity argument is omitted, it is assumed infinite.

Additional Information

This function can be used to determine how many servers are needed to achieve a specified level of service when the total system capacity (number of servers + number of customers that can wait) is fixed. For example, this is typically the case in a call center, where the system capacity is the number of trunk lines.

When the System Capacity is infinite, this function gives the same result as the MinServers function with an infinite Queue Capacity.


QTPGGS_TrafficIntensity

Calculates the average traffic intensity. This unitless quantity equals the average number of busy servers.

Basic Syntax

QTPMMS_TrafficIntensity(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_Util

Calculates the fraction of time each server is busy in a queueing system.

Basic Syntax

QTPGGS_Util(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_L

Calculates the approximate average number of customers in a queueing system (including both those being served and those waiting).

Basic Syntax

QTPGGS_L(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_Lq

Calculates the approximate average number of customers waiting in queue (excluding customers that are being served).

Basic Syntax

QTPGGS_Lq(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_W

Calculates the approximate average time a customer spends in a queueing system (including both waiting time in queue and time in service).

Basic Syntax

QTPGGS_W(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_Wq

Calculates the approximate average time a customer spends waiting in queue (excluding time in service).

Basic Syntax

QTPGGS_Wq(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPGGS_PrWait

Calculates the approximate probability that a customer arriving to a queueing system has to wait for service, as opposed to starting service immediately upon arrival.

Basic Syntax

QTPGGS_PrWait(Arrival Rate, Service Rate, Servers, "INF", Stdev Arrivals, Stdev Service)

Note: The "INF" indicates an infinite queue capacity. QTP 4.0 does not calculate performance measures for non-Markovian systems with finite queue capacity.


QTPMMS_Version

Provided for backward compatibility. This function is identical to QTP_Version.


QTPMMS_Po

Provided for backward compatibility. This function is identical to QTPMMS_PrEmpty.


QTPMMS_PrBalk

Provided for backward compatibility. This function is identical to QTPMMS_PrFull.


QTP_Version

Returns the version number for the Queueing ToolPak

Syntax

QTP_Version()

This function requires no arguments.


QTP_NORMSDIST

Calculates the cumulative distribution function for a standard normal random variable (with mean zero and standard deviation one).

Syntax

QTP_NORMSDIST(z)

This function can be used instead of Excel's built-in NORMSDIST function.

Additional Information

This function is adapted from the NDTR function, provided with the Cephes library, available from Netlib ( http://www.netlib.org/ ).

If X is a normally distributed random variable with E[X] = 0 and var[X] = 1, then QTP_NORMSDIST(z) = Pr{X≤z}.