Я создаю модель численности персонала для контакт-центра.Я хотел бы применить erlang c к новому столбцу моих прогнозируемых данных (прогноз извлекается через RODBC con)
Когда я применяю формулу erlang c, я получаю несколько предупреждений, в основном повторяющихся.Формула работает, но точна только 1-я строка.
Предупреждающие сообщения:
1: В 1: агенты: числовое выражение имеет 96 элементов: используется только первый
2: в то время как (gos 1) / 100) {: условие имеет длину> 1, и будет использоваться только первый элемент
3: в 1: агенты:числовое выражение имеет 96 элементов: только первый использованный
4: In while (gos 1) / 100) {: условие имеет длину> 1, и будет использоваться только первый элемент
Проблема в том, что мне нужны некоторые входные данные для функции, чтобы извлечь из фрейма данных
Мне нужна функция, чтобы взять громкость вызова и AHT из этой текущей строки вфрейм данных и выработка требования о численности персонала
Данные представляют собой базовую таблицу, состоящую из столбцов даты, дня, месяца и вызовов
Я пробовал разные способы его применения:
Я использовал Lapply
Я попытался добавить его, создав новый столбец
Я попытался использовать функцию повторения
Я пыталсяиспользование для цикла
#
Interval <- 15
Calls <- Should pull from Data
Duration <- Should pull from Data
Wait_time <- 20
gos_target <- 90
Shrinkage <- 21
Rate <- Calls *(60/Interval)
intensity <- function(rate, duration, interval = 60) {
(rate / (60 * interval)) * duration
}
erlang_c <- function(agents, rate, duration, interval = 60) {
int <- intensity(rate, duration, interval)
erlang_b_inv <- 1
for (i in 1:agents) {
erlang_b_inv <- 1 + erlang_b_inv * i / int
}
erlang_b <- 1 / erlang_b_inv
agents * erlang_b / (agents - int * (1 - erlang_b))
}
service_level <- function(agents, rate, duration, target, interval = 60) {
pw <- erlang_c(agents, rate, duration, interval)
int <- intensity(rate, duration, interval)
1 - (pw * exp(-(agents - int) * (target / duration)))
}
resource <- function(rate, duration, target, gos_target, interval = 60) {
agents <-round(intensity(rate, duration, interval) + 1)
gos <- service_level(agents, rate, duration, target, interval)
while (gos < gos_target * (gos_target > 1) / 100) {
agents <- agents + 1
gos <- service_level(agents, rate, duration, target, interval)
}
return(c(ceiling(agents/(1-(Shrinkage/100)))))
}
resource(Calls, Duration, Wait_time, gos_target, 15)
#
Мне нужно, чтобы каждый столбец давал мне точную численность персонала.когда я запускаю его для одной строки данных, любой строки, ответ всегда точен.как только у меня будет более одной строки данных, мои результаты по численности персонала будут подсчитаны, но всегда будут неточными, от 5 до 15 агентов