查询最大竞争力位置的动态监控方法及系统与流程

文档序号:11996223阅读:135来源:国知局
本发明涉及一种查询最大竞争力位置的动态监控方法及系统。

背景技术:
在过去几年中,有很多工作研究一类在存在客户点集合的情况下的“设施放置问题”(参见文献8:Farahani,R.Z.,Hekmatfar,M.:FacilityLocation:Concepts,Models,AlgorithmsandCaseStudies,1stedn.Physica-VerlagHD(2009),文献15:Nickel,S.,Puerto,J.:LocationTheory:AUnifiedApproach,1stedn.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.:Reversefacilitylocationproblems.In:CCCG,pp.68–71(2005),文献6:Du,Y.,Zhang,D.,Xia,T.:Theoptimal-locationquery.In:SSTD,pp.163–180(2005),文献21:Wong,R.C.W.,¨Ozsu,T.,Yu,P.S.,Fu,A.W.C.,Liu,L.:Efficientmethodformaximizingbichromaticreversenearestneighbor.PVLDB2(1),1126–1137(2009),文献24:Zhang,D.,Du,Y.,Xia,T.,Tao,Y.:Progressivecomputationofthemin-distoptimal-locationquery.In:VLDB,pp.643–654(2006))中考虑的是设施点和客户点之间在Lp空间中的距离。其中Cabello等人(参见文献2)和Wong等人(参见文献21)的研究是基于L2空间的,而Du等人(参见文献6)和Zhang等人(参见文献24)的研究是基于L1空间的。这些工作并没有研究最佳位置查询问题在路网中的情况。现有的研究工作中包括另外两种与设施点的位置选取有关的问题:单设施点查询问题(参见文献8和15)以及设施点实时建立问题(参见文献9:Fotakis,D.:Incrementalalgorithmsforfacilitylocationandkmedian.Theor.Comput.Sci.361(2-3),275–313(2006),文献13:Meyerson,A.:Onlinefacilitylocation.In:FOCS,pp.426–431(2001)),这两种问题研究内容与最佳位置查询问题类似但是有所不同。单设施点查询问题研究的是,给定一个客户点的集合,寻找一个设施建立点从而满足一个最佳条件,在这个问题里,输入数据中没有已经建立的设施点集合,然而在最佳位置查询问题里,需要考虑一个已有的设施点的集合。设施点实时建立问题研究的是,随着客户点的不断增加,实时选取位置建立新的设施点来满足一个给定的优化条件,与最佳位置查询问题相似的是,这类问题在寻找新的设施点时,也考虑已有的设施点集合,然而[9]和[13]所采用的方法并不能解决最佳位置查询问题,这是因为在设施点实时建立问题中,建立新设施点的候选地点是一个有限的集合,但是在最佳位置查询问题中,建立新设施点的候选地点是一个无限的集合,例如Lp空间中的所有地点或是路网中的所有边上的所有地点的集合。在我们之前的研究工作中我们提出了静态一次查询路网中最佳位置的方法(参见文献22:Xiao,X.,Yao,B.,Li,F.:Optimallocationqueriesinroadnetworkdatabases.In:ICDE,pp.804–815(2011)),与那篇文章相比,我们的发明提出了新的动态维护路网中最佳位置的解决方案,并为三个不同的最佳位置查询问题设计了具体的实现方法。最后,现有的研究工作中存在着很多关于路网数据库中查询方法的研究(参见3:Chen,Z.,Shen,H.T.,Zhou,X.,Yu,J.X.:Monitoringpathnearestneighborinroadnetworks.In:SIGMOD,pp.591–602(2009),文献4:Deng,K.,Zhou,X.,Shen,H.T.,Sadiq,S.,Li,X.:Instanceoptimalqueryprocessinginspatialnetworks.VLDBJ18(3),675–693(2009),文献11:Jensen,C.S.,Kol′aˇrvr,J.,Pedersen,T.B.,Timko,I.:Nearestneighborqueriesinroadnetworks.In:GIS,pp.1–8(2003),文献12:Kolahdouzan,M.R.,Shahabi,C.:Voronoi-basedk-nearestneighborsearchforspatialnetworkdatabases.In:VLDB,pp.840–851(2004),文献14:Mouratidis,K.,Yiu,M.L.,Papadias,D.,Mamoulis,N.:Continuousnearestneighbormonitoringinroadnetworks.In:VLDB,pp.43–54(2006),文献16:Papadias,D.,Zhang,J.,Mamoulis,N.,Tao,Y.:Queryprocessinginspatialnetworkdatabases.In:VLDB,pp.802–813(2003),文献17:Samet,H.,Sankaranarayanan,J.,Alborzi,H.:Scalablenetworkdistancebrowsinginspatialdatabases.In:SIGMOD,pp.43–54(2008),文献18:Sankaranarayanan,J.,Samet,H.:Distanceoraclesforspatialnetworks.In:ICDE,pp.652–663(2009),文献19:Sankaranarayanan,J.,Samet,H.,Alborzi,H.:Pathoraclesforspatialnetworks.PVLDB2(1),1210–1221(2009),文献23:Yiu,M.L.,Mamoulis,N.,Papadias,D.:Aggregatenearestneighborqueriesinroadnetworks.TKDE17(6),820–833(2005))。然而这些研究工作都是关注路网数据库中最近点的查询(参见文献12、16和17)及其变种:最近点近似查询(参见文献18和19)、聚合查询(参见文献23),连续最近点查询(参见文献14),路径最近点查询(参见文献3)等等。这些研究工作中的技术并不能解决最佳位置查询问题,因为最近点查询问题与最佳位置查询问题在本质上是有所不同的。另外,本发明相关的参考文献还包括如下:文献1:deBerg,M.,Cheong,O.,vanKreveld,M.,Overmars,M.:ComputationalGeometry:AlgorithmsandApplications,3rdedn.Springer-Verlag(2008);文献5:Dijkstra,E.W.:Anoteontwoproblemsinconnexionwithgraphs.NumerischeMathematik1,269–271(1959);文献7:Erwig,M.,Hagen,F.:Thegraphvoronoidiagramwithapplications.Networks36,156–163(2000);文献10:Hershberger,J.:Findingtheupperenvelopeofnlinesegmentsino(nlogn)time.Inf.Process.Lett.33(4),169–174(1989);文献20:Shekhar,S.,Liu,D.R.:CCAM:Aconnectivity-clusteredaccessmethodfornetworksandnetworkcomputations.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吸引的客户点,即根据路网中初始的设施点集合F和客户点集合C获取p;根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p。进一步的,在上述方法中,根据路网中初始的设施点集合F和客户点集合C获取p的步骤包括:通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;对于每一条边e∈Ec初始化计算其局部最佳位置I以及对应的收益值m,其中,Ec为包含候选位置集合P中所有点的边的集合,某个位置的收益值m为该位置能够吸引到的所有客户点的权重之和,局部最佳位置I为边e上所有具有最大收益值的点集合;根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。进一步的,在上述方法中,对于每一条边e∈Ec初始化计算其局部最佳位置I以及对应的收益值m的步骤包括:通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。进一步的,在上述方法中,已知一个顶点v,A(v)通过如下步骤获取:初始化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′为端点的边。进一步的,在上述方法中,根据已经计算出的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;根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置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吸引的客户点,即获取模块,用于根据路网中初始的设施点集合F和客户点集合C获取p;动态监控模块,用于根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p。进一步的,在上述系统中,所述获取模块包括:无向连通图模块,用于向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;局部最佳位置和收益值模块,用于对于每一条边e∈Ec初始化计算其局部最佳位置I以及对应的收益值m,其中,Ec为包含候选位置集合P中所有点的边的集合,某个位置的收益值m为该位置能够吸引到的所有客户点的权重之和,局部最佳位置I为边e上所有具有最大收益值的点集合;最大竞争力位置模块,用于根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。进一步的,在上述系统中,所述局部最佳位置和收益值模块,用于通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。进一步的,在上述系统中,已知一个顶点v,所述局部最佳位置和收益值模块用于获取A(v),具体包括:初始化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′为端点的边。进一步的,在上述系统中,所述局部最佳位置和收益值模块用于:建立一个一维平面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;结果模块,用于根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。进一步的,在上述系统中,所述更新模块包括:初始化单元,用于初始化一个空的边集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吸引的客户点,即根据路网中初始的设施点集合F和客户点集合C获取p;根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p,能够快速和动态地查询最大竞争力位置。附图说明图1是本发明一实施例的查询最大竞争力位置的动态监控方法的流程图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。实施例一如图1所示,本发明提供一种查询最大竞争力位置的动态监控方法,包括步骤S1至步骤S3。步骤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,根据路网中初始的设施点集合F和客户点集合C获取p;进一步的,步骤S2包括步骤S21至步骤S23。步骤S21,通过向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;步骤S22,对于每一条边e∈Ec初始化计算其局部最佳位置I以及对应的收益值m,其中,Ec为包含候选位置集合P中所有点的边的集合,某个位置的收益值m为该位置能够吸引到的所有客户点的权重之和,局部最佳位置I为边e上所有具有最大收益值的点集合;优选的,本步骤包括:通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr)。其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。其中,已知一个顶点v,A(v)通过如下步骤获取:初始化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′为端点的边。其中,根据已经计算出的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的线段的权重之和。步骤S23,根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。步骤S3,根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p。优选的,步骤S3包括步骤S31至步骤S35:步骤S31,路网中设施点和客户点的更新归结为增加一个客户点(AddC(c)),减少一个客户点(DelC(c)),增加一个设施点(AddF(f)),减少一个设施点(DelF(f))共四种基本操作;步骤S32,当一个更新操作到来的时候,首先计算吸引距离会被更新所影响的客户点的集合Vc,如果操作是AddC(c)或DelC(c),则Vc={c};如果操作是AddF(f)或DelF(f),则Vc={c|<c,d(c,v)>∈A(f)};步骤S33,对于每一个客户点c∈Vc,找出该客户点之前的吸引距离a0(c)和新的吸引距离a'(c),并建立两个集合和步骤S34,对于每一个客户点c∈Vc,根据a0(c),a'(c),来更新每一条边e的局部最佳位置I以及对应的收益值m,令更新前的局部最佳位置以及对应的收益值分别为I0和m0;其中,已知更新前的局部最佳位置以及对应的收益值分别为I0和m0,根据a0(c),a'(c),来更新每一条边e的局部最佳位置I以及对应的收益值m的步骤包括步骤一至步骤三:步骤一:初始化一个空的边集E1;步骤二:对于E1中的每条边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上新的局部最佳位置和对应的收益值。步骤S35根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。实施例二本发明还提供另一种查询最大竞争力位置的动态监控系统,包括:定义模块,用于给定一个客户点的集合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吸引的客户点,即获取模块,用于根据路网中初始的设施点集合F和客户点集合C获取p;动态监控模块,用于根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p。进一步的,在上述系统中,所述获取模块包括:无向连通图模块,用于向表示路网的无向连通图Go=(Vo,Eo)插入所有的设施点f和客户点c来将Eo中的边划分成新的边,对于每一个点ρ∈C∪F,先考虑ρ所在的边e∈Eo,令e的两个端点为vl和vr,然后将e分为两部分即从vl到ρ和从ρ到vr,以使ρ成为无向连通图的一个新顶点,加入所有的新顶点以生成了一个新的无向连通图G=(V,E),且V=Vo∪C∪F;局部最佳位置和收益值模块,用于对于每一条边e∈Ec初始化计算其局部最佳位置I以及对应的收益值m,其中,Ec为包含候选位置集合P中所有点的边的集合,某个位置的收益值m为该位置能够吸引到的所有客户点的权重之和,局部最佳位置I为边e上所有具有最大收益值的点集合;最大竞争力位置模块,用于根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。进一步的,在上述系统中,所述局部最佳位置和收益值模块,用于通过Erwig和Hagen的算法来计算G中每一个顶点v的最近设施点f以及距离d(v,f);分别计算e的两个端点vl和vr的吸引集合A(vl)和A(vr),其中,给定一个顶点v,A(v)是包含v能吸引到的所有客户点c以及对应距离d(c,v)的集合;根据已经计算出的A(vl)和A(vr)计算e的局部最佳位置I以及对应的收益值m。进一步的,在上述系统中,已知一个顶点v,所述局部最佳位置和收益值模块用于获取A(v),具体包括:初始化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′为端点的边。进一步的,在上述系统中,所述局部最佳位置和收益值模块用于:建立一个一维平面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;结果模块,用于根据所有边上的局部最佳位置I选出对应的收益值m最大的作为最大竞争力位置p。进一步的,在上述系统中,所述更新模块包括:初始化单元,用于初始化一个空的边集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吸引的客户点,即根据路网中初始的设施点集合F和客户点集合C获取p;根据路网中设施点集合F或客户点集合C发生的更新随时动态监控p,能够快速和动态地查询最大竞争力位置。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1