CN103324748B - 查询最大竞争力位置的动态监控方法及系统 - Google Patents
查询最大竞争力位置的动态监控方法及系统 Download PDFInfo
- Publication number
- CN103324748B CN103324748B CN201310280206.XA CN201310280206A CN103324748B CN 103324748 B CN103324748 B CN 103324748B CN 201310280206 A CN201310280206 A CN 201310280206A CN 103324748 B CN103324748 B CN 103324748B
- Authority
- CN
- China
- Prior art keywords
- point
- subgraph
- client
- calculate
- financial value
- 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.)
- Expired - Fee Related
Links
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.,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.:Incrementalalgorithms 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 location queries 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 in roadnetworks.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.:Nearestneighbor queries in road networks.In:GIS,pp.1–8(2003),文献12:Kolahdouzan,M.R.,Shahabi,C.:Voronoi-based k-nearest neighbor search for spatial networkdatabases.In:VLDB,pp.840–851(2004),文献14:Mouratidis,K.,Yiu,M.L.,Papadias,D.,Mamoulis,N.:Continuous nearest neighbor monitoring in road networks.In:VLDB,pp.43–54(2006),文献16:Papadias,D.,Zhang,J.,Mamoulis,N.,Tao,Y.:Queryprocessing in spatial network databases.In:VLDB,pp.802–813(2003),文献17:Samet,H.,Sankaranarayanan,J.,Alborzi,H.:Scalable network distance browsing inspatial 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 oracles for spatialnetworks.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 withgraphs.Numerische Mathematik1,269–271(1959);
文献7:Erwig,M.,Hagen,F.:The graph voronoi diagram withapplications.Networks36,156–163(2000);
文献10:Hershberger,J.:Finding the upper envelope of n line segmentsin o(n log 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,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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。
进一步的,在上述方法中,把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计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,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的收益值上限
进一步的,在上述方法中,已知一个顶点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的步骤包括:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a′(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
进一步的,在上述方法中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a′(c),来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
步骤一:初始化一个空的边集E1;
步骤二:对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
步骤三:对于边集E1中的每一条边e(vl,vr)执行如下步骤:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
根据本发明的另一面,提供一种查询最大竞争力位置的动态监控系统,包括:
第一定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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。
进一步的,在上述系统中,所述划分模块用于:
从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计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,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的收益值上限
进一步的,在上述系统中,已知一个顶点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。
进一步的,在上述系统中,所述获取模块用于:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a′(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
进一步的,在上述系统中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
初始化一个空的边集E1;
对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
对于边集E1中的每一条边e(vl,vr)执行如下过程:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
与现有技术相比,本发明通过给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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,能够快速和动态地查询最大竞争力位置。
附图说明
图1是本发明一实施例的查询最大竞争力位置的动态监控方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
如图1所示,本发明提供一种查询最大竞争力位置的动态监控方法,包括步骤S1至步骤S4。
步骤S1,给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被p吸引的客户点,即
步骤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包括:
从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计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,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的收益值上限
较佳的,已知一个顶点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的步骤包括:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a′(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
较佳的,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a′(c),来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
步骤一:初始化一个空的边集E1;
步骤二:对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
步骤三:对于边集E1中的每一条边e(vl,vr)执行如下步骤:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
实施例二
本发明还提供另一种查询最大竞争力位置的动态监控系统,包括:
进一步的,在上述系统中,第一定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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。
进一步的,在上述系统中,所述划分模块用于:
从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计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,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的收益值上限
进一步的,在上述系统中,已知一个顶点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。
进一步的,在上述系统中,所述获取模块用于:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a′(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备。
已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
初始化一个空的边集E1;
对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>者至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
对于边集E1中的每一条边e(vl,vr)执行如下过程:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
实施例二的其它详细内容具体可参见实施例一,在此不再赘述。
本发明通过给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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,能够快速和动态地查询最大竞争力位置。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (18)
1.一种查询最大竞争力位置的动态监控方法,其特征在于,包括:
给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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,步骤包括:
路网中设施点和客户点的更新可以归结为增加一个客户点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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a'(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备;
其中,v为无向连通图G中的一个顶点,d(c,ν)是顶点v在道路网络中的距离,A(f)是设施点f的吸引集合。
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计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,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的收益值上限
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的步骤包括:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖I的线段的权重之和。
9.如权利要求8所述的查询最大竞争力位置的动态监控方法,其特征在于,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a'(c),来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括:
步骤一:初始化一个空的边集E1;
步骤二:对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>中至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
步骤三:对于边集E1中的每一条边e(vl,vr)执行如下步骤:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
10.一种查询最大竞争力位置的动态监控系统,其特征在于,包括:
第一定义模块,用于给定一个客户点的集合C和一个设施点的集合F,以及一个候选位置集合P,最大竞争力位置为其中w(c)是客户点c的权重,如果客户点c和设施点f在道路网络中的距离d(c,f)是c和F中的点的极小值,则定义f是c的吸引者,c被f吸引,a(c)=d(c,f)为c的吸引距离,Cp是所有能被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;
所述更新模块用于:
路网中设施点和客户点的更新可以归结为增加一个客户点(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),并建立两个集合和
对于每一个客户点c∈Vc,根据a0(c),a'(c),来更新所有已经被计算的子图中的每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;
更新所有子图的收益值上限;
根据新的上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:
对于被访问的子图,如果该子图未被计算,则初始计算该子图的局部最佳位置并获取对应收益值,如果该子图已被计算,则直接读取该子图的局部最佳位置和对应收益值;
如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p;
对于未遍历到的子图,把其中已经计算的子图改为未计算,以为下一次更新做准备;
其中,v为无向连通图G中的一个顶点,d(c,ν)是顶点v在道路网络中的距离,A(f)是设施点f的吸引集合。
11.如权利要求10所述的查询最大竞争力位置的动态监控系统,其特征在于,所述划分模块用于:
从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Δ中最近的点对应的子图里。
12.如权利要求11所述的查询最大竞争力位置的动态监控系统,其特征在于,所述获取模块用于:
为每个子图Gi计算这个子图中位置所能达到的收益值上限其中,某个位置的收益值为该位置能够吸引到的所有客户点的权重之和,Ci是Gi中的所有点可能吸引到的客户点的集合;
然后根据这个上限对所有子图进行从高到低排序,之后按这个顺序遍历所有子图:对于被访问的子图,计算该子图的局部最佳位置并获取对应收益值,其中,某个子图的局部最佳位置I为该子图上所有具有最大收益值的点集合;如果在某一时刻当前获得的最大收益值已经大于下一个待访问子图的收益值上限,则停止遍历,将这个最大收益值对应的位置作为最大竞争力位置p。
13.如权利要求12所述的查询最大竞争力位置的动态监控系统,其特征在于,所述获取模块用于:
在G中加入一个虚拟的顶点v0,从v0到Gi中的每一个顶点连接一条长度为0的边;
计算v0的吸引集合A(v0),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;
令Ci为A(v0)中出现的所有客户点的集合;
根据Ci计算出Gi的收益值上限
14.如权利要求13所述的查询最大竞争力位置的动态监控系统,其特征在于,已知一个顶点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′为端点的边。
15.如权利要求14所述的查询最大竞争力位置的动态监控系统,其特征在于,所述获取模块用于:
对于子图中的每一条边e初始化计算其局部最佳位置I以及对应的收益值m,其中,某一条边e上的局部最佳位置I为e上所有具有最大收益值的点集合;
将子图的有最大收益值的边的局部最佳位置作为该子图的局部最佳位置,所述最大收益值作为该子图的对应收益值。
16.如权利要求15所述的查询最大竞争力位置的动态监控系统,其特征在于,所述获取模块用于:
分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr);
根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。
17.如权利要求16所述的查询最大竞争力位置的动态监控系统,其特征在于,所述获取模块用于:
建立一个一维平面R;
对于每个在A(vl)中出现但是没有在A(vr)中出现的客户点c,在R中创建一条线段[0,a(c)-d(c,vl)],对这条线段赋予权重w(c);
对于每个在A(vr)中出现但是没有在A(vl)中出现的客户点c,在R中创建一条线段[l-a(c)+d(c,vr),l],并赋予权重w(c),l表示待计算的边e的长度;
对于每个在A(vl)和A(vr)中都出现的客户点c,如果l≤2·a(c)-d(c,vl)-d(c,vr),则在R中创建一条线段[0,l],并赋予权重w(c);否则,在R中创建两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l],并赋予权重w(c);
计算点集合I,I是整条边[0,l]的子集,使得R中所有覆盖I的线段的权重之和最大化;
返回点集合I为边e上的局部最佳位置,对应的收益值m为R中所有覆盖I的线段的权重之和。
18.如权利要求17所述的查询最大竞争力位置的动态监控系统,其特征在于,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,所述更新模块用于:
初始化一个空的边集E1;
对于E中的每条边e(vl,vr),如果<vl,d(c,vl)>和<vr,d(c,vr)>中至少有一个存在于UC+和UC-的并集中,则把e加入边集E1;
对于边集E1中的每一条边e(vl,vr)执行如下过程:
初始化两个空的点集I+和I-,如果<vl,d(c,vl)>存在于中,但是<vr,d(c,vr)>不存在于中,则向I-中加入一条线段[0,a0(c)-d(c,vl)];如果<vl,d(c,vl)>不存在于中,但是<vr,d(c,vr)>存在于中,则向I-中加入一条线段[l-a0(c)-d(c,vr),l];如果<vl,d(c,vl)>和<vr,d(c,vr)>都存在于中,则如果l≤2a0(c)-d(c,vl)-d(c,vr),则向I-中加入一条线段[0,l],l>2a0(c)-d(c,vl)-d(c,vr),向I-中加入两条线段[0,a(c)-d(c,vl)]和[l-a(c)+d(c,vr),l];
与获取I-一样的方式,将换成a0(c)换成a′(c),类似地计算出I+;
如果a0(c)<a′(c),则将一个临时的flag设为ADD,计算I′=I+-I-,否则,将flag设为DEL,计算I′=I--I+;
如果I′为空集,则跳出本循环,访问边集E1中的下一条边e;
如果flag为ADD,则计算I=I0∩I′,如果I是空集,则重新初始化计算e上的I和m;否则,令m=m0+w(c);
如果flag为DEL,则如果I′=[0,l],则I=I0,m=m0-w(c);否则,计算I=I0-I′,如果I是空集,则重新初始化计算e上的I和m,如果I不是空集,令m=m0;
令I和m为边e上新的局部最佳位置和对应的收益值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310280206.XA CN103324748B (zh) | 2013-07-04 | 2013-07-04 | 查询最大竞争力位置的动态监控方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310280206.XA CN103324748B (zh) | 2013-07-04 | 2013-07-04 | 查询最大竞争力位置的动态监控方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103324748A CN103324748A (zh) | 2013-09-25 |
CN103324748B true CN103324748B (zh) | 2017-03-01 |
Family
ID=49193491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310280206.XA Expired - Fee Related CN103324748B (zh) | 2013-07-04 | 2013-07-04 | 查询最大竞争力位置的动态监控方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324748B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308597B (zh) * | 2020-08-14 | 2023-07-18 | 西安工程大学 | 一种在竞争环境中根据影响运动用户选择设施地址的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778184A (en) * | 1996-06-28 | 1998-07-07 | Mci Communications Corporation | System method and computer program product for processing faults in a hierarchial network |
CN101777049A (zh) * | 2009-01-12 | 2010-07-14 | 联发科技(合肥)有限公司 | 在数据库中搜索位置数据集的方法及数据搜索系统 |
CN103106280A (zh) * | 2013-02-22 | 2013-05-15 | 浙江大学 | 一种道路网络环境下不确定时空轨迹数据的范围查询方法 |
CN103336826A (zh) * | 2013-07-04 | 2013-10-02 | 上海交通大学 | 查询最大竞争力位置的动态监控方法及系统 |
-
2013
- 2013-07-04 CN CN201310280206.XA patent/CN103324748B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778184A (en) * | 1996-06-28 | 1998-07-07 | Mci Communications Corporation | System method and computer program product for processing faults in a hierarchial network |
CN101777049A (zh) * | 2009-01-12 | 2010-07-14 | 联发科技(合肥)有限公司 | 在数据库中搜索位置数据集的方法及数据搜索系统 |
CN103106280A (zh) * | 2013-02-22 | 2013-05-15 | 浙江大学 | 一种道路网络环境下不确定时空轨迹数据的范围查询方法 |
CN103336826A (zh) * | 2013-07-04 | 2013-10-02 | 上海交通大学 | 查询最大竞争力位置的动态监控方法及系统 |
Non-Patent Citations (1)
Title |
---|
Optimal Location Queries in Road Network Databases;Xiaokui Xiao 等;《Data Engineering(ICDE) Conference 2011》;20110416;804-815 * |
Also Published As
Publication number | Publication date |
---|---|
CN103324748A (zh) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zheng et al. | Planar: Parallel lightweight architecture-aware adaptive graph repartitioning | |
CN103324748B (zh) | 查询最大竞争力位置的动态监控方法及系统 | |
Yang et al. | Recommending profitable taxi travel routes based on big taxi trajectories data | |
Rodríguez-Mazahua et al. | Horizontal partitioning of multimedia databases using hierarchical agglomerative clustering | |
Kalir et al. | Optimal Solutions for the Single Batch, Flow Shop, Lot‐streaming Problem with Equal Sublots | |
CN103336826B (zh) | 查询最大竞争力位置的动态监控方法及系统 | |
CN103336823B (zh) | 查询最小化最大距离位置的动态监控方法及系统 | |
Dong et al. | Continuous search on dynamic spatial keyword objects | |
CN103345510B (zh) | 查询最小距离和位置的动态监控方法及系统 | |
CN106372127B (zh) | 基于Spark的大规模图数据的多样性图排序方法 | |
Asfoor et al. | Computing fuzzy rough approximations in large scale information systems | |
CN103324747B (zh) | 最小化最大距离位置的动态监控方法及系统 | |
Kim et al. | An efficient parallel processing method for skyline queries in MapReduce | |
CN103336824B (zh) | 查询最小距离和位置的动态监控方法及系统 | |
Bae et al. | Label propagation-based parallel graph partitioning for large-scale graph data | |
CN109710700A (zh) | 一种olap语义缓存方法 | |
Liu et al. | An efficient method for top-k graph based node matching | |
Su et al. | GBA: A Tuning-free Approach to Switch between Synchronous and Asynchronous Training for Recommendation Models | |
Li et al. | An efficient scheme for probabilistic skyline queries over distributed uncertain data | |
Zhang et al. | Mining related information of traffic flows on lanes by k-medoids | |
Huang et al. | Dynamic updating rough approximations in distributed information systems | |
Jin et al. | Discovering the most influential geo-social object using location based social network data | |
Lončar et al. | Parallel implementation of minimum spanning tree algorithms using MPI | |
Okamoto | Analyzing instability of industrial clustering techniques | |
Zhu et al. | Continuous range monitoring of moving objects in road networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20190704 |
|
CF01 | Termination of patent right due to non-payment of annual fee |