一种基于区域内订单供需关系的车辆派单方法及派单系统

文档序号:32374953发布日期:2022-11-30 00:09阅读:176来源:国知局
一种基于区域内订单供需关系的车辆派单方法及派单系统

1.本发明属于智能算法技术领域,涉及一种众包中的车辆派单方法,更为具体地讲,涉及一种基于区域内订单供需关系的车辆派单方法及派单系统。


背景技术:

2.随着移动互联网的大规模普及,人们的出行模式也逐渐发生着翻天覆地的变化。人们可以在一些打车平台上发布自己的订单信息,然后平台派遣司机前往乘客所在地将乘客送往目的地。因为乘客的耐心是有限的,他们在等待一段时间后可能会取消订单,选择其他的交通工具前往目的地。平台需要在乘客取消订单前,安排司机处理订单。平台需要合理的分派订单,尽可能地最大化所有司机的总收益。
3.在解决派单问题上,最常见的算法就是贪心算法。贪心算法每次在分配订单时,都会选择一个在当前贪心策略下的最优订单分配给司机。例如,当我们选择以最近邻作为贪心策略时,每当有司机完成当前订单准备接下一单或者刚准备接单时,就为他分派离他最近的一个订单;每当有新的订单出现时,就挑选离它最近的空闲的司机前来接单。同样的,当我们以最大化报酬作为贪心策略时,每次都要优先选择报酬最高的订单。批处理也是解决出租车派单问题常用方法之一。不同于贪心算法,批处理并不是在新的司机或新的订单出现时为司机分派订单,而是将连续的时间分成多个时间段,在每个时间段末尾为这个时间段新出现的订单和司机进行匹配。每个阶段的匹配可以使用二分图匹配方法,选择出收益最大的派单组合,然后为每个司机分派对应的订单。这种派单方法可以做到局部最优,保证每个时间段都能达到最大收益。
4.目前存在的几类派单算法有以下不足之处:首先这些工作只考虑了当下的订单,并没有结合未来的订单信息,导致无法获得全局最优解;其次,这些工作的优化目标在于尽可能地服务更多的订单,然而事实上不同的订单的收益是不同的,因此最大化服务订单的数量并不意味着最大化所有司机的总收益;最后,这些工作并没有考虑到区域内订单的供需关系对于派单的影响,当订单的目的地是一个订单供小于求的区域时,司机在完成订单后,将等待较长的一段时间才能接单下一份订单,这就间接性地降低了之前订单的价值。


技术实现要素:

5.为了解决现有技术存在的不足,本发明的目的是提供一种基于区域内订单供需关系的车辆派单方法。通过使用深度学习模型来预测未来某一时间段某个区域的订单数量,然后结合计算得到的司机数量分析该区域的订单供需关系,继而通过排队论分析得到司机在完成订单后的期望等待时间。最后分析订单的空闲率作为区域内供需关系的指标来指导派单过程。
6.本发明的具体步骤包括如下:
7.步骤(1)、划分空间区域,并对区域内未来一段时间出现的订单数量进行预测;
8.步骤(2)、结合预测的订单数量与司机数量,分析特定区域的订单供需关系并利用
排队论分析司机在完成订单后的空载时间,所述空载时间是指司机完成订单后到接到下一个订单前所需要等待的时间;
9.步骤(3)、结合司机完成订单后的空载时间与订单里程数来分析订单的空闲率,所述空闲率指司机在接送乘客的过程中,空载时间占总时间的比值;根据空闲率来为司机派单以保证所有司机的总收益最大化;所述空闲率是指空载时间占空载时间+司机载客时间的比值。
10.本发明以一天为完整的派单周期,将一天中24小时分为多个时间段,在每个时间段结束时统一派遣空闲的司机处理当前时间段内生成的订单。
11.本发明所述步骤(1)中,根据预先设定好的网格参数n,将空间划分成一样大小的n
×
n个矩形网格,或者称为n
×
n个区域,保证每个网格或区域的边长大约为2公里;通过空间左上角顶点和右下角顶点经纬度的差计算出空间的长度和宽度,再将长度和宽度除以网格参数n计算出每个子区域矩形的长度和宽度。
12.本发明所述步骤(1)中,结合区域的历史订单数据,使用深度学习模型来预测给定时间段内区域的订单数量;通过当前区域司机数量再加上待预测时间段内所服务的订单的目的地是当前区域的司机数量得到这段时间区域内的司机数量。
13.本发明所述步骤(2)中,假定未来一段时间订单目的区域的司机生成速率为μ和订单生成速率为λ。如果μ大于λ,说明该区域订单的供小于求,司机的期望等待时间较长;反之,则说明订单的供大于求,司机的期望等待时间较短。
14.本发明所述在步骤(3)中,基于在司机接客时单位时间收益不变的情况下最大化司机的总收益等价于最小化司机的空载时间,也可等价于最小化司机的空闲率,提出了一种在每个时间段最小化总空闲率的利用局部搜索算法的司机派单方法;与现有的单纯面向空闲率的贪婪算法相比,本发明中的利用局部搜索算法的司机派单算法能够最大化所有司机的总收益。
15.本发明所使用的深度学习模型是deepst,并通过纽约市的订单分布数据进行训练;订单分布数据包含以下几个信息:订单id,订单出现时间,订单完成时间,经度,纬度,订单收益,订单最大等待时间。
16.本发明提出的局部搜索算法将会先通过面向空闲率的贪心算法计算出一个候选的派单方案。因为对当前的订单进行分派会影响到司机到达订单目的地时该区域的司机数量,最终导致后续订单空闲率的计算出现偏差。因此,局部搜索算法会遍历候选派单方案中的每一个司机,为其选择空闲率更小的订单。
17.所述面向空闲率的贪婪算法会对每一个订单计算其空闲率,然后通过将订单按照空闲率从小到大进行排序,优先派遣可用的司机处理空闲率小的订单。在为订单分派司机的过程中,需要为订单分派离它尽可能近的订单。
18.本发明中对于一个订单而言,可用的司机代表当前时刻没有服务任何订单,且在距离目标订单不超过给定距离的司机;所述给定距离设置为两公里以内。
19.基于以上方法,本发明还提出了一种基于区域内订单供需关系的司机派单系统,所述系统包括:
20.区域划分模块,其用于对总预测区域进行划分;
21.预测模块,其用于预测一个区域未来某一时间段的订单数量和司机数量;
22.需求分析模块,其用于分析区域内订单的供求关系并预测司机的等待时间;
23.派单模块,在每个时间段结束使用派单算法调度空闲的司机去处理当前时间段生成的订单。
24.本发明与现有技术相比的有益效果包括:本发明使用的排队论方法与现有技术中使用的方法不同,现有技术仅能考虑司机数量原先与订单数量的情况,在实践中,例如在下雨天时,订单数量要远大于司机数量,不具有很强的可行性;而本发明则是分析所有可能情况,并对等待时间预测结果做了分析,在为司机分派订单时考虑到了未来的订单信息对当前派单的影响;结合订单目的地的供需关系,优先为司机分派空闲率较小的订单,减少司机在完成订单后的等待时间,同时结果表明通过排队论分析等待时间,具有较高的准确性;提出最小化司机的空载时间来作为优化目标,以最大化所有司机的总收益,结果表明本发明提出的局部搜索算法的效果要优于现有的算法。
附图说明
25.图1为本发明车辆派单方法的流程图。
26.图2为本发明各网格区域订单数量图。
27.图3为本发明deepst模型结构图。
28.图4为本发明订单变化速率图。
具体实施方式
29.结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
30.本发明中,“等待时间”和“空载时间”意义相同。
31.本发明提出的基于区域内订单供需关系的车辆派单方法,包括以下步骤:
32.步骤(1)、划分空间区域,并对区域内未来一段时间出现的订单数量进行预测;
33.步骤(2)、结合预测的订单数量与司机数量,分析特定区域的订单供需关系并利用排队论分析司机在完成订单后的空载时间,所述空载时间是指司机完成订单后到接到下一个订单前所需要的时间;
34.步骤(3)、结合司机完成订单后的空载时间与订单里程数来分析订单的空闲率,所述空闲率指司机在接送乘客的过程中,空载时间占总时间的比值;根据空闲率来为司机派单以保证所有司机的总收益最大化。
35.使用了深度学习模型来预测划分好的各个区域的订单数量;根据司机数量与订单数量,分析一个区域内订单的供需关系,并计算司机的期望等待时间;结合司机的空载时间分析订单的空闲率;使用面向空闲率的贪心算法来获取一个候选的派单方案;并使用局部搜索算法来对候选的派单方案进行更新,获得更优的派单方案。
36.实施例1车辆派单方法流程
37.车辆派单方法概要流程
38.如图1所示,方法的流程主要分为以下三个阶段:预测阶段,供求关系分析,订单分派。预测阶段需要完成订单与司机的数量的预测。供求关系分析阶段将通过上一个阶段预
测得到订单数量和司机数量来分析该区域未来时间段的订单供求关系,计算得到每个区域司机的期望等待时间。最后在订单分派阶段,结合订单本身的里程数,以及订单目的地的司机的期望等待时间,分析当前订单的空闲率,然后优先分派司机处理空闲率小的订单,以减小司机将乘客送至目的地后等待下一个订单所需的时间。
39.1预测阶段
40.在预测阶段,本发明需要对未来的订单和司机的数量进行预测。订单预测方面,本发明将一天的时间划分成多个时间段,然后通过之前时间段的订单数据来训练一个深度学习模型,再利用深度学习模型预测下一个时间段的订单数量。考虑到人的活动是具有不确定性的,因此无法直接精准的预测下一个时间段每一个订单出现的位置。所以本发明首先要将区域按照经纬度划分成矩形的网格,然后以区域为单位来预测订单的数量。在司机数量预测方面,本发明将当前空闲的司机的数量加上在时间段i能将订单送往区域j的司机数量作为未来在时间段i区域j的司机的预测数量。
41.2供求关系分析
42.在供求关系分析阶段,本发明利用预测阶段得到的时间段i区域j的司机与订单数量,分析得到该时间段该区域的司机生成速率λ和订单的生成速率μ。根据分析,可以得到司机在时间段i将订单送到目的区域j后的等待时间。当该区域在时间段i时的订单供大于求时,订单数量将大于司机数量,此时等待时间较少,这意味着司机在等待一个较短的时间就能够可以找到下一个订单。当该区域在时间段i时的订单供小于求时,订单数量将小于司机数量,此时等待时间较小,这意味着司机在等待一个较短的时间后就能够找到下一个订单。
43.3订单分派
44.在订单分派阶段本发明将结合订单本身的里程数和订单目的地的司机的等待时间计算得到订单的空闲率。将订单按照空闲率进行排序,先分派司机服务空闲率较小的订单,利用贪心算法形成一个候选的派单方案。但是考虑到先前的派单会影响到后续的订单空闲率的计算产生影响,因此需要遍历候选派单方案中所有的司机,为每个司机选择可接受范围内空闲率最小的订单。
45.实施例2车辆派单方法相关数据
46.本方法中涉及的数据主要包括:全局空间信息、区域信息、区域历史订单数据、订单信息、司机信息。表1到表5详细展示了这5类数据的结构信息。
47.其中,所述全局空间信息是指司机和订单所在的空间,本方法只会对此空间内生成的订单进行处理,同时,不会将司机派遣到此空间以外的区域。
48.表1全局空间信息
[0049][0050]
所述区域是订单数量和司机数量预测的基本单位。因为无法精确的定位每一个订单生成的位置,因此本发明将空间划分成多个区域,然后以区域为单位预测订单数。
[0051]
表2区域信息
[0052][0053]
所述区域历史订单数据是本发明用于训练深度学习模型的数据。考虑到无法精确地预测出某个时刻区域内产生的订单数量,因此本发明将一个完整的派单周期根据需要分割成好多个时间段。区域历史订单数据则包含了一个区域在特定时间段的订单数据信息,历史信息主要包含以下几个部分:区域编号、时间段、在此时间段出现的订单数量、在此时间段消失的时间段以及当时的天气状况等。
[0054]
表3区域历史订单数据
[0055][0056]
所述订单信息是乘客发布的乘车信息,包含了乘客发布订单的时间、乘客现在所在的位置信息以及乘客的目的地。同时,考虑到乘客的耐心是有限的,因此乘客会在平台长时间未为其处理订单而取消订单,因此需要保存订单预计取消的时间。司机必须要在这个时间前完成接客。收益是司机在完成订单后将会取得的报酬。
[0057]
表4订单信息
[0058][0059]
所述司机信息主要包括司机当前所在的位置以及司机完成接客最早需要的时间,本发明在派单的过程中需要时刻维护司机的最早空闲时间,以便及时为空闲的司机派单。
[0060]
表5司机信息
[0061][0062][0063]
实施例3实现车辆派单方法的系统
[0064]
本发明实施例对车辆派单系统进行了描述,所述车辆派单系统包括:区域划分模块、预测模块、需求分析模块、派单模块。
[0065]
各模块的具体使用方法如下:
[0066]
1、区域划分模块
[0067]
本发明实施例根据预先设定好的参数n,将空间划分成大小一致的n
×
n个矩形。计算右上角的经纬度与左下角的经纬度的差值,然后将这个差值除以n,得到每个矩形的长和宽,依照计算出来的长和宽来对空间进行分割,并从上到下,从左到右来给区域进行编号。将每个矩形作为一个区域,统计在某一时间段这个区域的订单数,就可以得到在未来某一个时间段,某个区域内的订单数量。
[0068]
当某个时间段空闲中的订单分布如图2所示(每一个灰点代表此时间段出现的订单)。假设将n设置为4,便可以将空间划分如图2所示4
×
4的区域,分别编号为1、2、3
……
然后对每一个区域统计在这个时间段生成的订单数。如图2所示,可以看到区域5的订单数为3,而区域7的订单数为0。
[0069]
2、预测模块
[0070]
在本发明的派单系统中,需要预测给定时间段内每个区域的订单需求。对于重新加入的司机,可以很容易地根据他们的任务和送客所需时间估计他们何时将订单送到目的地。在实践中,由于单个用户行为的不确定性,很难预测特定乘客或司机的准确位置和时间戳。为了利用乘客需求和供应的分布,本发明预测在给定时间段(即接下来5分钟)内给定区域(即区域的空间范围,如正方形区域或六边形区域)的乘客数量。一些深度学习模型可以被应用于特定区域和时间段的乘客需求预测。例如可以使用deepst模型来预测未来某一个时间段区域ak预测的订单数量deepst的模型架构如图3所示,它是通过输入该地区历史的订单数量和外在的天气信息来预测下一个时间段的订单信息。它从历史的订单数据提取出趋势信息,周期信息和临近信息,然后将这三个信息与外在的天气信息进行整合,最终得到预测结果。本发明使用纽约市的订单数据来对这个模型进行训练,然后对下一个时间段各个区域的订单数量进行预测,并结合当前时间段未分配的订单集合rk,得到下一个时间段可用的订单。
[0071]
而司机数量则可以通过司机预计的行程来进行推测。本发明可以通过分析表5得
到区域ak当前空闲的司机集合dk,并得到司机当前任务表,从任务表中可以分析得到在时间段i之前到达区域ak的司机集合表6展示了一个司机当前任务表的示例,从表中可以发现时间段为5,目的区域为2的能结束订单司机有1,2,3,5。假设,此时空闲的司机的集合dk的大小为2,那么就可以得到时间段5区域2的空闲司机的数量约为6个。
[0072]
表6司机当前任务表
[0073]
司机编号出发时间段最晚结束时间段目的区域编号11422252315243415352
[0074]
3、需求分析模块
[0075]
本发明将通过预测的订单数量与司机数量来分析得到司机在区域ak在时间段i的期望等待时间。本发明通过在这个时间段生成的司机数量和订单数量除以时间段长度tc来得到司机的生成速率μ和订单的生成速率λ,所述生成速率的计算方法如下:
[0076][0077][0078]
同时,在考虑到乘客的耐心是有限的,因此订单会以一个特定的速率减少,而这个速率是与当前订单的数量n有关的,且与司机生成的速率μ相关。订单减少的速率为β为根据数据统计出来的参数,β越大意味着乘客越缺乏耐心,这种情况订单减少的速率较大,本发明在实验中选择的β为2。图4展示了订单数量的变化速率,订单数量以λn的速率从n变成n+1,而以μ
n+1
的速率从n+1变为n。其中λn恒等于λ,而当n》0时,μn=μ+r(n),当n《0时,μn=μ。假设订单数量为n的概率为pn。在长时间的统计情况下,订单数量从n变为n+1的次数与从n+1变为n的次数是基本一致的,因此就有μnpn=λ
n-1
p
n-1
,且最后可以得到
[0079][0080]
接着,考虑以下三种情况:μ》λ、μ《λ、μ=λ。
[0081]
1.当μ《λ时,由上述分析可以解得p0的值,如下所示:
[0082][0083]
当当前订单数量n大于0时,每一个到达的司机都能在很短的时间内分配到订单,因此此时的等待时间是0,而当n等于0时,司机需要等待时间才能够被分配到订单。而当n小于0时,这时候|n|表示在等待的司机的个数,因此刚加进来的司机需要再等待时间。因此本实施例可以通过以下式子估算出等待时间et(λ,μ)。
[0084][0085]
2.当μ》λ时,司机生成速率大于订单生成速率。但是考虑到一个区域能容纳司机数量是有限的,不可能无限制的增大。因此,本实施例假设此区域可容纳的司机数量最多为k,因此,我们可以假设当n《-k时,pn为0。同时,将记为θ。
[0086]
那么可以分析得到
[0087][0088]
因此,可以解得
[0089][0090]
而此时的等待时间同样可以通过同样的方法进行估计,结果如下:
[0091][0092]
3.当μ=λ时,同样假定此区域最多容纳k个司机,因此可以分析得到等待时间为
[0093][0094]
此时,
[0095]
在实验中,根据历史数据,将超参数β和k分别设置为2和256。
[0096]
4、派单模块
[0097]
本发明实施例中的派单模块包含了如算法1所示的基于批处理的算法框架。本发明方法并不是实时地为司机派单,而是在每个时间段结束后为这一批生成的所有空闲的订单分配订单。将一个时间段的长度设置为δ,δ的取值一般是30秒到1分钟。具体来说,对时间段i产生的订单做以下处理,首先检索每个区域ak的订单集合rk和可用司机集合dk。这里的订单rk包括ak地区上一个时间段未被分配到司机的订单和这个时间段新出现的订单。此外,可用的司机dk包括上一时间段未分配到任何乘客的司机,以及当前时间段完成之前分
配任务后在ak区域重新加入平台的司机。为了估算当前调度时段[t,t+tc]的乘客到达率和重新加入司机的人数,本发明还预测了ak地区的即将到来的乘客人数和重新加入司机人数然后,使用本发明车辆派单方法来实现乘客和司机配对,以最大化当前调度时间段[t,t+tc]平台的收益总和。
[0098]
算法1基于批处理的算法框架
[0099][0100]
实施例4车辆派单方法说明
[0101]
4.1.面向空闲率的贪心算法
[0102]
本实施例假设目的地ak的司机的生成速率为μ
(k)
,订单的生成速率为λ
(k)
。那么通过实施例3中的分析得到ak的司机的期望等待时间为et(λ
(k)

(k)
),继而可以得到司机dj服务订单ri的空闲率如下所示:
[0103][0104]
其中cost(si,ei)表示从订单的起始位置到终点所需要的时间成本。所述面向空闲率的贪心算法通过尽可能地挑选出空闲率较小的订单先分派给司机以最小化司机的空载时间。算法2展示了贪心算法为司机选择合适的订单的方法。
[0105]
算法2面向空闲率的贪心算法
[0106][0107]
4.2.局部搜索算法
[0108]
在算法2中,先计算所有区域的订单生成率λ和司机生成速率μ。然后再计算每个订单的空闲率,然而实际上当前订单的分派会对之后空闲率的计算产生影响。因此本发明利用局部搜索算法,先通过算法2生成一个候选的派单集合,然后再对派单集合中的每个司机进行遍历,为每个司机选择更优的订单。具体算法过程如下所示:
[0109]
算法3局部搜索算法
[0110][0111]
4.3.技术效果展示
[0112]
本发明通过局部搜索算法实现了基于供需分析的派单方法,通过预测未来的订单与司机数量来获得一个区域内司机的等待时间,并由此反映出区域内的订单的供需关系。
[0113]
在订单预测方面,本方法使用纽约市2013年1月到5月的订单数据作为数据集来训练模型。首先将原始空间划分成256个区域,并通过区域划分模块得到每个区域的历史订单信息。具体数据集的配置如表7所示:
[0114]
表7数据集配置
[0115][0116][0117]
对四种订单预测方法进行评估,分别是:ha(使用历史订单的均值来作为下一个时间段的预测结果)、lr(线性回归)、gbrt(梯度回归树)、deepst-gc(基于深度学习的预测方
法)。从表8中可以看到,使用deepst-gc来预测订单数量的偏差要小于其他预测算法,每一个区域每一个时间段的预测偏差只有15个订单左右。这说明本发明提出的派单方法通过使用深度学习方法来实现订单预测具有很好的效果。
[0118]
表8预测效果图
[0119] rmse(%)realrmse(s)deepst-gc2.3015.03ha7.4648.21lr3.4021.66gbrt2.7417.67
[0120]
在得到预测的订单数量后,本发明方法结合了司机计算出来的数量来对区域内订单的供需关系进行分析。司机的等待时间是通过模拟派单过程中司机实际的等待时间计算出来的。本发明实施例分别将司机数量设置为1000到10000,并通过实验分析了等待时间预测的偏差。从表9中可以发现,本方法使用排队论来对司机的等待时间进行分析是有效的。当司机的数量达到3000时,等待时间的预测偏差达到最小。司机数量偏少时,每位司机的等待时间都很小,但是他们必须要等到时间段结束之后,才会被分派到订单,因此等待时间偏大。
[0121]
表9等待时间预测结果
[0122]
司机数量mae(s)rmse(%)realrmse(s)10002.484.9112.1420002.114.979.3330001.834.725.0240001.975.117.0460002.175.429.2380002.515.9212.14100005.336.7241.92
[0123]
最后,在结合区域内订单供需关系的基础上,本方法提出了一个为司机匹配合适的订单的算法,以保证司机的空载时间能到达最小,收益达到最大。本发明实施例使用的比对算法是在每个时间结束时为司机分配订单的随机算法和面向空闲率的贪心算法。在实验中,将订单的最大可等待时间设置在两分钟到五分钟,然后将时间段长度设置为5秒,可以得到派单效果随司机数量的变化关系表。从表10中可以看到,局部搜索算法的总收益在所有算法里面表现最好。同时,派单收益与司机数量呈现正相关关系。这是因为司机数量越多,在同一时间能被处理的订单数量就越多。而局部搜索算法,因为能够计算出更加精确的等待时间,因此它的派单效果要优于面向空闲率的贪心算法。从表中可以看出,服务的订单数越大并不意味着最后的总收益越大。这是因为服务的订单数越大,司机空载着等待下一个订单的次数就越多,导致司机的空载时间增长。最终导致收益会小于服务订单数更少的算法。
[0124]
表10派单收益
[0125][0126]
现有的面向空闲率的贪婪算法与实施例4.1中相同,仅能考虑司机数量原先与订单数量的情况,在实践中,例如在下雨天时,订单数量要远大于司机数量,不具有很强的可行性;而本发明提出的局部搜索算法则是分析所有可能情况,并对等待时间预测结果做了分析,在为司机分派订单时考虑到了未来的订单信息对当前派单的影响;结合订单目的地的供需关系,优先为司机分派空闲率较小的订单,减少司机在完成订单后的等待时间,同时结果表明通过排队论分析等待时间,具有较高的准确性;提出最小化司机的空载时间来作为优化目标,以最大化所有司机的总收益,从表10中的结果表明本发明提出的局部搜索算法的效果要优于包括面向空闲率的贪心算法和随机算法在内的现有算法。
[0127]
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1