【发布时间】:2019-02-05 13:46:03
【问题描述】:
我正在为联络中心创建一个人数模型。我想将 erlang c 应用于我的预测数据的新列(通过 RODBC con 提取的预测)
当我应用我的 erlang c 公式时,我收到多个警告,大部分都是重复的。公式确实可以运行,但只有第一行是准确的。
警告信息:
1:在 1:agents 中:数值表达式有 96 个元素:只使用第一个
2: 在 while (gos 1)/100) { : 条件的长度 > 1,并且只使用第一个元素
3:在 1:agents 中:数值表达式有 96 个元素:只使用第一个
4: 在 while (gos 1)/100) { : 条件的长度 > 1,并且只使用第一个元素
问题是我需要一些输入才能从数据框中提取函数
我需要该函数从数据框中的当前行获取呼叫量和 AHT,并计算出员工人数要求
数据是一个基本表,由日期、日期、月份 AHT 和调用列组成
我尝试了不同的应用方法:
我用过 Lapply
我已尝试通过创建新列来添加它
我尝试过使用rep函数
我尝试过使用 for 循环
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 个代理计算
【问题讨论】:
-
欢迎来到 SO。您能否尝试将您的问题简化为更轻的问题。所以我们会更容易理解,您可能会在途中找到您的解决方案。但是,警告似乎很明确:
gos不止一维。不应该是这样。你应该试着看看你在哪里/为什么你有length(gos)>1 -
那个代码不是erlang,那为什么你的问题有一个erlang标签?
标签: r