背景:
近日朋友公司接到一个外呼任务,利用他们自研的机器人在规定时间内要把一定数量的外呼电话全部打完,一个机器人一次只能拨打一个电话。以下是我对问题的抽象和给出的模型,可能存在错误的地方,如有发现还请指出,多谢!
问题描述
- 总共有N通电话要打;
- 配置m个号百模块,由于电信的限制,每个模块100秒内最多只能打12通电话,假设每通电话通话时长小于100s,每天打10个小时,一个模块满负荷下每天可以拨打 10 * 3600 * 12 / 100 = 4320通电话;
- 假设每通电话的平均接听率为p,未接听电话需要后续重新拨打;
- 用户一旦接听电话后本次任务标记完成。
求:至少需要配备多少模块和机器人能在10天内打完N通电话
求解过程
首先假设用户之间相互独立,即A用户是否接听不受B用户影响。分两种情况讨论:
简单情况
用户个体每次接电话相互独立,即:第n次是否接听电话不受第n-1次的影响。则针对第i个用户的电话任务是否完成可以用下图表述:
则有用户在两次内接听的概率为:1−(1−p)2如果需要两次内用户的接听率大于99%,则有:1−(1−p)2≥0.99 解出p≥0.9,即平均接听率必须大于0.9。
在此假设下,理论上N通电话永远都无法全部完成,对于任意集合I,存在元素i每次都以(1-p)的概率选择不接听电话,则问题归约成若p≥0.9,以99%的概率打完N通电话需要号百的模块配置数量。配置的模块数量为⌈4320∗102∗N⌉,设N=100000,则模块数为5个,机器人数为60个。
但是,实际接听率p远小于90%,假设p=0.6,则至少需要拨打多次是才能保证一个用户的接听率大于99%? 有1−(1−p)n≥0.99 求n,有n≥log(0.4)log(0.01) 至少需要拨打5次。所以配置的模块数量为⌈4320∗105∗N⌉ ,设N=100000,则模块数为12个,机器人数为144个。
现实情况
用户第n次是否接听与前n-1次存在密切联系,且随着n的变大接听率也随着变大,即第二次的接听率大于第一次,假设用户的接听率随着拨打的次数按25%比例增加,即有:第一次p1=50%,第二次p2=75%,第三次p3=100%,第三次必定接听,设生成函数:
f(x)=a⋅x+b⋅x2+c⋅x3
其中x的次方n代表第n次接听,x的系数为第n次接听的人数。则有:
a=N⋅P1
b=(N−a)⋅P2
c=(N−(a+b))⋅P3
则需要拨打的总数 s=a+2⋅b+3⋅c
一般情况:
设:
- pi为第i次接听率,i>0且有pi<p(i+1)
-
f(x)=ω1x+ω2x2+⋯+ωixi为N通电话被接听的生成函数,参数含义同上
则有:
ω1=N⋅p1
ω2=(N−ω1)⋅p2
…
ωi=(N−∑j=1i−1ωj)∗pi
则有:s=∑i=1Ni⋅ωi=N⋅p1+∑i=2Ni⋅(N−∑j=1i−1ωj)⋅pi
设P={50%,75%,100%},N=100000带入,得:s=50000+2⋅37500+3⋅12500=162500
所以配置的模块数量为⌈4320∗10162500⌉,得模块数为4个,机器人数为48个。