Step 1: I have calculated the Capacity requirement for a set interval using the Erlang C formula (Ref: https://www.callcentrehelper.com/erlang-c-formula-example-121281.htm#:~:text=To%20work%20out%20the%20traffic,10%20Call%20Hours%20%3D%2010%20Erlangs.)
Input :
Interval = 60 mins
#Interactions = 171 calls
AHT = 200 seconds
Required SLA = 80%
Target Answer Time = 120 seconds
Output:
Required Capacity
Code:
def power_fact(self, u, m):
pow_fact = pow(u, m) / factorial(m)
return pow_fact
def traffic_intensity(self, call, time_interval, avg_handling_time):
if (call == 0) or (avg_handling_time == 0) or (time_interval == 0):
traffic_inten = 0
else:
traffic_inten = (call / time_interval) * avg_handling_time
return traffic_inten
def erlang_c(self, call, time_interval, avg_handling_time, agent_count):
traffic_intensity_u = self.traffic_intensity(
call, time_interval, avg_handling_time)
power_factor = self.power_fact(traffic_intensity_u, agent_count)
X = power_factor
if (traffic_intensity_u == 0):
p = 0
Y = 0
erlang = 0
else:
if (agent_count == 0):
p = 0
else:
p = traffic_intensity_u / agent_count # Agent Occupancy
#print('Agent Occupancy: {}'.format(p))
Y = 0
for k in range(0, agent_count):
Y += self.power_fact(traffic_intensity_u, k)
erlang = X / (X + (1-p) * Y)
return erlang
def ser_lev_agr(self, agent_count, call, time_interval, avg_handling_time, target_answer_time):
traffic_intensity_u = self.traffic_intensity(
call, time_interval, avg_handling_time)
erlang = self.erlang_c(call, time_interval,
avg_handling_time, agent_count)
exponential = exp(- (agent_count - traffic_intensity_u)
* (target_answer_time / avg_handling_time))
service_level = 1 - (erlang * exponential)
return service_level
def agents_needed(self, call, time_interval, avg_handling_time, target_SLA, target_answer_time):
level = 0
agent_count = 0
while level < target_SLA:
level = self.ser_lev_agr(
agent_count, call, time_interval, avg_handling_time, target_answer_time)
agent_count += 1
return agent_count
Step2: I now need to calculate the number of interactions that can be handled, preferably using a similar technique, given the available capacity, while taking the required SLA into account.
Input :
Interval = 60 mins
Available Capacity = 10 Hours
AHT = 200 seconds
Required SLA = 80%
Target Answer Time = 120 seconds
Output:
#Interactions
Any ideas on how I might be able to do this?