专利名称:一种集群目标的动态聚类方法
技术领域:
本发明涉及一种聚类方法,具体涉及ー种集群目标的动态聚类方法。
背景技术:
现代信息技术的快速发展导致了战场环境的复杂多变,战场指挥员面临着严峻的挑战。为了辅助战场指挥员的决策,近几年提出了态势评估、兵力聚合和威胁估计等技木。而对战场中的目标进行有效地聚类是实现这些技术的基础,但是现有的一些聚类算法如k-means算法、dbscan算法等都是针对静态数据的聚类,而战场中的目标是运动的,因而如何有效地对战场中的动态数据聚类成为研究人员急需解决的问题。
发明内容
为了克服上述现有技术的不足,本发明的目的在于提供了一种集群目标的动态聚类方法,能够满足战场环境下的需求,快速准确。为了实现上述目的,本发明采用的技术方案是一种集群目标的动态聚类方法,包括以下步骤步骤一,加载预定义參数和目标数据;步骤ニ,初始化簇;步骤三,将已经存在于簇中的的目标进行离线处理,计算簇的速度和加速度信息以及对这些簇进行排序;步骤四,将已经存在于簇中的的目标进行在线处理,比较簇和目标的距离然后分别进行处理,具体方法是首先,遍历每一个簇中的每ー个目标数据,计算数据Oi到预测位置Vp的距离L。,如果L。小于本簇的半径R,则不对数据Oi进行处理,仍将数据Oi留在此簇中;如果L。小于本簇的半径R,则分以下两种情况进行处理如果L。小于簇的最大距离maxDist,则将本簇的半径R更新为L。;如果L。大于簇的最大距离maxDist,则将数据Oi从簇中移除,将数据Oi加入链表EList 中;最后,当所有目标都处理完成时,将存储在链表WDList中的目标聚类生成新簇;步骤五,对新目标聚类生成新簇;步骤六,将新簇和老簇进行融合先对所有老簇按照到原点距离的大小进行排序,然后根据老簇和上一个新簇比较的结果来减少老簇和下一个新簇融合的计算量,同时更新簇信息,其中,老簇指新簇生成前就存在的簇。所述步骤三中计算簇的速度是以多数表决的方式来进行,假定存在ー个速度Vi,如果簇中在[Vi-ξ,Vi+ξ,]范围内的数据最多,则\即为簇的速度,ξ是ー个经验值,跟Vi的值正相关;所述步骤三中计算簇的加速度是以多数表决的方式来进行,假定存在ー个加速度ap如果簇中在[ai-ii,Bi+u,]范围内的数据最多,则Bi即为簇的加速度,U是一个经验值,跟Vi的值正相关。所述排序的方法是根据簇的速度和加速度,预测一定时间间隔后的簇的位置,然后遍历一遍所有的簇,计算簇的预测位置Vp到原点的距离Lp,根据Lp的大小进行排序,并保存在一个链表中。在步骤六后继续进行步骤三,由于战场中的数据每隔一段时间会到来一批数据,会一直持续下去,所以此算法也会一直持续下去。所述步骤六中只有当簇中逃离的数据大于阈值时,才更新簇的信息。所述步骤六中根据老簇和上一个新簇比较的结果来减少老簇和下一个新簇融合的计算量,同时更新簇信息的规则是假定新簇链表NOList中有M个簇,分别是NC1, NC2,, NCq, NCq+1,. . .,NCm,到原点 的距离分别是 NL1, NL2,. . . ,NLq,NLq+1,. . .< NL2 < < NLq < NLq+1 < …< NLm ;老簇链表中CList中有N个簇,分别是OC1, OC2, ...,OCs,0CS+1, . . .,OCn,到原点的距离分别是 CL1, CL2, ,CLs, CLS+1, ,CLn 且 CL1 < CL2 < CLs < CLS+1 < < CLn ;如果CLs-NLq > maxDist,则簇 OCs 不能和 NC1JC2,. . . , NCq 融合,簇 0CS+1, ,OCn 也不能和 NC1,NC2, . . . , NCq融合,由此相应地较少了一个或者多个计算量。与现有的聚类方法相比,本发明所述战场目标的动态聚类方法,解决了战场聚类处理中的不足和关键问题,即可持续地对战场中的目标数据进行有效地聚类。因此,可有效地对支持态势评估和威胁估计等,极具实用性。
图I为本发明所述战场目标的动态聚类方法的流程图。图2为簇的离线处理和在线分析图。图3为4个目标的速度图。图4为两个簇的关系图。图5为逃离簇与原有簇关系图。图6为优化算法和传统算法效果比较图。
具体实施例方式下面结合附图和实施例对本发明做进一步详细说明。本发明所述的战场目标的动态聚类方法是一种基于预测性的动态数据聚类方法,其对动态数据聚类的有效性以及实用性都是先有的聚类方法都无法比拟的,通过本发明所述方法,有效地提高了聚类的速度以及准确度。参照图I中所示,本发明所述战场目标的动态聚类方法包括如下步骤首先,是加载预定义参数和获取目标数据并初始化簇。当第一批数据到达时,需要生成初始化的簇。在簇的初始化时,可以使用任意的聚类算法或者其它方法生成簇(步骤100-102)。然后进入簇的维护阶段I、老目标的处理。本方法将已经存在于簇中的目标称为老目标。战场中的数据是动态的,其位置是随时改变的,因而会不断有数据脱离簇,也会有数据不断加入簇中。这是一个动态的过程。根据实际情况,更新每个簇中的数据。本方法提出了一种基于预测技术的处理方法,主要思想是利用两次聚类之间的间隔对上次所获得的结果进行相关的处理,以便在下次聚类时能直接使用处理后的结果,快速获得相关的簇。换句话说,利用每次聚类之间的间隔时间对相关数据进行离线处理;然后再对更新后的数据进行在线分析(步骤103)。参 照图2所示,A1时刻表示第一批数据到达,A2、A3时刻表示第二批、第三批数据到达。A1 — B1阶段表示目标群的初始化过程,B1 — A2阶段表示离线处理过程。A2 — B2阶段表示在线分析过程,B2 — A3阶段又是离线处理过程。以此类推。老目标的聚类分析主要有如下几个步骤I. I、离线处理过程。首先需要计算簇的速度和加速度,在许多已有的文献中,都是简单地把簇中实体对象的平均速度作为簇的速度。但是,平均速度并不能如实地反映簇的速度,而且也不利于对后续的数据进行处理。例如假定一个簇中有四个实体数据,他们的速度如图3所示,平均速度是10。假定他们现在都在原点,并且沿着X轴运动。10秒后,a、b、c的位置都在50,而d的位置在250 ;而簇的位置在100。显然,数据都偏离了簇。换句话说,平均速度不能很好地反映簇的速度。本方法中,采用多数表决的方法来计算簇的速度。定义I。存在一个速度Vi,如果簇中在[Vi-L Vi+ I ,]范围内的数据最多,则我们认为Vi是簇的速度。I是一个经验值,根据实验获得,在本方法中取0.1,跟Vi的值正相关。参照图3所示,假定€,= VjO. I,如果Vi = 5,则有3个数据在[Vi-L V1+I ,]范围内;如果Vi = 25,则只有I个数据在[Vi- Ui+ U范围内,因而我们把Vi = 5做为簇的速度。簇的加速度的算法和速度的算法一致,这里不再叙述。然后需要预测簇的位置。获取簇的速度和加速度之后,可以预测一定时间间隔后的簇的位置。再后,需要簇的排序。对簇进行离线处理的目的是使在线的阶段的处理速度更快。本方法遍历一遍所有的簇,计算簇的预测位置Vp到原点的距离Lp。然后根据Lp的大小选择快速排序算法进行排序,并保存在一个链表中,记为CList。自此,离线处理完成。I. 2、在线处理过程。在线处理阶段是对老目标数据(其属性已经被更新)进行聚类分析。本方法中充分利用了上次聚类的结果和离线阶段对簇进行处理所获得的信息,对更新后的数据进行快速的聚类分析。在经历一段时间之后,有些老目标会仍然留在原有簇中,而有些老目标会离开原有的簇。例如,战场中的机群,在飞行了一段时间后,其中的一架飞机或几架飞机很可能会离开机群去执行其它任务。首先定义一个数据结构,以存储这些离开原有簇的目标数据。定义2。WD = {ID, OBJList, order, *MC},每个WD对应一个簇,WD中存储从相对应的簇中逃离的数据,ID为此WD的序列号,order存储相对应的簇在链表CList中的位置,*MC存储相对应簇的指针,以方便后续算法对WD进行处理时得到相对应簇的信息。时间间隔结束之时,离线处理阶段结束,并且老数据的相关属性值也得到了更新。这时需要立即对实体池中的数据进行聚类分析。首先,遍历每一个簇中的每一个目标数据,计算此数据Oi到预测位置Vp的距离L。。如果L。小于本簇的半径,则不对Oi进行处理,也就是仍将此Oi留在此簇中。如果Lo小于本簇的半径R,则分以下两种情况进行处理如果Lo小于簇的最大距离maxDist (这是一个预先定于的经验值),则将簇的半径R更新为L0 ;如果L。> maxDist,则将此数据Oi从簇中移除,将Oi加入相对应的WD的数据链表中,并填写WD中order和*MC相关信息。当处理完一个簇MC之后,将此簇对应的WD加入链表WDList中。另外,在战场中,一个目标离开一个群体是一个很重要的事件。因而,为了态势评估的需要,在算法中,一个数据Oi从相对应的簇中离开时,应该把此事记录在事件链表中。然后,我们需要处理这些从簇中离开的目标数据,我们称这些数据为“逃离数据”。当遍历完成簇中所有的数据之后,从簇中逃离的数据都记录在WD中,有多少个簇就有多少个WD,为了方便处理,我们将这些WD生成一个链表WDList,接下来我们介绍如何处理这些从簇中逃离的数据。从上面介绍中可以知道,每个簇MC对应着一个WD,从簇MC中逃离的数据都存储在对应的MC中。在战场中,离开群体的目标有可能单独行动,也有可能群体行动。也就是说,每一个WD中的数据有可能形成一个新的簇。因而,先对每一个WD中的数据进行聚类分析。如果WD中只有一个目标,那么单个目标形成一个单独的簇。如果WD中有多个数据,那么先随机从WD中选择一个数据作为种子Si,生成一个新簇MC’,如果其他数据Oi和Si的距离小于Ri (Ri是WD相对应的簇MC的半径),那么将Oi加入到新簇MC,中;否则,以Oi为种子再生成一个新簇。如此遍历WD中所有的数据,直到所有的数据都被分配到新簇中。为了方便处理,我们把这些逃离数据生成的新簇都被保存在逃离新簇链表ESList中。再后,需要融合原有的簇和这些“逃离数据”形成的簇。在上面的步骤中,由于老目标属性值的更新,因而新生成了多个簇,分别保存在链表NOList和ESList中。下面介绍簇的融合。最简单的办法是将ESList中的簇和每一个老簇依次比较,看他们是否可以融合。假定ESList中有M个簇,老簇的数目是N个,则这种算法的时间复杂为0(M*N)。显然速度比较慢。下面对这种算法进行了优化。参照图4所示,圆O1和圆O2代表两个簇,其中O1到原点的距离为L1, O2到原点的距离为L2, O1到O2的距离为L3。根据定义可知,如果L3 > maxDist (这是一个预先定义的经验值,表示簇的最大半径),则O1和O2是不可融合的。弓丨理I。如果L2-L1> maxDist,则簇O1和O2不能融合。证明根据三角形三边定理L2-L1 < L3,如果L2-L1 < maxDist,则L3 > maxDist。又因为如果L3大于簇的最大距离maxDist,即L3 > maxDist,则O1和O2是不可融合的。得证。引理2。假定有n个簇O1, 02,. . .,Om, 0m+1, . . . , On,他们到原点的距离分别是L1,L2,, Lm, Lm+1,. . , Ln,且 L1 < L2 < . . < Lm < Lm+1 < Ln,如果有一个簇 0’,它到原点的距离为 L,,且 Lm < L,< Lm+1,如果 L,-Lm_s > maxDist (0 =< s <= m_l),贝丨J 0’和 01;02,...,Os 都不能融合;如果 Lm+q-L’ > maxDist (I <= q <= n_m),则 0m+(1, 0m+q+1,. . . , On 都不能和
0融合。 证明如果L,-Lm_s > maxDist 且 L1 < L2 < …< Lm < Lm+1 < Ln,贝丨J Lj-L1 > Lj-L2
> L,-L111-S > maxDist,则 O,和 O1, 02, ,Os 都不能融合;同理可证 Ln-L,> Ln_「L,> > Lm+q-L’ > maxDist,贝丨J Om+q+1, , On 都不能和 0,融合。得证。参照图5所示,假定O3是从簇O2中逃离的数据出来形成的簇,它到原点的距离为L4,和原簇的距离是L5。引理3。如果L4-L5-L1 > maxDist,则O3和O1是不可融合的。证明根据三角形三边定理L4-L5 < L2,则 L4-L5-L1 < L2-L1,则 maxDist < L2-L1 ;根据引理I可知O3和O1是不可融合的。引理4。假定有n个簇O1, O2, , Om, 0m+1, . . .,On,他们到原点的距离分别是L1,L2, ...,Lm, Lm+1, . . .,Ln,且 L1 < L2 < . . < Lm < Lm+1 < Ln,如果有部分数据从 Oni 中逃离出来形成新簇On/,且0m’到原簇的距离为Lm’,Offl^到原点的距离为L’,如果L’ -L/ -Lm_s
>maxDist (0 = < s < = m_l),贝丨J Om,和 O1, O2, . . . , Os 都不能融合;如果 Lm+q-L,+Lm, >maxDist (I <= q <= n_m),则 Om+(1, Om+q+1, , On 都不能和 Om’ 融合。引理5。假定新簇链表NOList中有M个簇,分别是NC1, NC2, . . .,NCq, NCq+1,...,NCm,他们到原点的距离分别是 NL1, NL2, . . .,NLq, NLq+1, . . .,NLm 且 NL1 < NL2 < . . < NLq< NLq+1 < . . . < NLm ;老簇链表中 CList 中有 N 个簇,分别是 OC1, OC2, . . .,OCs, 0CS+1,...,OCn 他们到原点的距离分别是 CL1, CL2, ,CLS,CLS+1,.,CLn 且 CL1 < CL2 < ... CLs < CLS+1<...< CLn0如果CLs-NLq > maxDist,则根据引理I和引理2,我们知道簇OCs不能和NC1,NC2, . . . , NCq 融合。那么,簇,0CS+1,. . .,OCn 也不可能和 NC1, NC2, . . . , NCq 融合。根据引理I和引理2很容易得出引理4和引理5。根据上文所述,在离线阶段,已经得到了已经排序好的簇的链表CList。假定链表中有一个簇为Ci,另外有部分数据从Ci中逃离出来形成新簇C/。在一个较短的时间内,C/应该在Ci的附近。根据引理4,我们只需搜索CList中Ci附近的簇即可。假定ESList中有M个簇,CList中老簇的数目是N个,在最坏的情况下,其时间复杂度为0(M*N);但是在战场中,各群体之间的距离较远,一般情况下,只需搜索Ci附近的几个簇即可,其时间复杂度为O(M)。本方法设计了一个实验来比较优化算法和原有算法的速度。在实验中,数据集中有1981个老簇,运动IOs后分离出5912个新簇,分别采用上述两种方法融合新簇和老簇,如图6所示,所需的时间为Ilms和31167ms。2、新数据的处理。战场中会有新的目标的到来,当一批新数据到来时,先用一般的静态聚类算法获得簇,称这些簇为“新簇”(步骤104)。3、新簇和老簇的融合。上述所形成的“新簇”和“老簇”也需要融合,因而“新簇”和“老簇”如果距离很近的话,他们很可能是一个簇。下面介绍新目标数据形成新簇和老簇的融合(步骤105)。此时也有两种算法处理。第一种方法也是把每个“新簇”和每个“老簇”各比较一遍。则这种算法的时间复杂度为0(M*N)。第二种方法是先对所有老簇按照到原点距离的大小进行排序。然后根据上一个新簇和老簇比较的结果来减少下一个新簇的和老簇的计算量。其主要依据是引理5。例如假定CL1-NL3 > maxDist且CL1-NL4 < maxDist,则新簇不需要和NLi、NL2、NL3比较,只需从NL4开始比较。如果排序选择快速排序,在最坏情况下,其时间复杂度为0(M*N+M*LgM)。但是在战场中,各群体之间的距离较远,一般情况下,其时间复杂度为O(N+M*LgM)o本方法利用式(1-1)决定使用上述哪种算法。:=>卜一 M .. >; - >! .. LfM (式 1-1)如果r: > G,选择第一种方法;否则选择第二种。当新簇和老簇融合完成之后,需要对簇进行更新和分割。引起簇被更新和分割的条件有两个,一个是目标数据离开簇;另一个是有新数据加入簇中。
当有数据逃离簇时,我们需要更新簇的半径等信息。在算法中我们并不是只要有一个数据逃离就更新簇的信息,而是设置了一个阈值,这个阈值和簇的数量正相关。如式(1-2)所示,ED代表逃离簇的数据个数,AD代表簇中总的数据个数。如果逃离的数据比例大于这个阈值,我们更新簇的信息,否则不更新。例如在一个有1000个数据的簇中,如果只有I个数据离开,那么我们可以不更新簇的信息。因为从整体看,一个数据的离开对簇的影响很小。但是如果有100个数据离开,那么我们就可能要更新簇的信息了。式 1-2)当有新数据加入簇中或者两个簇进行融合时,簇会不断增大。当簇的半径很大时,需要分割这个簇,其算法是先把簇的半径R和maxDist比较,如果R > maxDist,我们就对把此簇分割成两个子簇,如果子簇的半径还大于maxDist,就继续分割,知道所有子簇的半径度小于maxDist。在此步骤中,我们选择DBScan算法对簇进行分割,也就是对簇中的数据重新聚类分析,选择它主要原因是每次分割的子簇都是确定的,而且,在同一个簇中,数据一般都不是海量的,因而处理速度也满足实际需求。
权利要求
1.一种集群目标的动态聚类方法,其特征在于包括以下步骤 步骤一,加载预定义参数和目标数据; 步骤二,初始化簇; 步骤三,将已经存在于簇中的目标进行离线处理,计算簇的速度和加速度信息以及对这些簇进行排序; 步骤四,将已经存在于簇中的目标进行在线处理,比较簇和目标的距离然后分别进行处理,具体方法是 首先,遍历每一个簇中的每一个目标数据,计算数据Oi到预测位置Vp的距离L。,如果L。小于本簇的半径R,则不对数据Oi进行处理,仍将数据Oi留在此簇中; 如果L。小于本簇的半径R,则分以下两种情况进行处理 如果L。小于簇的最大距离maxDist,则将本簇的半径R更新为L。; 如果L。大于簇的最大距离maxDist,则将数据Oi从簇中移除,将数据Oi加入链表EList中; 最后,当所有目标都处理完成时,将存储在链表WDList中的目标聚类生成新簇; 步骤五,对新目标聚类生成新簇; 步骤六,将新簇和老簇进行融合先对所有老簇按照到原点距离的大小进行排序,然后根据老簇和上一个新簇比较的结果来减少老簇和下一个新簇融合的计算量,同时更新簇信息,其中,老簇指新簇生成前就存在的簇。
2.根据权利要求I所述动态聚类方法,其特征在于,所述步骤三中计算簇的速度是以多数表决的方式来进行,假定存在一个速度Vi,如果簇中在[Vi-ξ,Vi+ ξ ,]范围内的数据最多,则Vi即为簇的速度,ξ是一个经验值,跟Vi的值正相关; 所述步骤三中计算簇的加速度是以多数表决的方式来进行,假定存在一个加速度ai;如果簇中在Lai-μ , Bi+μ ,]范围内的数据最多,则Bi即为簇的加速度,μ是一个经验值,跟Vi的值正相关。
3.根据权利要求2所述动态聚类方法,其特征在于,所述排序的方法是根据簇的速度和加速度,预测一定时间间隔后的簇的位置,然后遍历一遍所有的簇,计算簇的预测位置Vp至順点的距离Lp,根据Lp的大小进行排序,并保存在一个链表中。
4.根据权利要求I所述动态聚类方法,其特征在于,在步骤六后继续进行步骤三。
5.根据权利要求I所述动态聚类方法,其特征在于,所述步骤六中只有当簇中逃离的数据大于阈值时,才更新簇的信息。
6.根据权利要求I所述动态聚类方法,其特征在于,所述步骤六中根据老簇和上一个新簇比较的结果来减少老簇和下一个新簇融合的计算量,同时更新簇信息的规则是 假定新簇链表NOList中有M个簇,分别是NC1, NC2,. . . , NCq, NCq+1,. . .,NCm,到原点的距离分别是 NL1, NL2, · · ·,NLq, NLq+1, ···,NLni 且 NL1 < NL2 <·· · < NLq < NLq+1 < · · · < NLm ;老簇链表中CList中有N个簇,分别是OC1, OC2, ...,OCs,0CS+1, . . .,OCn,到原点的距离分别是 CL1, CL2, · · ·,CLs, CLS+1,· · ·,CLn 且 CL1 < CL2 < · · · CLs < CLS+1 < · · · < CLn ;如果CLs-NLq > maxDist,则簇 OCs 不能和 NC1, NC2,. . . , NCq 融合,簇 0CS+1,. . . , OCn 也不能和 NC1,NC2, . . . , NCq融合,由此相应地较少了一个或者多个计算量。
全文摘要
一种集群目标的动态聚类方法,包括初始化簇,在初始化时可以使用任意的静态数据聚类算法,然后是簇的维护阶段,分为老目标的处理和新目标的处理两个步骤;老目标的处理又分为离线处理和在线处理两个子步骤,离线处理主要计算簇的速度和加速度等信息以及对这些簇进行排序,在线处理主要比较簇和目标的距离然后分别进行处理;新目标的处理利用一般的聚类算法对新目标聚类生成新簇;最后是新簇和老簇的融合,先对所有老簇按照到原点距离的大小进行排序,根据上一个新簇和老簇比较的结果来减少下一个新簇的和老簇融合的计算量。
文档编号G06F17/30GK102663113SQ20121011357
公开日2012年9月12日 申请日期2012年4月17日 优先权日2012年4月17日
发明者卢正才, 张海生, 李凤翔, 江子能, 覃征 申请人:清华大学