一种基于现实地理位置的组队匹配方法与流程

文档序号:16001008发布日期:2018-11-20 19:27阅读:334来源:国知局

本发明属于数据分析技术领域,具体的说是一种基于现实地理位置的组队匹配方法。



背景技术:

现有的技术方案中基于地理位置的匹配并没有使用聚类的方式,而是单纯采用经纬度计算两点距离排序后直接得到最近的用户匹配。并且该项匹配方案采用一对一的单目标匹配方式,考虑其他因素较少,并不适用于队伍匹配、多人数匹配模式。从大数据分析,该方案也不适用于大规模数据时的匹配。而基于聚类的研究却与上述方案相反,更多的是研究大规模人群行为、聚集、疏散等方面。这些技术方案旨在解决发生地震、暴雨等大规模自然灾害时对群众进行安全性疏散问题,并未考虑到非自然灾害情况下小规模人群的需求。

聚类是一种数据挖掘分析方法,就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。通过不断改进下意识中的聚类模式来学会如何区分猫狗、动物植物。目前在许多领域都得到广泛的研究和成功的应用,如用于模式识别、数据分析、图像处理、市场研究、客户分割、Web文档分类、数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等。

聚类算法有多种,其中经典方式有k-means方法、层次聚类法、FCM算法、SOM算法等四种。我们通过实验对四种算法进行了分析,得到不同精度的聚类结果。实验使用国际通用UCI数据库中的IRIS数据集,该数据集包含1500个样本数据,分别取自三种不同的莺尾属植物setosa、versicolor和virginica的花朵样本,每个数据含有4个属性,即萼片长度、萼片宽度、花瓣长度等,单位为cm,实验对比结果如表1所示。

表1几种聚类方法的实验对比结果

根据上述结果分析,采用k-means方法能解决大量数据和最优解问题。FCM算法能减少聚错样本的数量,由于FCM方法容易陷入最优解的死局降低运行时间,较少使用,只有确定聚类数量及内部成员个数时考虑采用。层次聚类最大优点是降低运行时间,而SOM算法存在运行时间较大,平均准确度最低等问题。目前各种聚类算法也不断提出和改进,适合于不同类型的数据,因此聚类算法和效果成为课题研究的重点。

由于小规模人群的匹配需求通常采用上级调动通知模式,需上级查询当前范围内的空闲目标并进行聚集。然而对交通事故、犯罪案件处理人员的集结,并未有优化,所需时间较多。小规模人群的匹配模式并未采用聚类的方式,实现起来速度较慢,划分较为不合理,并且研究周期长,工作量较大,不能很好满足一定情况下的需求。



技术实现要素:

本发明的目的,就是针对目前研究主要集中在自然灾害情况下的大规模受灾人群的聚集与疏散方面,对小规模队伍情况集结则有所忽视的问题。本发明主要思想是通过对当前请求人群,采用聚类算法将请求者按照需求跟地理位置分为一定人数的队伍。本方案旨在研究发生交通事故,犯罪案件等情况下小规模队伍人数聚集,对处理人员的快速集结。并根据事故的严重性及危险性,研究不同严重性事故下的聚集处理的人数。当采用本系统方案,总部只需要根据事故的大小直接发布所需要的人数需求以及事故所在地理位置进行组队。此时系统会根据需求将附近的空闲工作人员进行自动聚集集结,汇聚到事故发生处。这样加快了人员到达现场的速度,无需仔细查询是否有空,而是系统自动判断,总部只需要发布相应需求。

本研究中将小规模人群中主动发起请求者作为最基础的工作对象。在某些行业中例如交警,则是所有交警被动作为请求者对象,其发布请求的可以是本人也可以是总部。而在工作过程中只要有人发起聚集请求,则所有的交警都将默认是为被动请求者为该发起请求的人进行快速集结处理人员。无论请求者是自己主动发起请求,还是如同交警这种由上级指控作为被动的请求者,其处理方式都是采用聚类的方法

本发明所采用的技术方案为:

如图1所示,一种基于现实地理位置的组队匹配方法,其特征在于,包括以下步骤:

一种基于现实地理位置的组队匹配方法,其特征在于,包括以下步骤:

S1、根据组队请求,获取所需队伍数;

S2、采用k-means算法进行第一次聚类匹配,并剔除完成组队匹配的对象;

S3、采用层次聚类进行第二次匹配,使得所有对象都在一个聚类中,或者满足设定的终止条件,并剔除完成组队匹配的对象;

该步骤为动态匹配,在匹配过程中随时会新增加匹配对象,新增加的匹配对象经过步骤S2加入当前环境,这样不断的进行多次循环匹配,直到无人加入匹配,或时间到达阈值,或者完成匹配。

S4、判断是否完成步骤S1中所有的组队请求,若当前所有组队请求均被完成,则结束当前组队;

若当前组队请求未完成,则对新加入的匹配对象进行需求分析,如果新的对象所需要的队伍人数匹配在当前剩余中存在同样队伍人数需求的,可以进行条件判断,是否满足剩余聚类所需要的人数,若满足条件,则完成请求者的请求,并剔除完成匹配的队伍;若不满足,则将其重新作为新的对象加入匹配;

当剩余请求者累计时间值小于阈值t的,在设定的地理位置d内,根据累计时间从大到小优先匹配,对累计时间值大于阈值t的,退出当前匹配并反馈给请求者。

进一步的,先计算出初式所需要的队伍数量值,所述步骤S1的具体方法为:

设在某时刻发起组队请求的所需队伍数为:2人队伍发起者为a1人,3人队伍发起者为a2人,4人队伍发起者为a3人,直到m人队伍发起者为am-1人,设n为所需队伍总数,则:

设定所有偶数队伍均由基础为2的聚类进行合成,所有奇数队伍均由偶数聚类加上一个奇数合成,申请的偶数队伍的人数为a个,奇数队伍的人数为b个,则n值为:

进一步的,所述步骤S2的具体方法为,根据现实的地理位置,进行最基础的聚类计算获得第一次聚类的结果:

S21、选择k个对象,设定初始代表对象K值等于n,每个对象初始地代表了一个聚类的平均值或中心;

S22、对剩余的每个对象,根据其与各聚类中心的距离,将它赋给最近的聚类;其中,各个对象之间的距离通过下式获得:

其中,R为地球半径,取平均值为6371km;表示两点的纬度;△λ表示两点经度的差值;

S23、根据聚类结果,重新计算k个聚类各自的中心,计算方法是取簇中所有元素各自维度的算术平均数;

S24、重复步骤S22~到S23直至新聚类中心与原中心的距离小于指定阈值或达到迭代上限,直到将所有对象聚类完毕。

进一步的,采用综合的聚类方式进行后续层次的迭。在S3完成的过程中,只是进行了最基础的聚类,即形成了最初的聚类,一般包含1到3个成员,而对于大叔了的成员聚类需求,需要新的方法。所述步骤S3的具体方法为:

S31、计算各个聚类之间的距离均值:

假设p1,p2p3...pn是具有n个单成员的聚类,|p-p'|是两个对象p与p'之间的距离,两个聚类之间最小值的距离为:

最大距离:

mi是Ci的均值,ni是聚类Ci的对象数目,得到两者之间均值距离:

distmean(Ci,Cj)=|mi-mj|

两者之间平均距离:

S32、合并两个最近的聚类,将合并后的聚类作为最底层;对新增的对象,根据聚类内部的奇偶数需求作为当前对象或者作为聚类加入当前层数;所述合并的条件为:

Ci,Cj中的ni与nj的需求相同,即假设n1需求是五人队伍匹配,那么其他需求的除开随机人数,则必须都为五人队伍匹配;

在聚类过程中对两个聚类Ci、Cj中对象数目ni与nj进行相加ni+nj,若是ni+nj>Y,则不能合并,Y是队伍人数;

S33、判断新生的聚类是否满足当前请求者的队伍需求,若满足,则将当前聚类剔除该层次,并不在参与后续合并;若不满足剔除条件,根据当前还未完成请求的队伍数量的缺失人数进行统计,根据统计结果进行当前步骤的重复,直到超出规定的时间则是反馈给请求者组队失败的信息。

进一步的,进行最后的阈值判断,对超出一定时间的请求者进行反馈,所述步骤S4的具体方法为:

S41、对剩余为完成匹配的请求者进行统计,然后将新加入的请求者进行对比分析,比如一个五人队伍请求者缺两个人才能完成匹配,则是新的请求者若是有两人并请求的是五人队伍,这是就将新加入的请求者进行第一步距离进行判断,是否满足一定范围距离条件,若是满足,并且在新增的请求者对象到形心x0的距离dx满足当前距离要求阶段dx<R1则将对象加入目标,若是目标数量满足达到队伍人数需求,则完成匹配剔除,若是不满足则进入下一阶段;

S42、第二阶段则是将原有的距离R1扩大范围,对后续的半径为R2,R3的圆型范围内部进行条件匹配,满足当前的距离并且满足请求者请求的需求,则进入下一步考虑请求者等待的时间指Ti,进行当前满足上诉条件的各个对象进行等待时间值大小对比,优先考虑Ti值大的进行。若是新的加入请求者对象均不满足S41,以及本过程中的距离时间要求,则将其重新作为新的对象加入到新的匹配,若是剩余的请求者的等待时间Ti值过大,超过阈值t,则退出当前匹配并反馈请求者。

本发明的有益效果为,本发明采用聚类方法,对小型的队伍人数需求进行聚类集结。实现了对于需求一人以上至几十人的小规模的人数匹配需求,满足了小规模人数聚集,能快速集结。相对于单一目标对单一目标的一对一组队,本发明在人数上更加自由,切基于地理位置的考虑更加注重多人数情况。另外相对于大规模的人群,实现了在小规模情况下的具体人数集结需求,并且运算时间资源消耗相对于大规模人群分析更加节省,适用于例如交通事故处理,案件处理等情况。

附图说明

图1是本发明的流程图;

图2是100个初始人员的随机分布图;

图3是k-means算法后的聚类结果分布图;

图4是步骤S2结束后剔除满足需求的请求者后的人员分布图;

图5是凝聚和分裂层次聚类示意图;

图6(a)第一轮剔除前聚类分布图(b)第一轮剔除后聚类分布图;

图7(a)第二轮剔除前聚类分布图(b)第二轮剔除后聚类分布图;

图8(a)第三轮剔除前聚类分布图(b)第三轮剔除后聚类分布图;

图9是进入优先级策略的聚类分布图;

图10是经过优先级操作后的聚类分布图;

图11是需要进入最终策略的聚类分布图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述,以便本领域的技术人员更好地理解本发明。

实施例

以100人申请为例,假设100人同时发出申请,队伍需求为10+9+8+....+3+2+1。总共十种需求的不同队伍人数在内。由第一步知需要其中10,9,8均为一个队伍数需求,7人队伍需求2队,6人需求2队,5人需求3队,4人需求五队,2人需求七队,3人需求1队。经过计算总共需要103人,所以其中有部分人不会完成匹配。其中第一次计算可知n值为72,所有100人初始人数随机分布在一个区域内,此处用坐标系表示,如图2所示。

由于考虑的底层均为2人或者1人队伍,所以其均值应该在1.5左右。从而继续可以将满足当前2人需求的进行剔除,不满足的继续下一步。因为K值是确定值所以最终得出的聚类均为包含2个人的聚类或者余下只为一个人的聚类。这只是满足2人匹配的队伍,多于两人的队伍的匹配组队还需要采用层次聚类方式继续。采用隔断时间法,每隔一定时间进行一次,对当前未加入操作的单体对象进行k-means方法聚类:

其中k-means算法实现过程如下:

初始输入:包含n个对象的数据库和聚类的数目k;

最终输出:k个聚类,使平方误差准则最小。

步骤1:任意选择k个对象作为初始的聚类中心;

步骤2:计算剩余的点到质心的距离并将点归到最近的质心所在的类;

步骤3:根据聚类结果,重新计算k个聚类各自的中心,计算方法是取簇中所有元素各自维度的算术平均数;

步骤4:重复进行2~3步直至新聚类中心与原中心的距离小于指定阈值或达到迭代上限,直到将所有对象聚类完毕。

在整个过程中开始需要计算各个对象之间的距离,采用方法Haversine公式进行计算各点之间距离:

其中R为地球半径,可取平均值6371km;表示两点的纬度;△λ表示两点经度的差值。通过haversine公式计算出各个对象的最短距离,并且利用排序算法对当前发出请求的用户计算出两者最短距离后进行聚类划分。

图3显示了在原100人情况下进行k-means算法后的人员分布情况。

在将第一次计算后满足需求的最基础的2人队伍,3人队伍进行剔除,不在进入后续计算过程,其剔除后的分布如图4所示。

使用自底向上的策略,令每个对象形成自己的聚类开始,并且迭代地把聚类合并成越来越大的聚类,直到所有对象都在一个聚类中,或者满足某个终止条件。在合并过程中,找出两个最接近的聚类(根据某种相似性度量即某种条件,比如都申请组成5人队伍),并且合并它们,形成一个聚类。因为每次迭代合并两个聚类,其中每个聚类至少包含一个对象,因此凝聚方法最多需要n次迭代。具体的算法步骤如下:

步骤1:将经过k-means方法后的各个聚类导入计算;

步骤2:计算各个聚类之间的均值距离;

步骤3:将满足合并条件的聚类进行合并,并进行完成条件判定,若是完成了所有组队请求则将当前类退出后续操作,并将当前未完成的聚类作为最底层考虑;

步骤4:进行匹配等待时间与地理位置距离两个因素的考虑,做优先级处理;

步骤5:将新增加的对象或者经过k-means的聚类加入当前环境,并跳转到步骤2。

图5为一个层次聚类的示意效果图,其中各个聚类的各种距离公式如下述的各个公式:

其中假设p1,p2p3...pn是具有n个单成员的聚类,其中以p1为例进行计算推导其相应的参数。

|p-p'|是两个对象p与p'之间的距离,两个聚类之间最小值的距离可得:

最大距离:

mi是Ci的均值,ni是聚类Ci的对象数目,所以两者之间均值距离:

distmean(Ci,Cj)=|mi-mj| (7)

两者之间平均距离:

利用上述计算聚类之间的距离方法可以计算各聚类之间的距离来判断是否进行合并。

因为已经利用k-means方法计算得出了最小的聚类,所以本方法接下来直接在聚类上进行。算法步骤如下:

步骤1:计算两个聚类之间的距离distmin(Ci,Cj);

步骤2:采用排序法算出两个最近距离的聚类Ci,Cj;

步骤3:合并两个最近的聚类Ci,Cj,并将当前合并过后的聚类作为最底层,而由于时间关系新增的对象,根据聚类内部的奇偶数需求作为当前对象或者作为聚类加入当前层数;

步骤4:判断新生的聚类是否满足当前请求者的队伍需求,若满足,则将当前聚类剔除该层次,并不在参与后续合并;

步骤5:若不满足剔除条件,则返回到步骤3作为底层继续合并。

利用公式求出两者之间的平均距离d,对各个聚类之间距离进行比较排序得出最小的dmin。对当前最近的两个聚类Ci,Cj进行合并得新的Ci。在合并过程中需要满足以下条件:

(1)Ci,Cj中的ni与nj的需求相同,即例如n1需求是五人队伍匹配,那么其他需求的除开随机人数,则必须都为五人队伍匹配。

(2)在聚类过程中对两个聚类Ci,Cj,中对象数目ni与nj进行相加ni+nj,若是ni+nj>Y(Y是队伍人数,即匹配几人队伍)则不能合并,需要对排序中排后序位置的进行合并条件判断。对当前的新聚类Ci进行条件判定是否满足完成条件,若是满足队伍人数条件,则结束该聚类的匹配,对当前聚类进行剔除,不在进入下面的操作。若是不满足当前聚类,则对其进行条件分析缺少多少人数。

在处理过程中具有n次迭代操作。如图6显示第一轮操作聚类分布情况:(a)第一轮剔除前聚类分布图(b)第一轮剔除后聚类分布图。第二轮操作聚类分布情况如图7所示:(a)第二轮剔除前聚类分布图(b)第二轮剔除后聚类分布图。第三轮聚类操作后的结果如图8所示:(a)第三轮剔除前聚类分布图(b)第三轮剔除后聚类分布图。

若缺少人数为x人,则先对时间因素分析,若超过时间因素值t(t是用户发起请求时开始进行累计计时。),则进行选择处理。对一定范围d(d为地理位置)内满足缺少人数的直接进行聚类合并,无需等待下一次层次聚类。对超过时间因素t值的做最高优先级考虑。对范围进行三次扩展,若是三次扩展后依然未能匹配到合适的队伍,则将当前聚类剔除,将聚类各个对象作为新的对象加入当前场景。两者之间的优先级,在一定时间内对地理位置考虑,在超过一定时间内但是仍然在优先级策略中将优先考虑时间因素。

时间t对当前聚类的时间,采用平均数计算:

Ti是当前聚类的平均等待匹配时间,tn是第n个成员的等待匹配时间,n是当前聚类成员数量。

在上述过程中,计算聚类特征(形心以及当前聚类半径),计算方式如下:

其中CF是聚类特征包含了n,LS,SS三个特征:

CF=<n,LS,SS> (10)

n为聚类中点的数目,LS是n个点的线性和(即),SS是数据点的平方和(即)计算p1的形心x0如下:

利用GPS获取该形心位置x0的经纬度

计算聚类半径R如下:

具体的算法步骤如下:

步骤1:对新增目标数量及新增目标需求进行分析是否满足缺少人数若是满足,并且在新增的对象到形心x0的dx距离满足三个阶段,第一阶段为dx<R1则将对象加入目标,若是目标数量满足达到队伍人数需求,则完成匹配剔除。

步骤2:若是第一阶段R1不满足,则对后续的R2,R3距离内进行条件匹配,并且考虑时间因素Ti,优先考虑Ti值大的进行。若是均不满足,则将其重新作为新的对象加入匹配,若是Ti值过大则退出当前匹配告诉请求者。

步骤3:考虑时间因素值时,对当前超过一定值的例如大于2分钟的,进行排序,对Ti较大的进行优先考虑。而对超过一定实际例如10分钟的,则是放弃匹配回到初始,提示用户重新选择较低队伍人数进行匹配。

地理位置考虑时,在考虑时间因素的情况下对三阶段R距离的考虑在其中,超出一定距离则不具有实际意义,所以不再考虑超过一定距离d值的聚类,若是在超过一定距离后并且超过时间了也将退出匹配提示用户更换位置并且降低匹配需求队伍人数。

经过以上计算,同时考虑优先级因素,第一阶段经过步骤1进行考虑地理位置因素,对满足地理位置得进行统计,其进入优先级策略时的人员聚类分布如图9:

考虑到时间地理因素,由于新加入的三个独立对象进行匹配,这三个独立对象中有两人提出得需求与当前剩余队伍不合,所以剔除不进行考虑,将其作为下一轮得新用户进行考虑。所以综合请求者需求和优先级策略考虑后其分布结果如图10所示:

其中上图完成两个剩余聚类的需求中的一个,而另一个仍然没有满足条件于是进入到最终策略考虑。将考虑其退出当前匹配还是重新分散加入最初的操作策略来重新作为独立对象开始匹配。剔除满足需求的请求者后,需要进入最终策略的人员聚类分布图如图11所示。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1