移动环境下基于大规模反近邻查询的医疗呼叫方法与流程

文档序号:14685560发布日期:2018-06-14 17:42阅读:173来源:国知局

本发明涉及LBS(LocationBasedService)领域,是一种移动环境下基于大规模反近邻查询的医疗呼叫方法,包含大规模时空数据分布式的处理以及智能移动终端应用的开发。



背景技术:

计算机及其网络技术的飞速发展,移动智能终端的出现以及移动定位技术的不断成熟为移动医疗各移动相关行业的信息化提供了夯实的基础。通过移动互联,将分散在不同地理位置的移动医疗车以及医疗需求客户紧密联结在了一起,将移动医疗车、医疗需求客户作为节点,构成了一个信息传递与信息共享的网络。客户可以实时了解附近移动医疗车的位置以及运作状况,同时移动医疗车司机也可以实时准确的接收到附近客户的请求,便于各方业务的洽谈,实现了医疗救护的高效呼叫。

结合近年来随着基于位置的服务和移动互联网的快速发展,医疗呼叫呼叫系统中,对于网络中各节点临近节点的实时查询成为一大技术难题。一方面是由于地理空间数据的数据量的迅猛增长,另一方面也是因为移动医疗呼叫业务中对于实时性的特殊要求。因此,如何实现高效的近邻查询成为移动云计算环境下的移动医疗呼叫系统新的需求和挑战。现在已经有几种近邻查询的方法,如最基础的kNN方法,以及作为kNN问题变种的RNN(ReverseNearestNeighbor)反近邻查询,已经成为典型的空间查询算法并得到了业界的普遍关注。自从Korn等人首次给出RNN查询的定义以来,作为一个热点研究问题,目前已有了大量的研究成果,并具备很好的应用价值。

由于现存的大部分RNN算法因为其索引或算法的结构化的特征,导致潜在的顺序执行问题。另外,也有着不具备可扩展性,缺失精度,或者产生维数灾难等问题。同时基于位置服务相关研究与应用的兴起,单机环境因为计算与存储能力有限,故无法支持大规模空间查询方法,解决方案就是同时利用多计算节点参与计算,这就需要设计新的分布式索引与并行查询方法。尽管RNN查询与其它的空间查询方法一样重要,但有效地支持大规模RNN查询的算法方面的工作成果还是相对较少。MRVoronoi除了设计空间索引结构之外,也简略地描述了利用MapReduce进行RNN查询的方法。但该方法需要额外的时间进行定位查询点,当维度增加时就会导致高的维护与计算代价。RankReduc方法通过MapReduce来支持处理大规模近似kNN查询,但该方法是不精确的,只能用于高维条件,且没有描述解决RNN的过程。所以现有的方法均不能很好地直接用来解决大规模RNN查询问题。

从大规模空间数据集中进行查找RNN的问题不仅作为一个移动医疗配送算法求解优化问题,同时也在智能导航、交通控制、救灾援助、气象预报、空间聚类等领域中有着广泛的应用。但是面对海量、大规模的时空数据,传统的RNN方法,很难满足移动互联移动医疗系统对于实时性的需求,基于该出发点,我们设计并实现了该发明。



技术实现要素:

根据上述背景技术中存在的缺陷和不足,本发明提供了移动环境下基于大规模反近邻查询的医疗呼叫方法,以解决现有移动医疗调动系统中医疗需求客户与移动医疗车近邻问题计算的不足。本发明也针对现有技术中存在的反近邻查询方法中的不足进行了改进,用以提高准确度和实时性。

为了实现上述目的,本发明所采用的技术方案是:移动环境下基于大规模反近邻查询的医疗呼叫方法,由云中心服务系统和智能移动客户端系统,执行步骤如下:

S1.云中心服务系统用于进行倒排网格索引的建立,以及执行分布式大规模反近邻算法;

S2.智能移动客户端适应不同用户功能需求与使用习惯,通过内置的定位系统和运营商的基站,以及依托网络获取自身的实时空间地理位置,发起医疗呼叫请求,并与云中心服务系统进行信息交互。

作为技术方案的补充,该移动环境下基于大规模反近邻查询的医疗呼叫方法所使用的云中心端服务系统由不少于一个云数据中心的网络服务器或虚拟主机所构成的,采用云计算这种并行化计算来处理大规模数据应对于大量的需要发起医疗呼叫的客户,并以客户为查询中心,在此位置发起查询清求,移动医疗车作为可供查询的数据集,在这种模式下,保证了高移动医疗量时的呼叫稳定性,加快了移动医疗信息搜索时的反应速度,同时增强了可扩展性。云中心服务系统通过使用采集到的客户位置以及移动医疗车位置,建立位置信息的分布式倒排网格索引。

由云中心服务系统使用倒排网格索引进行分布式时空信息的大规模反近邻查询,并返回最优移动医疗车给医疗需求客户。

倒排网格索引的处理步骤具体为:给定空间数据集P与Q,P与Q是由欧几里德空间数据点组成的集合,且数据集P具有客户位置以及Q具有移动医疗车位置信息,对于P中的客户位置点点q∈Q在数据集Q的位置用表达式q(x,y)表示,点q包含移动医疗车的位置信息及其周边的客户信息。

首先将数据集文件存储到分布式文件系统HDFS上,HDFS会自动将其分割成很多数据分块,每个Mapper读入一个输入数据分片,然后每个Mapper分析数据分片中的空间数据点,并计算出空间数据点到网格单元格的映射,最后Mapper把单元格p(i,j)在网格当中的位置作为key,把点q(x,y)的位置信息作为value,并将该<key,value>对应输出,Reducer则读取Mapper的数据输出,并收集相同单元格(key)中的点数据,然后输出单元格索引和包含在该单元格中的点的集合。

基于网格索引的大规模反近邻查询的方法为:参见图9,首先建立空间网格索引,并对网格空间进行整体扫描,从而建立了倒排网格索引,在Map函数中对分片数据区域用PCT轮圈算法,以点ci为圆心,半径r=|ci,si|进行轮圈,并将圆区域内或与圆边界相交的网格Cell(i)的Counter(gi)值计为1,即Counter(gi)=1;每个分片数据区域单独处理完后,最后在Reduce函数中合并,合并的过程中,按照网格处理算法进行扫描,每次扫描的过程中,对重叠的网格Cell(i)的Counter(gi)值累加,最后输出整个空间区域权值W最大Cell(j)。

作为技术方案的补充,大规模反近邻查询的定义为:假设有一个由空间对象p组成的N维空间D以及查询对象q,反最近邻查询是通过遍历所有对象p∈P并找出满足:RNN(q)={p∈P|Dist(p,q)<Dist(p,p')}。这里的Dist()是两个对象之间的欧氏距离,p’是P中离p第k员的近邻对象。

给定欧氏距离空间数据集P(医疗需求客户)和Q(移动医疗客车),其中P和Q是不同类型的数据集,如果给定数据集P中的一点p,SRNN查询结果是返回所有点q∈Q,其中q是p的最近邻节点,同时p也是q的反最近邻节点。

参见图1,设q为医疗需求客户,找最近的移动医疗车p。如果只是简单的用kNN算法查询最近移动医疗车,那么移动医疗车上的收件员p3和p5就会被放入到推荐集中,但是对于收件员p3来说,有离它更近的客户,即q2和q4,它更愿意去接受q2和q4的寄件,那么p3对于q点来说是不适宜被推荐的。只有当p同时也是q的反最近邻节点时,才会被最终作为SRNN查询结果返回。

参见图2,从多维度支持、结果精确和适合大规模处理三个方面总结对比了现有的部分算法与SRNN算法的特性。首先,假设空间数据集是海量级别,在内存与计算能力有限的单机服务器上无法直接处理;其次,算法是在2-4维的多维距离空间上运行,为了简化问题,计算距离均采用的是欧氏距离。第三,数据点是非均匀随机分布的,通常具备倾斜的数据特征;最后,查询点不在原始数据集中,是在数据空间中随机出现,所有的数据点与查询点在时间片内是位置不变,按时间片定期进行位置信息更新。以上这些假设均与大多数的现实世界的数据特征与应用需求相符合。

有益效果:更好的解决医疗需求客户与移动医疗车司机之间的搜索查询和相互定位问题,该移动医疗呼叫软件也针对技术中的不足在空间数据索引和查询方法存在的问题进行了研究,提出了一种改进的方法,提高了大规模数据环境下的定位与搜索查询的速度,准确度,精确度,并加强了移动医疗车司机与医疗需求客户之间的交互。

附图说明

图1为本发明的RNN的建立过程算法;

图2为本发明的RNN算法总结;

图3是SRNN过滤阶段算法步骤;

图4是Basic-SRNN示例展示;

图5为医疗规模移动医疗系统架构图;

图6为本发明的功能模块图;

图7为本发明的医疗需求客户与快递员交互的流程图;

图8为剪枝策略实例;

图9为PCT轮圈算法。

具体实施方式

实施例1:如参考图5,移动环境下基于大规模反近邻查询的医疗呼叫方法,使用了云中心服务系统和智能移动客户端系统,其中,云中心服务系统用于建立位置信息的分布式倒排网格索引,以及执行分布式空间大规模反近邻查询(SRNN)算法,智能移动客户端分别供移动医疗车司机和医疗需求客户使用。医疗需求客户端包括地图、定位、语音等基本功能。即该系统执行步骤如下:

S1.云中心服务系统用于进行倒排网格索引的建立,以及执行分布式大规模反近邻算法;

S2.智能移动客户端适应不同用户功能需求与使用习惯,通过内置的定位系统和运营商的基站,以及依托网络获取自身的实时空间地理位置,发起医疗查询请求,并与云中心服务系统进行信息交互。

实施例2:具有与实施例1相同的技术方案。其中实现医疗移动医疗呼叫所包括的步骤如下:如参考图6,移动医疗车司机在工作时登录到医疗需求客户端软件后,自动定位到当前的位置,然后选择是否公开自己的位置,如果公开,医疗需求客户则能够搜索到其位置,反之,则不能。在医疗需求客户公开自己的位置后,会将自己发生改变后的位置信息上传到云端服务器,云端服务器会将数据存储,并自动清理过期的数据。医疗移动医疗呼叫用户登录到医疗需求客户移动端软件后,自动定位到当前的位置,在移动医疗呼叫之前先进行目的地的确认,确定目的地有三种方式,分别是手动输入、点击地图、语音录入。确定以后即可开始搜索移动医疗车,云端服务器收到这次请求后根据医疗需求客户的位置使用空间索引算法对包含移动医疗车司机位置的数据进行处理,找出距离医疗需求客户位置最近的最优移动医疗车,并将其信息返回给医疗需求客户。

实施例3:具有与实施例2相同的技术方案。如参考图7所示,其中医疗需求客户端会在地图上显示搜索到的移动医疗车,点击移动医疗车图标即可查看对应移动医疗车的具体信息,如手机号码等,如果医疗需求客户希望通过电话来和移动医疗车司机沟通,点击信息页中的号码则会直接调用拨号器进行拨号。确认医疗移动医疗呼叫后,移动医疗车司机端则会收到对应的医疗移动医疗呼叫信息,如移动医疗车司机同意则表示此次移动医疗呼叫成功,同时在地图上显示双方的位置和一条在医疗需求客户和移动医疗车之间的路径,医疗需求客户等待移动医疗车前往来接收货物。若移动医疗车司机不能及时处理移动医疗呼叫信息,则表示交易不成功。

实施例4:具有与实施例3相同的技术方案,其中:该移动医疗呼叫系统的执行方法是:手持设备医疗需求客户端通过基于2G/3G/4G方式或是WIFI的无线网络,接入移动互联网的同时与云端服务器建立联系,医疗需求客户端负责显示地图,并携带相关参数,如位置数据信息。医疗需求客户信息向云端发送请求,移动医疗车司机在登陆该大规模医疗移动医疗呼叫系统之后,将空间地理信息(包括自己的位置信息以及医疗需求客户信息)发送到云端服务器,空间地理信息在云端服务器对司机公开的移动医疗车空间地理信息建立分布式空间索引。医疗需求客户端软件通过手机地图服务获取当前所在位置的信息,将获取到的位置信息发送到云端服务器,云端服务器采用SRNN查询技术,快速地从海量的医疗需求客户信息中查询到距离自己最近的最优移动医疗车,查询到的移动医疗车司机出现在医疗需求客户的医疗需求客户端软件地图界面上,医疗需求客户选择软件界面上的移动医疗车司机,可以向服务器发送请求或是直接拨打移动医疗车司机电话的方式发送请求,服务器将医疗需求客户请求转发到移动医疗车司机的医疗需求客户端,移动医疗车司机接收到发送请求后,对请求做出处理并返回给服务器,由服务器发送到医疗需求客户手机医疗需求客户端。如果移动医疗车司机和医疗需求客户达成协议,移动医疗车司机将会前往医疗需求客户的地点提供医疗移动医疗服务。

实施例5:具有与实施例4相同的技术方案,其中:其中SRNN查询处理步骤具体为:SRNN查询处理过程,可以分解为两个分别独立的空间处理过程:即过滤与验证阶段。(1)过滤阶段:如参考图3,过滤阶段的主要目的是通过查询来获得可能包括结果的候选集。过滤阶段的核心思想是找到围绕q点的空间范围内的所有的邻居对象。通过利用设计PCT算法来并行地读取q点周围的单元格,从而计算得到初始化的kNN查询结果集以得到q在空间数据集中的所有近邻对象。具体来说,首先以q为中心,初始化轮圈半径rδ,之后对这个圆型区域覆盖的单元格区域进行监控。当算法执行中在并行的增加半径rδ时,会触发新的一轮PCT算法来增量更新近邻对象集P。所以在随后的迭代执行过程中,在单位时间片内,只需要监控半径rδ所对应的区域S而不用监控整个数据空间。最终通过增量的执行PCT算法可以找到q周围空间的所有邻居并作为候选结果集Scnd。在整个过滤阶段的计算过程中,是把PCT作为一种可以在分布式环境下支持大规模的空间对象查询的可扩展查询算法来执行。(2)验证阶段:验证阶段主要是通过计算检查所有的kNN候选集,排除候选集中不属于RNN的点从而获得最终正确的RNN结果。具体来讲,在前面的过滤阶段中,得到的候选集Scnd。然后,把Scnd中的每一个点作为查询点,通过执行分布式kNN查询算法,来计算Scnd集中每一个点各自的反向邻居来验证其是否为q的RNN。对于每一个候选集Scnd中的点,采用分布式的机制来并发进行验证。每一个并行任务中,通过持续的遍历倒排空间网格索引执行kNN查询来进行验证,直到所有的候选集中的点都被验证完成,并将最终正确的RNN结果输出。

实施例6:具有与实施例4或5相同的技术方案,其中SRNN查询步骤按照分布式系统的分而治之思想的可以分为分解(Divide)与合并(Conquer)两个子过程。在分解(Divide)函数中处理过滤阶段来获得候选集,然后在合并(Conquer)函数中通过进行结果归并并验证排除错误的点来得到最终的RNN结果集。具体过程为:(1)分解步骤:给定一个候选集Scnd的点pi(i=1,2,…,k)。如参考图4所示,在过滤阶段中得到q的候选集Scnd为{p1,p2,p3,p4,p5,p6}。在分解步骤中,首先把候选集Scnd中的点作为查询点,运行PCT方法来一轮轮读取该点周围的单元格,从而得到Scnd中的点的最近邻。将查询到的q的所有邻居作为候选集,数据空间分为若干个文件分片,参考图4分为四个文件分片Split1,Split2,Split3和Split4。Mapper读取文件分片Split3处理后输出{(p1,q),(p2,p1)},读取split4处理后输出{(p4,p5),(p6,p5)}。如果分片内数据为空(没有数据点)将不必进行处理,如果一个数据点的最近邻不在同一个分片中,将跨分片进行分别查询处理,最后在合并过程中进行结果汇集处理。(2)合并步骤:Reducer从每个Mapper的输出结果集中接收查询点作为Key,kNN侯选点作为Value,按同一个Key进行结果合并。然后在该步骤中通过距离计算去验证相对于其它对象点来讲,q是否是与pi最近的点,如果不是的话就不是正确的结果而被排除,如参考图4中的p1和p3的最近邻都是q。而<p4,p5>互为最近邻,并不包含q,所以被排除掉了,同理其它点都被排除。因此,{p1,p3}为SRNN(q)的最后结果集。

在MapReduce框架执行的过程中,当Map任务结束时,会经过洗牌过程,这就会有大量的数据从本地的Map节点通过传输到Reduce节点中。这种MapReduce系统中的大量的洗牌过程中的数据移动会导致严重的系统负载,如果能够减少Map任务后在洗牌过程的中间传输数据,就可以显著地提高MapReduce的处理效率。所以需要设计一些更有效的RNN过滤查询算法和优化策略。通过分布式剪枝策略二分超平面剪枝算法来剪掉不必要的中间结果集,可以有效地提高利用MapReduce系统执行RNN查询的整体效率。下面给出根据二分超平面剪枝算法,来进行剪枝的一个实例,如参考图8,图中给出给出查询点q(发货客户)与一些对象点p1到p7(送移动医疗车辆),在第一轮圈中,剩余区域初始化为整体数据空间,可以得到q的最近邻候选集为{p1,p4,p7}。在q与p1点之间产生一个红色的垂直二分虚线⊥(p1,q)(因为数据分片的独立性,所以该垂直二分线,只在该数据分片所在的空间产生),对于在二分线⊥(p1,q)右上侧区域中的p2点,可以得知Dist(p2,p1)<Dist(p2,q),所以p2点可以被剪枝掉而不参与后面的轮圈计算。同理,可以得到⊥(p4,q)与⊥(p7,q)。这样可以在剩余的区域的单元格(标识为灰色阴影的单元格)中继续进行第二轮圈遍历,找到q的近邻p3,此时没有任何数据点在非剪枝单元格中,所以最终的候选集为Scnd={p1,p4,p7,p3}。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

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