ERLANG Help needed

Alex D

New Member
Joined
Apr 28, 2020
Messages
49
Office Version
  1. 365
Platform
  1. Windows
Hi there. I have a new type of transaction I need to calculate my FTE need for. Think of it as emails....the customer goes online, creates a "case" for an agent to handle, rather than a call. My standard calculation that I use is overstating my FTE need....the only difference between this type of transaction and a phone call is that we have 24 hours to resolve the case, but we aren't open 24 hours, we still schedule standard 8 hour shifts.

The AHT we are using for planning is 360, the shrink is 27%. What formula do you recommend to use to calculate the FTE Need for this type of work?
 
Again, what is a typical volume?...I'm looking for a reasonable estimate to plug in to some calculations. But I'd like to also understand the time component for the volume. For example, if I choose a call volume of 1000 per 1440 minutes (1 day), that would lead to an estimated call rate of (1000 calls) / (1440 min) * (60 min/h), or 41.7 calls/h. This would normally be used to estimate the Traffic Intensity:
calls/h * avg. time per call, or (41.7 calls/h) * (6 minutes/call) * (h/60 minutes) = 4.17 Erlangs (essentially call-hours per hour).

This is what we find in this part of your formula: "forecasted volume * forecasted AHT / 3600"
And then to account for shrinkage and occupancy, this part also makes sense: "/(1-Shrink %)/Occupancy %"

What I do not follow is this part: "/# of business days/8 "

It seems that in the example I've described, 4.17 Erlangs is not an appropriate description of the Traffic Intensity. While we might, for simplicity, assume the call volume (or web-based requests for help) arrive somewhat regularly over a 24-h period, 7 days a week, those requests are not serviced over that same period of time. Instead, servicing is much more sporadic, but at a higher intensity because for a regular workday, only 8 hours is devoted to servicing those requests. And for a week basis, normally on 5 of the 7 days are devoted to servicing the requests. So it would seem to me that the Traffic Intensity should be scaled by a factor of (24/8) * (7/5) = 4.2 (interesting that this number coincidentally is about the same as the Erlangs computation above). In any case, if we apply this scaling factor to the Traffic Intensity, a modified Traffic Intensity of (4.2) * (4.17 Erlangs) = 17.5 Erlangs

Then after burdening this value by the Shrinkage and Occupancy factors, I get an estimate of about 29 agents.

I've posted some Erlang C worksheets on this site, but it sounds as if you may already be using a tool. I do wonder if some fundamental assumptions in the theory might not hold for your application. For example, Erlang adopted the Poisson distribution to estimate the probability that calls are answered within their target times, but your average handling time (6 minutes) and the the target response time (24 hours) are so disparate that we are operating in one tail of the probability distribution...which isn't good. Those probability estimates would have much higher uncertainties associated with them.

Let's say the typical volume is 17,500 cases....we are using a 360 second AHT to plan, a 26.5% shrink. The SLA is 24 hours. What would my formula be to help me identify the FTE needed?
 
Upvote 0

Excel Facts

Last used cell?
Press Ctrl+End to move to what Excel thinks is the last used cell.
17,500 volume over what time period?

One month, but I am trying to write a formula where I can update my volume each month as needed since the forecasted volume could fluctuate.
 
Upvote 0
Some time back after posting some solutions using an Erlang C worksheet, I intended to convert the multi-step process into a single formula...but I never quite finished that. Essentially, I think you would follow the nearly the same steps that you've described, except the time units are important and some adjustment would be needed to account for the downtime. For the volume/rate you've described (~17,500 requests/month)...that averages to an incoming request rate of about 24 requests/h steady state (days, evenings, weekdays, weekends, etc.). But to keep up with this request rate, staff are actively working to resolve the requests about 24% of the time (mentioned previously...(24 h incoming requests / d) / (8 h working time / d) * (7 days incoming requests / wk) / (5 working days / wk) = 4.2). So incoming requests are arriving over a period of time that is 4.2 times greater than the actual working time...or the working time is 1/4.2 or 24% of the period over which requests arrive. One way to account for this is to compute the Traffic Intensity (A) and then burden it further by multiplying by an intensification factor (4.2 in this case).

Going back to 24 requests/h...if each request requires, on average, about 6 minutes to address (AHT = 360 seconds I believe you mentioned), then the baseline Traffic Intensity would be:
(24.3 requests/h) * (6 minutes/request) * (1 h/60 minutes) = 2.43 Erlangs (request-hours per hour)
...and when multiplied by the intensification factor of 4.2, the effective Traffic Intensity would be 10.2 Erlangs. So as a starting point, this number would be rounded up to determine whether 11 staff were sufficient to meet all service objectives.

With such a large disparity between the AHT (6 minutes) and the Target Answer Time (1 day), and a Service Level of 80% (at least 80% of the requests satisfy the Target Answer Time), on average, you probably do not need to add more staff beyond 11 based on the Service Level requirement. So a simplified formula could probably skip the probability assessment and simply round up the enhanced Traffic Intensity value to use as the baseline staffing number. Then that baseline would be further burdened to account for Occupancy and Shrinkage. After doing this, Erlang C gives an estimate of 18 for this case. Does that number bear any resemblance to what your actual experience is?...too high?...too low?
ErlangC_20240220.xlsx
ABCDEFG
1Tool for Estimating Staffing for Call Center using Erlang C Method
2
31. Inputs:
4Number of calls17500
5In a period of minutes (min)4320043200minutes in 1 month
6Average Handling Time (AHT) (s)3606minutes, convert to s
7Required Service Level80%
8Target Answer Time (s)8604086040seconds in one day less AHT
9Maximum Occupancy85%
10Shrinkage26.5%
11
122. Determine number of calls per hourTraffic Intensity - Intensification Factor
13n_avg (# calls/h)102.08333334.2off/on ratios: workday * workweek
14
153. Determine the Traffic Intensity (A)(hour basis)
16# of calls in hour basis102.0833333
17Avg time per call (min)6
18Call-minutes per hour612.5
19Traffic intensity (A) , call-hours per hour (Erlang unitless)10.20833333
20
214. Estimate the raw number of agents required (N)
22One agent max capability is 1 call-hour per hour actual time
23Initial guess for N agents required111213141516
24X term43671.4766717907.921429777.1534065652.718133261.5773991836.429721
25Y term15110.3040518253.3269920927.0791523026.6601724557.6046625599.49744
26Probability a call has to wait, Pw74.29%49.52%31.84%19.71%11.72%6.69%
27
285. Calculate the Service Level (list item #13 in ref)
29Service Level100.00%100.00%100.00%100.00%100.00%100.00%
30Target Service Level80%80%80%80%80%80%
31Target Service Level Met?TRUETRUETRUETRUETRUETRUE
32
336. Average Speed of Answer (ASA) (list item #15 in ref)
34Avg Speed of Answer (ASA) (seconds)337.843276499.5054920141.063231418.713712278.8084447474.160577477
35
367. Percentage of Calls Answered Immediately (list item #16 in ref)
37Immediate Answer25.71%50.48%68.16%80.29%88.28%93.31%
38
398. Check Maximum Occupancy (list item #17 in ref)
40Occupancy92.80%85.07%78.53%72.92%68.06%63.80%
41Max Occupancy85%85%85%85%85%85%
42Max Occupancy constraint met?FALSEFALSETRUETRUETRUETRUE
43
449. Factor in Shrinkage (list item #18 in ref)
45Number agents needed considering shrinkage of 27%151718202122
46
4710. Summary
48Number agents needed (minimum of #9 where #5 and #8 are satisfied)18
49Service Level100.0%
50Probability a call has to wait31.8%
51Average Speed of Answer (seconds)41.1
52% of calls Answered Immediately68.2%
ErlangC_AlexD
Cell Formulas
RangeFormula
D5D5=30*24*60
D6D6=360/60
D8D8=60*60*24-B6
B13B13=B4/(B5/60)*$D$13
D13D13=24/8*7/5
B16B16=B13
B17B17=B6/60
B18B18=B16*B17
B19B19=B18/60
B23B23=ROUNDUP(B19,0)
C23:G23C23=B23+1
B24:G24B24=B$23/FACT(B$23)/(B$23-$B$19) * $B$19^B$23
B25:G25B25=IF(B$23<2, 1, 1 + SUMPRODUCT($B$19^ROW($A$1:INDEX($A:$A, B$23-1)) / FACT(ROW($A$1:INDEX($A:$A, B$23-1)))))
B26:G26B26=B24/(B24+B25)
B29:G29B29=1-B26*EXP(-(B23-$B$19)*($B$8/$B$6))
B30:G30B30=$B$7
B31:G31B31=B29>=B30
B34:G34B34=B26*$B$6/(B23-$B$19)
B37:G37B37=1-B26
B40:G40B40=$B$19/B23
B41:G41B41=$B$9
B42:G42B42=B40<B41
A45A45="Number agents needed considering shrinkage of "& TEXT($B$10,"0%")
B45:G45B45=ROUNDUP(B23/(1-$B$10),0)
B48B48=AGGREGATE(15,6,(B45:G45)/((B31:G31)*(B42:G42)),1)
B49B49=INDEX($B$29:$G$29,MATCH(B$48,$B$45:$G$45,0))
B50B50=INDEX($B$26:$G$26,MATCH(B$48,$B$45:$G$45,0))
B51B51=INDEX($B$34:$G$34,MATCH(B$48,$B$45:$G$45,0))
B52B52=INDEX($B$37:$G$37,MATCH(B$48,$B$45:$G$45,0))
Press CTRL+SHIFT+ENTER to enter array formulas.
Cells with Conditional Formatting
CellConditionCell FormatStop If True
B31:G31Cell Value=TRUEtextNO
B42:G42Cell Value=TRUEtextNO
B45:G45Expression=AND(B31,B42)textNO
 
Upvote 0
A plug in formula based on what was discussed above:
Excel Formula:
=LET(
    FormulaComment, {"Based on Erlang C without Probability Estimate that Service Level is Met"},
    CallVolume, 17500,
    CallPd, 30,
    commentCallPd, {"time period for CallVolumn, units of days"},
    AHT, 360,
    commentAHT, {"average handling time, units of seconds"},
    ResponseDue, 1,
    commentResponseDue, {"request answered, units of days"},
    ReqServiceLevel, 0.8,
    MaxOccupancy, 0.85,
    Shrinkage, 0.265,
    WorkHrsPerDay, 8,
    commentWorkHrsPerDay, {"units of hours"},
    WorkDaysPerWk, 5,
    commentWorkDaysPerWk, {"number of work days per week"},
    TargetAnswerTime, CONVERT(ResponseDue, "day", "s") - AHT,
    IncomingRate, CallVolume / CONVERT(CallPd, "day", "hr"),
    IntensificationFactor, 24 / WorkHrsPerDay * 7 / WorkDaysPerWk,
    BaselineTrafficIntensity, CONVERT(IncomingRate * CONVERT(AHT, "s", "min"), "min", "hr"),
    EnhancedTrafficIntensity, BaselineTrafficIntensity * IntensificationFactor,
    InitialNumberStaff, ROUNDUP(EnhancedTrafficIntensity, 0),
    NumberStaff, ROUNDUP(InitialNumberStaff / MaxOccupancy / (1 - Shrinkage), 0),
    NumberStaff
)
 
Upvote 0

Forum statistics

Threads
1,223,711
Messages
6,174,029
Members
452,542
Latest member
Bricklin

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top