CN103345510A - 查询最小距离和位置的动态监控方法及系统 - Google Patents

查询最小距离和位置的动态监控方法及系统 Download PDF

Info

Publication number
CN103345510A
CN103345510A CN2013102802002A CN201310280200A CN103345510A CN 103345510 A CN103345510 A CN 103345510A CN 2013102802002 A CN2013102802002 A CN 2013102802002A CN 201310280200 A CN201310280200 A CN 201310280200A CN 103345510 A CN103345510 A CN 103345510A
Authority
CN
China
Prior art keywords
subgraph
financial value
customer
location
end points
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013102802002A
Other languages
English (en)
Other versions
CN103345510B (zh
Inventor
姚斌
吴亦凡
李飞飞
肖小奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201310280200.2A priority Critical patent/CN103345510B/zh
Publication of CN103345510A publication Critical patent/CN103345510A/zh
Application granted granted Critical
Publication of CN103345510B publication Critical patent/CN103345510B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明提供了一种查询最小距离和位置的动态监控方法及系统,包括:给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;根据G中初始的设施点集合F和客户点集合C获取p;根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。本发明能够快速和动态地查询最小距离和位置。

Description

查询最小距离和位置的动态监控方法及系统
技术领域
本发明涉及一种查询最小距离和位置的动态监控方法及系统。
背景技术
在过去几年中,有很多工作研究一类在存在客户点集合的情况下的“设施放置问题”(参见文献8:Farahani,R.Z.,Hekmatfar,M.:Facility Location:Concepts,Models,Algorithms and Case Studies,1st edn.Physica-Verlag HD(2009),文献15:Nickel,S.,Puerto,J.:Location Theory:A Unified Approach,1st edn.Springer(2005))。在最普遍的情况下,问题包含:(1)一个客户点的集合C和一个设施点候选集合P,并(2)在P中查询k个新设施点的位置从而满足一个事先定义的最佳条件。这类问题在k是常数的情况下存在多项式时间内的算法,在k是一般变量的情况下是NP-hard问题(参见文献8和15),已经存在的工作主要研究其近似算法。
最佳位置查询问题可以被看做设施放置问题的一个变种,首先P是一个无限集合;然后通常k=1,也就是说只需要为新建一个设施点来选取位置;最后通常事先已经拥有了一个设施点集合F。以上这些是最佳位置查询问题相对于一般的“设施放置问题”的不同点。
之前的最佳位置查询问题的研究工作(参见文献2:Cabello,S.,
Figure BDA00003464057500021
J.M.,Langerman,S.,Seara,C.,Ventura,I.:Reverse facility location problems.In:CCCG,pp.68–71(2005),文献6:Du,Y.,Zhang,D.,Xia,T.:The optimal-locationquery.In:SSTD,pp.163–180(2005),文献21:Wong,R.C.W.,¨Ozsu,T.,Yu,P.S.,Fu,A.W.C.,Liu,L.:Efficient method for maximizing bichromatic reverse nearestneighbor.PVLDB2(1),1126–1137(2009),文献24:Zhang,D.,Du,Y.,Xia,T.,Tao,Y.:Progressive computation of the min-dist optimal-location query.In:VLDB,pp.643–654(2006))中考虑的是设施点和客户点之间在Lp空间中的距离。其中Cabello等人(参见文献2)和Wong等人(参见文献21)的研究是基于L2空间的,而Du等人(参见文献6)和Zhang等人(参见文献24)的研究是基于L1空间的。这些工作并没有研究最佳位置查询问题在路网中的情况。
现有的研究工作中包括另外两种与设施点的位置选取有关的问题:单设施点查询问题(参见文献8和15)以及设施点实时建立问题(参见文献9:Fotakis,D.:Incremental algorithms for facility location and kmedian.Theor.Comput.Sci.361(2-3),275–313(2006),文献13:Meyerson,A.:Online facility location.In:FOCS,pp.426–431(2001)),这两种问题研究内容与最佳位置查询问题类似但是有所不同。单设施点查询问题研究的是,给定一个客户点的集合,寻找一个设施建立点从而满足一个最佳条件,在这个问题里,输入数据中没有已经建立的设施点集合,然而在最佳位置查询问题里,需要考虑一个已有的设施点的集合。设施点实时建立问题研究的是,随着客户点的不断增加,实时选取位置建立新的设施点来满足一个给定的优化条件,与最佳位置查询问题相似的是,这类问题在寻找新的设施点时,也考虑已有的设施点集合,然而[9]和[13]所采用的方法并不能解决最佳位置查询问题,这是因为在设施点实时建立问题中,建立新设施点的候选地点是一个有限的集合,但是在最佳位置查询问题中,建立新设施点的候选地点是一个无限的集合,例如Lp空间中的所有地点或是路网中的所有边上的所有地点的集合。在我们之前的研究工作中我们提出了静态一次查询路网中最佳位置的方法(参见文献22:Xiao,X.,Yao,B.,Li,F.:Optimal locationqueries in road network databases.In:ICDE,pp.804–815(2011)),与那篇文章相比,我们的发明提出了新的动态维护路网中最佳位置的解决方案,并为三个不同的最佳位置查询问题设计了具体的实现方法。
最后,现有的研究工作中存在着很多关于路网数据库中查询方法的研究(参见3:Chen,Z.,Shen,H.T.,Zhou,X.,Yu,J.X.:Monitoring path nearest neighbor inroad networks.In:SIGMOD,pp.591–602(2009),文献4:Deng,K.,Zhou,X.,Shen,H.T.,Sadiq,S.,Li,X.:Instance optimal query processing in spatial networks.VLDBJ18(3),675–693(2009),文献11:Jensen,C.S.,Kol′aˇrvr,J.,Pedersen,T.B.,Timko,I.:Nearest neighbor queries in road networks.In:GIS,pp.1–8(2003),文献12:Kolahdouzan,M.R.,Shahabi,C.:Voronoi-based k-nearest neighbor search for spatialnetwork databases.In:VLDB,pp.840–851(2004),文献14:Mouratidis,K.,Yiu,M.L.,Papadias,D.,Mamoulis,N.:Continuous nearest neighbor monitoring in roadnetworks.In:VLDB,pp.43–54(2006),文献16:Papadias,D.,Zhang,J.,Mamoulis,N.,Tao,Y.:Query processing in spatial network databases.In:VLDB,pp.802–813(2003),文献17:Samet,H.,Sankaranarayanan,J.,Alborzi,H.:Scalable networkdistance browsing in spatial databases.In:SIGMOD,pp.43–54(2008),文献18:Sankaranarayanan,J.,Samet,H.:Distance oracles for spatial networks.In:ICDE,pp.652–663(2009),文献19:Sankaranarayanan,J.,Samet,H.,Alborzi,H.:Path oraclesfor spatial networks.PVLDB2(1),1210–1221(2009),文献23:Yiu,M.L.,Mamoulis,N.,Papadias,D.:Aggregate nearest neighbor queries in road networks.TKDE17(6),820–833(2005))。然而这些研究工作都是关注路网数据库中最近点的查询(参见文献12、16和17)及其变种:最近点近似查询(参见文献18和19)、聚合查询(参见文献23),连续最近点查询(参见文献14),路径最近点查询(参见文献3)等等。这些研究工作中的技术并不能解决最佳位置查询问题,因为最近点查询问题与最佳位置查询问题在本质上是有所不同的。
另外,本发明相关的参考文献还包括如下:
文献1:de Berg,M.,Cheong,O.,van Kreveld,M.,Overmars,M.:ComputationalGeometry:Algorithms and Applications,3rd edn.Springer-Verlag(2008);
文献5:Dijkstra,E.W.:A note on two problems in connexion with graphs.Numerische Mathematik1,269–271(1959);
文献7:Erwig,M.,Hagen,F.:The graph voronoi diagram with applications.Networks36,156–163(2000);
文献10:Hershberger,J.:Finding the upper envelope of n line segments in o(nlog n)time.Inf.Process.Lett.33(4),169–174(1989);
文献20:Shekhar,S.,Liu,D.R.:CCAM:A connectivity-clustered accessmethod for networks and network computations.TKDE9(1),102–119(1997)。
发明内容
本发明的目的在于提供一种查询最小距离和位置的动态监控方法及系统,能够快速和动态地查询最小距离和位置。
为解决上述问题,本发明提供一种查询最小距离和位置的动态监控方法,包括:
给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为其中
Figure BDA00003464057500052
为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
根据G中初始的设施点集合F和客户点集合C获取p;
根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
进一步的,在上述方法中,把G按照边划分为n个子图G1...Gn的步骤包括:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
进一步的,在上述方法中,根据G中初始的设施点集合F和客户点集合C获取p的步骤包括:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure BDA00003464057500061
其中,某个位置σ的收益值为
Figure BDA00003464057500062
Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
进一步的,在上述方法中,为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure BDA00003464057500071
的步骤包括:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
进一步的,在上述方法中,已知一个顶点v,A(v)通过如下步骤获取:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
进一步的,在上述方法中,对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值的步骤包括:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
进一步的,在上述方法中,对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m的步骤包括:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
进一步的,在上述方法中,根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m的步骤包括:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
进一步的,在上述方法中,根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p的步骤包括:
路网中设施点和客户点的更新可以归结为增加一个客户点AddC(c),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合
Figure BDA00003464057500091
U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),
Figure BDA00003464057500093
来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
进一步的,在上述方法中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a′(c),来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
建立一个顶点集合 S = { v | < v , d ( c , v ) > &Element; U c - &cup; U c + } ;
对于S中的每个顶点v:如果
Figure BDA00003464057500103
并且
Figure BDA00003464057500104
则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果
Figure BDA00003464057500105
并且则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果
Figure BDA00003464057500107
Figure BDA00003464057500108
都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
根据本发明的另一面,提供一种查询最小距离和位置的动态监控系统,包括:
定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure BDA00003464057500111
其中为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
无向连通图模块,用于通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
划分模块,用于把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
获取模块,用于根据G中初始的设施点集合F和客户点集合C获取p;
更新模块,用于根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
进一步的,在上述系统中,所述划分模块用于:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
进一步的,在上述系统中,所述获取模块用于:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure BDA00003464057500121
其中,某个位置σ的收益值为
Figure BDA00003464057500122
Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
进一步的,在上述系统中,所述获取模块用于:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
Figure BDA00003464057500131
进一步的,在上述系统中,已知一个顶点v,所述获取模块用于获取A(v),具体包括:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
进一步的,在上述系统中,所述获取模块用于:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
进一步的,在上述系统中,所述获取模块用于:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
进一步的,在上述系统中,所述获取模块用于:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
进一步的,在上述系统中,所述更新模块用于:
路网中设施点和客户点的更新可以归结为增加一个客户点(AddC(c)),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合
Figure BDA00003464057500141
U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),
Figure BDA00003464057500151
来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
进一步的,在上述系统中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
建立一个顶点集合
Figure BDA00003464057500152
对于S中的每个顶点v:如果
Figure BDA00003464057500153
并且
Figure BDA00003464057500154
则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果
Figure BDA00003464057500155
并且则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果
Figure BDA00003464057500157
Figure BDA00003464057500158
都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
与现有技术相比,本发明通过给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure BDA00003464057500161
其中
Figure BDA00003464057500162
为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;根据G中初始的设施点集合F和客户点集合C获取p;根据G中设施点集合F或客户点集合C发生的更新随时动态监控p,能够快速和动态地查询最小距离和位置。
附图说明
图1是本发明一实施例的查询最小距离和位置的动态监控方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
如图1所示,本发明提供一种查询最小距离和位置的动态监控方法,包括步骤S1至步骤S5。
步骤S1,给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure BDA00003464057500171
其中为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
步骤S2,通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
步骤S3,把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
优选的,步骤S3包括:
把G按照边划分为n个子图G1...Gn的步骤包括:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
步骤S4,根据G中初始的设施点集合F和客户点集合C获取p;
优选的,步骤S4包括:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure BDA00003464057500181
其中,某个位置σ的收益值为 m ( &sigma; ) = &Sigma; c &Element; C w ( c ) max { 0 , a ( c ) - d ( c , &sigma; ) } , Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
较佳的,为每个子图Gi计算这个子图中位置所能达到的收益值上限的步骤包括:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
Figure BDA00003464057500192
进一步的,已知一个顶点v,A(v)通过如下步骤获取:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
优选的,对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值的步骤包括:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
较佳的,对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m的步骤包括:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
较佳的,根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m的步骤包括:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
步骤S5,根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
优选的,步骤S5包括:
路网中设施点和客户点的更新可以归结为增加一个客户点AddC(c),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合 U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
较佳的,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a′(c),
Figure BDA00003464057500221
来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
建立一个顶点集合
对于S中的每个顶点v:如果
Figure BDA00003464057500223
并且
Figure BDA00003464057500224
则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果
Figure BDA00003464057500225
并且
Figure BDA00003464057500226
则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果
Figure BDA00003464057500227
Figure BDA00003464057500228
都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
实施例二
本发明还提供另一种查询最小距离和位置的动态监控系统,包括:
定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为其中
Figure BDA00003464057500232
为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
无向连通图模块,用于通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
划分模块,用于把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
获取模块,用于根据G中初始的设施点集合F和客户点集合C获取p;
更新模块,用于根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
进一步的,在上述系统中,所述划分模块用于:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
进一步的,在上述系统中,所述获取模块用于:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure BDA00003464057500241
其中,某个位置σ的收益值为 m ( &sigma; ) = &Sigma; c &Element; C w ( c ) max { 0 , a ( c ) - d ( c , &sigma; ) } , Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
进一步的,在上述系统中,所述获取模块用于:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
Figure BDA00003464057500251
进一步的,在上述系统中,已知一个顶点v,所述获取模块用于获取A(v),具体包括:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
进一步的,在上述系统中,所述获取模块用于:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
进一步的,在上述系统中,所述获取模块用于:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
进一步的,在上述系统中,所述获取模块用于:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
进一步的,在上述系统中,所述更新模块用于:
路网中设施点和客户点的更新可以归结为增加一个客户点(AddC(c)),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合
Figure BDA00003464057500271
U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),
Figure BDA00003464057500273
来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
进一步的,在上述系统中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
建立一个顶点集合
Figure BDA00003464057500274
对于S中的每个顶点v:如果
Figure BDA00003464057500281
并且
Figure BDA00003464057500282
则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果
Figure BDA00003464057500283
并且
Figure BDA00003464057500284
则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果
Figure BDA00003464057500285
Figure BDA00003464057500286
都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
实施例二的其它详细内容具体可参见实施例一,在此不再赘述。
与现有技术相比,本发明通过给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure BDA00003464057500287
其中
Figure BDA00003464057500288
为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;根据G中初始的设施点集合F和客户点集合C获取p;根据G中设施点集合F或客户点集合C发生的更新随时动态监控p,能够快速和动态地查询最小距离和位置。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (20)

1.一种查询最小距离和位置的动态监控方法,其特征在于,包括:
给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure FDA00003464057400011
其中为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
根据G中初始的设施点集合F和客户点集合C获取p;
根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
2.如权利要求1所述的查询最小距离和位置的动态监控方法,其特征在于,把G按照边划分为n个子图G1...Gn的步骤包括:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
3.如权利要求2所述的查询最小距离和位置的动态监控方法,其特征在于,根据G中初始的设施点集合F和客户点集合C获取p的步骤包括:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure FDA00003464057400021
其中,某个位置σ的收益值为
Figure FDA00003464057400022
Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
4.如权利要求3所述的查询最小距离和位置的动态监控方法,其特征在于,为每个子图Gi计算这个子图中位置所能达到的收益值上限的步骤包括:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
Figure FDA00003464057400031
5.如权利要求4所述的查询最小距离和位置的动态监控方法,其特征在于,已知一个顶点v,A(v)通过如下步骤获取:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
6.如权利要求5所述的查询最小距离和位置的动态监控方法,其特征在于,对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值的步骤包括:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
7.如权利要求6所述的查询最小距离和位置的动态监控方法,其特征在于,对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m的步骤包括:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
8.如权利要求7所述的查询最小距离和位置的动态监控方法,其特征在于,根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m的步骤包括:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
9.如权利要求1至8任一项所述的查询最小距离和位置的动态监控方法,其特征在于,根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p的步骤包括:
路网中设施点和客户点的更新可以归结为增加一个客户点AddC(c),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合
Figure FDA00003464057400051
U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),
Figure FDA00003464057400053
来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
10.如权利要求9所述的查询最小距离和位置的动态监控方法,其特征在于,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a′(c),
Figure FDA00003464057400061
来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
建立一个顶点集合
Figure FDA00003464057400062
对于S中的每个顶点v:如果
Figure FDA00003464057400063
并且则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果并且
Figure FDA00003464057400066
则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果
Figure FDA00003464057400067
Figure FDA00003464057400068
都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
11.一种查询最小距离和位置的动态监控系统,其特征在于,包括:
定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最小距离和位置为
Figure FDA00003464057400071
其中为客户点c的加权吸引距离,w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离;
无向连通图模块,用于通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;
划分模块,用于把G按照边划分为n个子图G1...Gn,其中,n的值根据用户的需要设置;
获取模块,用于根据G中初始的设施点集合F和客户点集合C获取p;
更新模块,用于根据G中设施点集合F或客户点集合C发生的更新随时动态监控p。
12.如权利要求11所述的查询最小距离和位置的动态监控系统,其特征在于,所述划分模块用于:
从V中随机选取n个顶点作为顶点集合VΔ
建立n个空的子图G1...Gn,将顶点集合VΔ中的点分别设为每个子图的中心;
把G和VΔ作为Erwig和Hagen算法的输入,计算出对于G中每一个v,VΔ中距离v最近的v′和两者的距离d(v,v′);
对于G中的每一条边e,如果e的两个端点到VΔ中最近的点是同一个,则把e加入到对应的子图里,否则把e加入到其任意一个端点到VΔ中最近的点对应的子图里。
13.如权利要求12所述的查询最小距离和位置的动态监控系统,其特征在于,所述获取模块用于:
为每个子图Gi计算这个子图中位置所能达到的收益值上限
Figure FDA00003464057400081
其中,某个位置σ的收益值为
Figure FDA00003464057400082
Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p。
14.如权利要求13所述的查询最小距离和位置的动态监控系统,其特征在于,所述获取模块用于:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
Figure FDA00003464057400091
15.如权利要求14所述的查询最小距离和位置的动态监控系统,其特征在于,已知一个顶点v,所述获取模块用于获取A(v),具体包括:
通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);
初始化A(v)为空集;
用Dijkstra算法按照到v的距离升序遍历G中所有顶点;
对于每一个遍历到的顶点v′,令a(v′)为v′到其最近的设施点f的距离,如果d(v,v′)≤a(v′),并且v′是一个客户点,则将把<v′,d(v′,v)>加入顶点v吸引集合A(v)后;如果d(v,v′)>a(v′),则忽略所有以v′为端点的边。
16.如权利要求15所述的查询最小距离和位置的动态监控系统,其特征在于,所述获取模块用于:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
17.如权利要求16所述的查询最小距离和位置的动态监控系统,其特征在于,所述获取模块用于:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
18.如权利要求17所述的查询最小距离和位置的动态监控系统,其特征在于,所述获取模块用于:
计算e的两个端点的收益值;
如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
19.如权利要求11至18任一项所述的查询最小距离和位置的动态监控系统,其特征在于,所述更新模块用于:
路网中设施点和客户点的更新可以归结为增加一个客户点AddC(c),减少一个客户点DelC(c),增加一个设施点AddF(f),减少一个设施点DelF(f)共四种基本操作;
当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};
对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a′(c),并建立两个集合
Figure FDA00003464057400111
U c - = { < v , d ( c , v ) > | d ( c , v ) < a 0 ( c ) } ;
对于每一个客户点c∈Vc,根据a0(c),a′(c),
Figure FDA00003464057400113
来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最小距离和位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
20.如权利要求19所述的查询最小距离和位置的动态监控系统,其特征在于,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
建立一个顶点集合
Figure FDA00003464057400121
对于S中的每个顶点v:如果并且
Figure FDA00003464057400123
则设定m(v)=m(v)-w(c)(a0(c)-d(v,c));如果并且
Figure FDA00003464057400125
则设定m(v)=m(v)+w(c)(a′(c)-d(v,c));如果都成立,则设定m(v)=m(v)+w(c)(a′(c)-a0(c));其中m(v)表示顶点v的收益值;
对于每一条边e,如果e的两个端点的收益值中至少一个发生变化:
读取e的两个端点更新后的收益值,如果两个端点的收益值不同,则返回收益值较大的那个端点作为e的局部最佳位置I,两个收益值中较大的作为e的对应收益值m;否则,将这两个相等的收益值作为e的对应收益值m,并考察e的中点的收益值,如果比端点收益值小,则将两个端点作为e的局部最佳位置I,如果e的中点的收益值与两个端点的收益值相等,则把整条边e都作为局部最佳位置I。
CN201310280200.2A 2013-07-04 2013-07-04 查询最小距离和位置的动态监控方法及系统 Expired - Fee Related CN103345510B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310280200.2A CN103345510B (zh) 2013-07-04 2013-07-04 查询最小距离和位置的动态监控方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310280200.2A CN103345510B (zh) 2013-07-04 2013-07-04 查询最小距离和位置的动态监控方法及系统

Publications (2)

Publication Number Publication Date
CN103345510A true CN103345510A (zh) 2013-10-09
CN103345510B CN103345510B (zh) 2016-09-07

Family

ID=49280305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310280200.2A Expired - Fee Related CN103345510B (zh) 2013-07-04 2013-07-04 查询最小距离和位置的动态监控方法及系统

Country Status (1)

Country Link
CN (1) CN103345510B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106372265A (zh) * 2016-11-23 2017-02-01 中山大学 一种含有多层次剪枝策略的位置查询优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777049A (zh) * 2009-01-12 2010-07-14 联发科技(合肥)有限公司 在数据库中搜索位置数据集的方法及数据搜索系统
US20120283948A1 (en) * 2011-05-03 2012-11-08 University Of Southern California Hierarchical and Exact Fastest Path Computation in Time-dependent Spatial Networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777049A (zh) * 2009-01-12 2010-07-14 联发科技(合肥)有限公司 在数据库中搜索位置数据集的方法及数据搜索系统
US20120283948A1 (en) * 2011-05-03 2012-11-08 University Of Southern California Hierarchical and Exact Fastest Path Computation in Time-dependent Spatial Networks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MEHDI SHARIFZADEH等: "The optimal sequenced route query", 《THE VLDB JOURNAL》 *
陈楚南等: "基于图嵌入框架的路网最优路径查询算法", 《计算机研究与发展》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106372265A (zh) * 2016-11-23 2017-02-01 中山大学 一种含有多层次剪枝策略的位置查询优化方法
CN106372265B (zh) * 2016-11-23 2021-11-30 中山大学 一种含有多层次剪枝策略的位置查询优化方法

Also Published As

Publication number Publication date
CN103345510B (zh) 2016-09-07

Similar Documents

Publication Publication Date Title
Yang et al. Fast map matching, an algorithm integrating hidden Markov model with precomputation
Deb et al. Understanding knee points in bicriteria problems and their implications as preferred solution principles
Xu et al. Bus arrival time prediction with real-time and historic data
Cheng et al. Swarm intelligence in big data analytics
CN102915347B (zh) 一种分布式数据流聚类方法及系统
CN112825182A (zh) 一种确定推荐商品的方法和装置
Li et al. GDPS: an efficient approach for skyline queries over distributed uncertain data
KR20150121945A (ko) 아이템 추천 시스템 및 아이템 추천 방법
Cao et al. SHAREK*: A scalable matching method for dynamic ride sharing
CN104809210A (zh) 一种基于分布式计算框架下海量数据加权top-k查询方法
Chen Clustering based on a near neighbor graph and a grid cell graph
CN103345510A (zh) 查询最小距离和位置的动态监控方法及系统
Yi et al. View field nearest neighbor: A novel type of spatial queries
CN103336823A (zh) 查询最小化最大距离位置的动态监控方法及系统
Du et al. Stability analysis of a general nonlinear car-following model
Jiang et al. Topological relationship model for geographical flows
CN108596390B (zh) 一种解决车辆路径问题的方法
CN103324748A (zh) 查询最大竞争力位置的动态监控方法及系统
CN103336826A (zh) 查询最大竞争力位置的动态监控方法及系统
CN103336824A (zh) 查询最小距离和位置的动态监控方法及系统
Zhang et al. Intelligent travelling visitor estimation model with big data mining
CN103324747A (zh) 最小化最大距离位置的动态监控方法及系统
Loglisci et al. Mining periodic changes in complex dynamic data through relational pattern discovery
Guo Multiple attribute decision-making method with intervals based on possibility degree matrix
Zhang et al. Mining related information of traffic flows on lanes by k-medoids

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160907

Termination date: 20190704