Returns the average wait in seconds in the Erlang C queueing model, for a given number of servers, a given offered traffic, and a given average handle time.
ErlcWait( nsrv, trafficInErlangs, ahtSeconds)
nsrv is the number of servers, and can be any non-negative number (not necessarily an integer).
trafficInErlangs is the offered traffic in erlangs, and can be any non-negative number.
ahtSeconds is the average handle time (mean duration of service), and can be any positive number..
Formula | Description | Return Value |
---|---|---|
=ErlcWait(100, 95, 300) | Returns the average wait time (in seconds) given that there are 100 servers, 95 erlangs of offered traffic, and that the average handle time is 300 seconds. | 30.387409 |
=ErlcWait(13, 10.75, 120.5) | Returns the average wait time (in seconds) given that there are 13 servers, 10.75 erlangs of offered traffic, and that the average handle time is 120.5 seconds. | 22.270206 |
Public Function ErlcWait(nsrv As Double, trafficInErlangs
As Double, ahtSeconds As Double) As Double
You should take care not to call this function unless nsrv < trafficInErlangs. In the case that nsrv ≤ trafficInErlangs, the function theoretically should return "infinity"; what it actually does is return a very large number, 1050.
Please also always supply a value greater than 0 for aht. It makes no sense theoretically to put aht = 0, and in this case the function will return the value 0.
The queueing model that applies here is the M/M/n/∞ queue, also known as the Erlang C queueing model. That is: Poisson arrivals, exponential service time, n servers, and infinitely slots for customers in the system.
If this worksheet function is not available, and returns the #NAME? error, then you must install and load the Erlang Library for Excel from Abstract Micro Systems.
How?
You may use ErlcWait to estimate the average wait time for incoming calls in a call center. Suppose that we have a call center with these parameters during a certain period of time:
Maximum number of calls that can be waiting: | Very large |
Period length: | 30 minutes |
Number of agents: | 103 |
Incoming calls offered during the period: | 1000 |
Average handle time: | 3 minutes |
Assume further that the calls arrive in a Poisson process, that the handle times are exponentially distributed, and that the queue of waiting calls is processed in a FIFO manner. Finally, assume that if a caller finds that all agents are busy, then the caller will wait until an agent picks up the call.
We are interested in estimating the average wait time t for all callers, where callers who are served immediately are included in the average with their wait time taken to be 0. We use ErlcWait as follows. First, we compute the offered load x in erlangs:
x = (calls per period)*(call length) / (period length) = 1000 * (3 minutes) / (30 minutes) = 3000/30 = 100 erlangs
Then the average wait time is
t = ErlcWait( nsrv, trafficInErlangs, ahtSeconds) = ErlcWait( 103, 100, 180) = 40.847806 seconds