背景
在正常的派单系统中,一辆车只能派送给一个乘客,最终要么司机接单成功、要么乘客取消订单。
现在随着像高德、腾讯、百度、美团等聚合打车平台的崛起,与滴滴已经形成了抗衡的局面,聚合平台已成为乘客打车的一个重要流量入口。聚合平台前面把控了乘客需求的入口,后面联合众多不同的运力供应商,才能够形成与滴滴一较高下的局面。
作为聚合平台的运力提供商,需要给聚合平台用户的打车需求,派送可匹配的车辆。由于聚合平台集结了多家运力供应商,用户的打车需求下发到各个不同的运力供应商,最终聚合平台会基于自身的策略,从多家运力供应商派送的车辆中,选择合适的运力。这样就会导致某家运力提供商派送的车辆,由于没有竞争过其它运力供应商,最终派送的运力无法接到订单。
基于这样的背景下,作为运力提供商,就要计算好车辆派送给聚合平台后,平台给单的概率,如果给单的概率太低,就可以把一辆车同时派给多个用户需求。但是,又要考虑好一辆车派送给多个用户需求后,一旦多个需求都给单进行接起时,由于一辆车只能服务一个需求,最终导致多的需求被取消,从而引起聚合平台对运力供应商的罚款。在综合考虑聚合平台的给单和罚款的约束下,就决定了一辆车派送多单时,在什么样的情况下,对运力提供商来说效率最高。
问题
基于以上背景,就牵引出来了一个基本问题。一辆车派送给多个订单后,在每个订单给单率不同的情况下,如何计算无车订单的数量,这样运力供应商才能控制好罚款的风险。
示例如下:
聚合平台: 用户A下单了需求A1, 用户B下单了需求B1,用户D下单了需求D1
运力供应商: 针对A1和B1都派送了车辆C1
聚合平台给单率: A1-C1的给单率0.3,B1-C1的给单率 0.4, D1-C1的给单率 0.5
无车订单的数量,存在如下两种:
1. C1被2个订单给单则有1个订单无车。无车订单存在3种情况,C1给A1、B1、不给D1,,C1给A1、D1、不给B1,C1给D1、B1、不给A1,计算方式: 0.3 * 0.4 * 0.5 * 1 + 0.3 * 0.5 * 0.6 * 1 + 0.4 * 0.5 * 0.7 * 1 = 0.29
2. C1被3个订单给单则有2个订单无车。 无车订单数,计算方式: 0.3 * 0.4 * 0.5 * 2 = 0.12
最终计算无车订单数: 0.29 + 0.12 = 0.41
理论推导
示例可以通过穷举演算,计算得到最终结果。如果数据量一大,穷举的方式就过于复杂,如何通过理论的推导得到最终的计算公式,让所有这类问题,都能够迎刃而解。
理解问题
首先,我们需要明确几个关键信息:
- 订单的接单情况:每个订单 ii 以概率 xi 被接单,以概率 1 - xi不被接单。各个订单的接单与否是相互独立的。
- 取消规则:如果接单的总数 S(即成功接单的订单数量)大于 1,那么保留 1 个订单,其余的 S−1个订单被取消。因此,被取消的订单数为 max(S−1,0)。
- 期望值:我们需要计算 E[max(S−1,0)],即被取消订单数的期望。
定义随机变量
设 S 为成功接单的订单总数。S 可以表示为:
i=1∑nXi
其中,Xi 是伯努利随机变量,表示第 i个订单是否被接单:
Xi={1,(概率xi)0,(概率1−xi)
被取消的订单数
被取消的订单数为:
Y=max(S−1,0)={S−1,(ifS≥1)0,(ifS=0)
因此,期望值为:
E[Y]=E[max(S−1,0)]=s=0∑nmax(s−1,0).P(S=s)
注意到当 s=0 或 s=1 时,max(s−1,0)=0,所以:
E[Y]=s=2∑n(s−1).P(S=s)
计算 P(S=s)
S 是 n 个独立的伯努利试验的和,但每个试验的成功概率不同,因此 S 服从泊松二项分布(Poisson Binomial Distribution)。计算 P(S=s) 的一般形式比较复杂,但对于小的 n,可以通过枚举所有可能的 s 个订单被接的组合来计算。
然而,对于期望的计算,我们可以采用更聪明的方法。
利用线性期望
E[Y]=E[max(S−1,0)]=E[S]−E[min(S,1)]
因为:
max(S−1,0)=S−min(S,1)
所以:
E[Y]=E[S]−E[min(S,1)]
计算:
- E[S]=∑i=1nxi(因为期望的线性性质)
- E[min(S,1)]=P(S≥1)=1−P(S=0)=1−∏i=1n1−xi
这个E[min(S,1)]=P(S≥1) 成立的原因如下:
min(S,1)={0,(ifS=0)1,(ifS≥1)
E[min(S,1)]=0∗P(S=0)+1∗P(S≥1)=P(S≥1)
因此:
E[Y]=E[S]−E[min(S,1)]=i=1∑nxi−(1−i=1∏n(1−xi))=(i=1∑nxi−1)+i=1∏n(1−xi)
解释
- ∑i=1nxi : 平均接单总数。
- 减去 1: 因为最多保留 1 个订单。
- ∏i=1n(1−xi):没有订单被接的概率。
验证示例
聚合平台: 用户A下单了需求A1, 用户B下单了需求B1,用户D下单了需求D1
运力供应商: 针对A1和B1都派送了车辆C1
聚合平台给单率: A1-C1的给单率0.3,B1-C1的给单率 0.4, D1-C1的给单率 0.5
E(无车订单数) = (0.3 + 0.4 + 0.5) - 1 + (1-0.3)*(1-0.4)*(1-0.5) = 0.41
验证结果和穷举方式的结果一致。
结论
接起后无车的订单数,也就是被取消订单数的期望值为:
E[Cancelledorders]=(i=1∑nxi−1)+i=1∏n(1−xi)
或者等价地:
E[Cancelledorders]=s=2∑n(s−1).P(S=s)
其中S是成功接单的总数,服从泊松二项分布。