无线传感器网络故障诊断方法转让专利

申请号 : CN201110237195.8

文献号 : CN102238604B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘云浩刘克彬杨铮

申请人 : 无锡儒安科技有限公司

摘要 :

本发明无线传感器网络故障诊断方法,属于无线传感器网络领域,本发明包括以下步骤:采集传感器节点的数据;根据上述检测数据建立特征向量之间的关系模型;时间维检测;空间维检测;根据运行决策函数值判断发生的故障区域。本发明提供一种基于零领域知识的传感器网络故障诊断方法。该方法会自动探索节点测量值的相关性,并利用这种时间与空间维度上的相关性去检测故障。

权利要求 :

1.一种无线传感器网络故障诊断方法,其特征在于,包括以下步骤:

1)采集传感器节点的数据,并建立特征向量之间的关系模型;

2)时间维检测;

3)空间维检测;

所述步骤1)中,收集的数据包括:天线打开次数、天线打开总时间、收到的数据包数量、发送的数据包数量、丢弃的包数量; 建立关联度矩阵:

其中,i为传感器编号,k为当前时间窗,p为特征向量的维数; 所述传感器i在时间窗k内的任意两个计数器u,v的相关系数是其协方差除以二者的标准差,即 其中,σu,k和σv,k分别是计数器u和计数器V数据的标准差: 所述丢弃的包数量包括因接收栈缓冲区溢出而丢弃的包数量以及重传次数达到上限的情况下仍然没有得到应答确认而丢弃的包数量; 所述的时间维检测算法包括以下步骤:

算法输入:建立节点si的内部关联性状态序列{CGi,1,CGi,2,CGi,3,CGi,4,...},置信度阈值confthreshold,引导分析的最高执行次数M; 算法输出:

A):算法初始化:设置当前时间窗t=1; B):在时间窗t结束时运行:

C):获得最新的关联性状态CGi,t,序列更新为{CGi,1,CGi,2,CGi,3,...,CGi,t}; D):令变量d从1循环至p(p-1)/2,重复执行步骤E)-S),其中p为特征向量的维数; E):对每个向量CGi,t,取其第d个元素,得新序列{c1,c2,...,ct} F):令累积和CS0=0;

G):令时间变量i从1循环至当前时间窗t,分别计算累积和: H):寻找{CS1,CS2,CS3,...,CSt}中的最大最小值,分别记为max(CSi),min(CSi); I):令序列的最大变化幅度CSdiff=max(CSi)-min(CSi); J):置计数器R=0;

K):令变量j从1循环至引导分析的最高执行次数M,循环执行步骤为L)-O)的引导分析: L):将原始序列{c1,c2,...,ct}随机打乱,生成新序列{c’1,c’2,...,c’t}; M):按照同样的方法计算其对应的累积和序列{CS’0,CS’1,CS’2,...,CS’n}; N):求得新累积和序列的的最大变化幅度CS’diff=max(CS’i)-min(CS’i); O):若原序列的最大变化幅度大于新序列的最大变化幅度,即CSdiff>CS’diff,计数器R自增1; P):计算累积和序列{CSi,1,CS1,2,CSi,3,...,CSi,t}中绝对值最大的点,即CSk=max|CSi|(k的取值); Q):原始序列{c1,c2,...,ct}中的最显著变化点即ck,其置信度为conf=R/M; R):若置信度conf大于置信度阈值confthreshold,令节点si发生故障的时间terror等于最显著变化点的时间,即k; S):若在步骤R)中terror被赋值,则输出结果terror及其置信度; T):令t=t+1,重复执行步骤B)-S); 所述的空间维检测算法包括以下步骤:

算法输入:

在时间窗t网络中所有节点si的内部关联性状态{CG1,t,CG2,t,...,CGN,t}; 低维空间的维度m,m取值远小于p*(p-1)/2。 算法输出:

在时间窗t节点发生故障的可能性排序{si1,si2,...,SiN} A1):算法初始化:

取向量CGi,t的转置,记为列向量Xi; 构造数据矩阵X=[X1,X2,...,Xn],X的第i列即为Xi; T

B1):对矩阵XX作特征值分解,得到其特征向量{v1,v2,...,vm}; T

C1):构造新的数据矩阵Z=(v1v2...vm),其大小为m*N; D1):Z的第i列bi即原关联性向量CGi,t在低维空间中的投影; E1):利用K-Means算法将数据集{bi}分为K个聚类,对应的聚类中心分别为{B1,B2,...,BK}; F1):对任意节点si,其发生故障的概率正比于CGi,t与聚类中心{B1,B2,...,BK}的最短距离; G1):将所有节点按照发生故障的概率由高到低排列,得到序列{si1,si2,...,siN}.; H1):根据上述按照故障序列,即可确定发生故障的区域。

说明书 :

无线传感器网络故障诊断方法

技术领域

[0001] 本发明属于无线传感器网络领域,具体涉及一种无线传感器网络故障诊断方法。

背景技术

[0002] 近年来,无线传感器网络被广泛应用在了环境监测、煤矿事故检测、危险境地导航、交通流量监控等诸多与国计民生有着重大联系的场景中。在典型的传感器网络中,大量的传感器节点以自组织(ad-hoc)的方式组建网络,协同工作通过多跳(multi-hop)将数据传送回网络基站。由于当前科技水平以及制造工艺的限制,传感器节点的软件与硬件通常并不能完美地契合进行工作,普遍具有易出错的特征。同时,由于节点间采用无线信号进行数据传输,多径(multi-path)、干扰(interference)等因素进一步增加了传感器网络的不稳定性:障碍物的出现会削弱无线信号,导致节点间瞬时或者永久的失去连接;多个节点同时通信会导致对信道的使用出现竞争,而最终只有一个节点能成功抢占信道进行数据发送。
[0003] 传感器网络中的故障会对其应用造成极大的妨害。节点出错使得相应位置的感知数据无法被传送至基站,降低了网络对区域的覆盖性。而关键位置的节点或者链路出错甚至会导致网络出现分割,各自形成两个封闭的子网。由于网络中普遍只具有一个基站,这必将导致其中一个子网完全无法与基站进行通信。更进一步而言,这些无法被传送回基站的数据会在路由中形成回路,循环往复地进行传输,给网络中的传感器节点增加诸多不必要的通信开销,消耗额外的电量,从而降低了网络的生命周期。
[0004] 为了增强传感器网络的可用性,同时提升传感器网络的可靠性,许多研究机构都开展了无线传感器网络诊断技术的研究,用以检验网络故障、定位网络中的故障节点。当前主要的传感器故障诊断技术可分为两类。第一类是软件纠错技术。典型的方法是在传感器节点程序的源代码层构建类似于GDB(开源组织基金会程序调试器)的调试工具,通过断点执行、变量观察、堆栈访问等接口进行代码纠错。这类方法可以判断程序逻辑的错误,但是不能识别通信链路受阻、节点功能紊乱等网络中的故障。第二类技术通过收集网络中的相关信息进行深层次的数据分析。这类方法能够很好的识别网络出错状况,但是通常需要深厚的领域知识。以加州大学洛杉矶分校的研究人员提出的基于规则的诊断方法为例,基站首先会主动收集各传感器节点的邻居节点以及下一条节点等信息,然后参照以此建立的决策树模型,分析结果从而迅速定位网络故障的根源。但是,决策树等统计模型的建立严重依赖于研究人员对传感器网络的实际运行经验以及对网络故障的理解程度,因而不具有较强的可扩展性。换而言之,一个对传感器网络不熟悉的人员或者一个未曾出现过的网络错误都有可能导致这类方法失效。
[0005] 有研究表明,传感器节点的测量值之间通常具有一定程度的相关性。比如,在同一个节点上,天线开启的总时间与其传输数据包的数量之间经常表现出强相关性。对于一个健康的节点而言,其收发的数据包越多,为了进行传输其天线开启的时间必须越长。反之,若是一段时间内其天线开启的时间明显较长,说明在此阶段其传输的数据包数量也会较其他时间多。但是对于一个故障的节点而言,这两种测量值之间则未必具有强相关性。比方说,因为MAC层(介质访问控制层)协议故障,处于睡眠状态的节点被唤醒,开启天线后却并没有收到数据包,这将导致天线开启时间与传输数据包数量之间的不匹配。

发明内容

[0006] 针对上述需求,本发明的解决的技术问题是,提供一种基于零领域知识的传感器网络故障诊断方法。该方法会自动探索节点测量值的相关性,并利用这种相关性去检测故障。
[0007] 本发明的无线传感器网络故障诊断方法的技术方案如下。
[0008] 一种无线传感器网络故障诊断方法,包括以下步骤:
[0009] 1)采集传感器节点的数据;
[0010] 2)根据上述检测数据建立特征向量之间的关系模型;
[0011] 3)时间维检测;
[0012] 4)空间维检测;
[0013] 5)根据运行决策函数值判断发生的故障区域。
[0014] 其中,所述步骤1)中,收集的数据包括:天线打开次数、天线打开总时间、收到的数据包数量、发送的数据包数量、丢弃的包数量。
[0015] 其中,建立关联度矩阵:
[0016]
[0017] 其中,所述传感器i在时间窗k内的任意两个计数器u,v的相关系数是其协方差除以二者的标准差,即
[0018]
[0019] 其中,σu,k和σv,k分别是计数器u和计数器v数据的标准差:
[0020]
[0021]
[0022] 其中,所述σu,k和σv,k分别是计数器u和计数器v数据的标准差,相关系数是其协方差除以二者的标准差。
[0023] 其中,所述丢弃的包数量包括因接收栈缓冲区溢出而丢弃的包数量以及重传次数达到上限的情况下仍然没有得到应答确认而丢弃的包数量。
[0024] 其中,所述时间维检测的算法包括以下步骤:
[0025] 算法输入:建立节点si的内部关联性状态序列{CGi,1,CGi,2,CGi,3,CGi,4,...};置信度阈值的算法输出:
[0026] A):算法初始化:设置当前时间窗t=1;
[0027] B):在时间窗t结束时运行:
[0028] C):获得最新的关联性状态CGi,t,序列更新为
[0029] {CGi,1,CGi,2,CGi,3,...,CGi,t};
[0030] D):令变量d从1循环至p(p-1)/2:
[0031] E):对每个向量CGi,t,取其第d个元素,得新序列{c1,c2,...,ct}
[0032] F):(变化点ct_cand的置信度)=序列变化点检验({c1,c2,...,ct})
[0033] G):若置信度大于置信度阈值,
[0034] H):令节点si发生故障的时间terror等于最显著变化点的时间t_cand
[0035] I):输出结果terror及其置信度,并继续运行程序,
[0036] J):重复执行第4-9行直至取完向量CGi,t的所有p(p-1)/2个元素
[0037] K):在下一时间窗结束时重复执行2-10行,时间窗t=t+1
[0038] 其中,上述步骤C)中,挑选出序列{c1,c2,...,ct}中的最显著变化点的具体算法如下:
[0039] 算法输入:到时间窗t截至,节点si的内部任意两种测量值的关联性序列{c1,c2,...,ct},引导分析的最高执行次数M(默认为10000)
[0040] 算法输出:
[0041] 序列中最显著的变化点及置信度
[0042] a):算法初始化:
[0043] 令累积和CS0=0;
[0044] b):时间变量i从1循环至至当前时间窗t,分别计算累积和:
[0045]
[0046] c):寻找{CS1,CS2,CS3,...,CSt}中的最大最小值,分别记为max(CSi),min(CSi)[0047] d):令序列的最大变化幅度CSdiff=max(CSi)-min(CSi)
[0048] e):置计数器R=0;
[0049] f):令变量j从1循环至引导分析的最高执行次数M,执行以下引导分析:
[0050] g):将原始序列{c1,c2,...,ct}随机打乱,生成新序列{c’1,c’2,...,c’t};
[0051] h):按照同样的方法计算其对应的累积和序列{CS’0,CS’1,CS’2,...,CS’n};
[0052] i):求得新累积和序列的的最大变化幅度CS’diff=max(CS’i)-min(CS’i);
[0053] j):若原序列的最大变化幅度大于新序列的最大变化幅度,即CSdiff>CS’diff,计数器R自增1;
[0054] k):重复执行本算法步骤g)-j)行直到变量j的值大于最高执行次数M;
[0055] 1):计算累积和序列{CSi,1,CSi,2,CSi,3,...,CSi,t}中绝对值最大的点,即CSk=max|CSi|;
[0056] m):输入序列中的最显著变化点即ck,其置信度为conf=R/M。
[0057] 其中,所述步骤3)中,还包括以下步骤:
[0058] 算法输入:
[0059] 在时间窗t网络中所有节点si的内部关联性状态{CG1,t,CG2,t,..,CGN,t};
[0060] 低维空间的维度m(m取值远小于p*(p-1)/2)。
[0061] 算法输出:
[0062] 在时间窗t节点发生故障的可能性排序{si1,si2,...,SiN}(从高到低)。
[0063] A1):算法初始化:
[0064] 取向量CGi,t的转置,记为列向量Xi;
[0065] 构造数据矩阵X=[X1,X2,...,Xn],X的第i列即为Xi;
[0066] B1):对矩阵XTX作特征值分解,得到其特征向量{v1,v2,...,vm};
[0067] C1):构造新的数据矩阵Z=(v1v2...vm)T,其大小为m*N;
[0068] D1):Z的第i列bi即原关联性向量CGi,t在低维空间中的投影;
[0069] E1):利用K-Means算法将数据集{bi}分为K个聚类,对应的聚类中心分别为{B1,B2,...,BK};
[0070] F1):对任意节点si,其发生故障的概率正比于min(dist(CGi,k,Cj)),其中dist(CGx,CGy)为向量间的距离函数;
[0071] G1):将所有节点按照发生故障的概率由高到低排列,得到序列{si1,si2,...,siN}。
[0072] 其中,所述步骤5)中的故障区域为所述置信度的数值大于所述置信度阈值的节点。
[0073] 本发明的有益效果如下。
[0074] 本发明与传统的传感器网络诊断方法相比,该方法既能探测出软件纠错所无法侦测的故障,又不需要网络管理人员具有传感器网络故障的先验知识。另外,实验表明,基于本发明可以发现一般统计方法无法检测到的故障。

附图说明

[0075] 图1:健康节点的内部关联性;
[0076] 图2:故障节点的内部关联性;
[0077] 图3:初始关联度变化曲线;
[0078] 图4:时间维检测过程;
[0079] 图5:空间维检测过程。

具体实施方式

[0080] 以下结合附图对本发明的无线传感器网络故障诊断方法进行进一步说明。
[0081] 参见附图所示,依照本发明的一种无线传感器网络故障诊断方法包括具体而言,本方法的实施分为四个阶段,分别为:(1)数据收集;(2)关联矩阵建立;(3)时间维检测;(4)空间维检测。
[0082] (1)数据收集阶段,首先要在传感器节点的程序中加入一些计数器,每个计数器都是占用四字节的整数。这些计数器分别记录了可以描述节点状态的测量
值。自节点的启动阶段开始,计数器就基于对应的事件开始进行累加。比如,计数器
RadioOnTimeCounter(天线开启时间计数器),开始在节点启动后被置零,然后每当有天线打开关闭事件发生时,这段打开的总时间就被累加进计数器中(单位:毫秒)。同样的,计数器DuplicationCounter(重复包数量计数器)在每次收到一个重复的包时,都会累加1。
节点被部署以后,每隔十五分钟就将所有计数器的值存储在数据包中,向终端发送。这些计数器包括但不局限于:RadioOnCounter,记录天线打开次数;RadioOnTimeCounter,记录天线打开总时间;ReceiveCounter(收到的数据包数量计数器);TransmitCounter(发送的数据包数量计数器);ReceiveOverflowDropCounter(接收栈缓冲区溢出而丢弃的包数量计数器);TransmitNoACKDropCounter(重传次数达到上限的情况下仍然没有得到应答确认而丢弃的包数量计数器)。
[0083] (2)终端每隔十五分钟都会收到各个节点汇报计数器数值的数据包。取两小时为时间窗,在每个时间窗内为各节点分别建立关联矩阵。假设网络中共有N个传感器节点,在每个节点上都记录有p个测量值(相应的,也有p个不同的计数器)。于是,在第t个数据包发送周期,节点si(1≤i≤N)发送回的数据包可以表示成一个p维的向量,即Metrici,t=(m1,t,m2,t,...,mp,t),其中m1,t为节点si在第t个周期结束后第1号计数器的值,其余以此类推。同时,设每个时间窗的长度都是数据包发送周期十五分钟的W倍。那么,在第k个时间窗,终端所收集的数据包含了从周期(k-1)*W+1到周期k*W各周期内节点所有计数器的值。此时,可以建立si在时间窗k的关联矩阵如下:
[0084]
[0085] 其中,ci,k(u,v)是一个区间[-1,+1]内的实数,表示在时间窗k内,节点si的第u个和第v个计数器所表征的测量值的关联性。计数器u和v的关联性越强,ci,k(u,v)的绝对值越接近1。关联性越弱,ci,k(u,v)的绝对值越接近0。大于0的值表明两者之间存在正相关,小于0的值表明两者之间存在负相关,等于0表明两者在统计上不存在任何关联。由于时间窗k对应了周期(k-1)*W+1至周期k*W,这W个数据包中第u个计数器的数据实际上是(mu,(k-1)*w+1,mu,(k-1)*w+2,...,mu,k*w),mu,(k-1)*w+1的意义如前所述。同理,第v个计数器的数据也有W个,分别是(mv,(k-1)*w+1,mv,(k-1)*w+2,...,mv,t*w)。根据Pearson的线性相关系数,计数器u与计数器v的关联度可以定义:
[0086]
[0087]
[0088]
[0089] 其中,σu,k和σv,k分别是计数器u和计数器v数据的标准差,而相关系数实际是其协方差除以二者的标准差。在关联矩阵ci,k(u,v)建立以后,实际上得到了在窗口k内传感器si内部运行状况的一种矩阵表达。
[0090] 图1和图2分别展现了健康和故障节点的内部关联性图。图中,每个圈代表一种计数器,两个圈之间的边表示相应的计数器之间存在着强关联性。实际上,任意两种计数器之间都存在关联性,无论关联性是强是弱。可以发现,健康节点的内部关联性与故障节点的内部关联性之间存在显著区别。比如,对于表示节点操作系统下达任务数量的计数器与操作系统执行任务数量的计数器而言,在健康的节点上,两者应该是强相关的,有多少任务被下达,就有多少相应的任务被执行。即使可能由于栈溢出等原因某些任务未能被执行,但是两者的数量应该相差无几。但是对于故障节点而言,可能有很大部分被下达的任务都丢失了,而且这种丢失行为比较随机,导致两者之间的关联性变得很弱。于是,通过比较两种节点的内部关联性矩阵,可以很容易的分析出来哪些节点是健康的,哪些节点是故障的。
[0091] (3)时间维检测,时间维度的检测侧重在单个节点内部,是为了发现在时间轴上单个节点状态发生突变的时刻。定义节点si在各时间窗内的关联矩阵分别为{CMi,i,2
CMi,2,CMi,3,CMi,4,...}。将关联矩阵CMi,t按行拼接,我们可以得到一个与CMi,t等价的1*p维行向量,而实际上,由于关联矩阵CMi,t是对称矩阵,行向量的大小可以进一步压缩为
1*p(p-1)/2,记作CGi,t。于是节点si的内部关联性变化对应于时间序列{CGi,1,CGi,2,CGi,3,CGi,4,...}。若时间窗t内的关联矩阵CGi,t是关联矩阵序列中的一个显著的变化点,则此时节点si即为疑似故障点,其发生故障的概率为CGi,t是变化点的置信度。值得注意的是,由于向量CGi,t是包含了p(p-1)/2种不同的关联性,而实际上任一种关联性的显著变化都意味着潜在的错误,所以我们必须对每一种关联性序列单独进行检测。以第d种关联性为例,对时间序列{CGi,1,CGi,2,CGi,3,CGi,4,...}中的每个向量CGi,t取第d个元素,得新序列{c1,c2,c3,c4,...},若其最显著的变化点ct_cand(候选点)的置信度大于conf_threshold(预设的置信度阈值),则时间窗t_cand内节点si很有可能发生了故障。检测的具体过程如算法
1所述。
[0092] 算法1:时间维检测算法
[0093] 算法输入:
[0094] 1.节点si的内部关联性状态序列{CGi,1,CGi,2,CGi,3,CGi,4,...};
[0095] 2.置信度阈值conf_threshold。
[0096] 算法输出:
[0097] 节点si发生故障的时间terror,若没有发生任何故障,故障时间terror=-1。
[0098] 1:算法初始化:
[0099] 当前时间窗t=1;
[0100] 2:在时间窗t结束时运行:
[0101] 3:获得最新的关联性状态CGi,t序列更新为
[0102] {CGi,1,CGi,2,CGi,3,...,CGi,t};
[0103] 4:令变量d从1循环至p(p-1)/2:
[0104] 5:对每个向量CGi,t,取其第d个元素,得新序列{c1,c2,...,ct}
[0105] 6:(变化点ct_cand,置信度conf)=序列变化点检验({c1,c2,...,ct})
[0106] 7:若置信度conf大于置信度阈值conf_threshold,
[0107] 8:令节点si发生故障的时间terror等于最显著变化点的时间t_cand
[0108] 9:输出结果terror及其置信度conf,并继续运行程序
[0109] 10:重复执行第4-9行直至取完向量CGi,t的所有p(p-1)/2个元素
[0110] 11:在下一时间窗结束时重复执行2-10行,时间窗t=t+1
[0111] 其中,算法1的第四行需要调用序列变化点检验算法来挑选出序列{c1,c2,...,ct}中的最显著变化点,我们采用了CUSUM(累积和)算法来实现这一功能,即算法2。其基本思想为,定义累积和CSi,c1直到ci累计与平均值的差值。若序列{c1,c2,...,ct}中没有显著的变化点,可以想象累积和CSi会始终在0左右摆动;若序列中存在显著变化点ck,不妨设一开始ci的值都大于均值,而ck处显著变小,那么CSi首先会逐步增加,直到CSk处值开始减小,于CSk-1处形成峰值。通过检测累积和的峰值,可以帮助找出原序列的显著变化点,定义其最大变化幅度为CSi的最大值与最小值之差。同时,为了模拟没有显著变化点时序列的表现,可以执行引导分析。引导分析首先将序列随机打乱,然后像之前一样计算重新排列后序列的累积和变化并找出最显著变化点。若在M次引导分析中,原序列的最大变化幅度有R次是大于随机打乱后序列的最大变化幅度的,则原序列最显著变化点的置信度为R/M。具体步骤参见算法2。
[0112] 算法2:序列变化点检验算法CUSUM
[0113] 算法输入:
[0114] 1.到时间窗t截至,节点si的内部任意两种测量值的关联性序列{c1,c2,...,ct}[0115] 2.引导分析的最高执行次数M(默认为10000)
[0116] 算法输出:
[0117] 序列中最显著的变化点dt_cand及置信度conf:
[0118] 算法初始化:
[0119] 令累积和CS0=0;
[0120] 2:时间变量i从1循环至至当前时间窗t,分别计算累积和:
[0121]
[0122] 3:寻找{CS1,CS2,CS3,...,CSt}中的最大最小值,分别记为max(CSi),min(CSi)[0123] 4:令序列的最大变化幅度CSdiff=max(CSi)-min(CSi)
[0124] 5:置计数器R=0;
[0125] 6:令变量j从1循环至引导分析的最高执行次数M,执行以下引导分析:
[0126] 7:将原始序列{c1,c2,...,ct}随机打乱,生成新序列{c’1,c’2,...,c’t};
[0127] 8:按照同样的方法计算其对应的累积和序列{CS’0,CS’1,CS’2,...,CS’n};
[0128] 9:求得新累积和序列的的最大变化幅度CS’diff=max(CS’i)-min(CS’i);
[0129] 10:若原序列的最大变化幅度大于新序列的最大变化幅度,即CSdiff>CS'diff,计数器R自增1;
[0130] 11:重复执行本算法8-11行直到变量j的值大于最高执行次数M;
[0131] 13:计算累积和序列{CSi,1,CSi,2,CSi,3,...,CSi,t}中绝对值最大的点,即CSk=max|CSi|;
[0132] 14:输入序列中的最显著变化点即ck,其置信度为conf=R/M。
[0133] (4)空间维检测:通过网络中所有节点的普遍模式来辨别故障点。尽管网络中节点分布在不同的位置,也不存在完全一样的两个节点,但是它们的分布区域、在系统中起的作用依然决定了其内部模式享有一定的共同之处。举例而言,部署在同一区域的节点,周围的网络环境、链路质量相似,故而成功传输的数据包与传输数据包总量之间的相关性也相同。基于这样的分析,取时间窗t所有节点的内在关联性向量{CGi,t,CG2,t,...,CGN,t},空间维检测的任务是挑出其中最不正常的值。基于聚类的思想,作如下定义:假设这些向量可以被归为K类,每类的中心点为{B1,B2,...,BK}。相应的,每一个向量CGi,t,所对应的节点发生故障的概率正比于 其中dist(CGx,CGy)为向量间的距离函数。换而言之,若向量CGi,t距离所有中心点Cj的最近距离 越大,节点i的
内在关联性模式与其他节点的相似之处则越少,节点i发生故障的概率就越大。反之,若越小,与节点i的内在关联性模式类似的节点就越多,节点i发生故
障的概率就越小。
[0134] 向量CGi,t的维度是p(p-1)/2,随着测量值种类p的上升,向量维度呈其平方倍增长。而在一般应用中,p的数量至少为几十或者数百,因而普通的聚类算法在此并不适用。于是我们提出了利用PCA分析进行空间检测的方法,基本思想是先将高维向量CGi,t投影至低维空间,然后再进行聚类计算:首先可以构造数据矩阵X,X的列Xi是高维向量CGi,t的转T
置。若将矩阵XX作特征值分解,并把得到的特征向量逐行排列,可以构成新的数据矩阵Z。
Z的第i列bi就是原关联性向量CGi,t在低维空间中的投影。于是,对数据集{bi}进行聚类分析,每个低维向量都会被指定到一个聚类中去。若某向量bi离其所属的聚类中心越远,那么对应的节点i在当前时间窗t内的内部关联性与其他节点的就越不一样,从而发生故障的概率就越大。具体步骤参见算法3。
[0135] 算法3:空间维检测算法
[0136] 算法输入:
[0137] 1.在时间窗t网络中所有节点si的内部关联性状态{CGi,t,CG2,t,...,CGN,t};
[0138] 2.低维空间的维度m(m取值远小于p*(p-1)/2)。
[0139] 算法输出:
[0140] 在时间窗t节点发生故障的可能性排序{si1,si2,...,siN}(从高到低)。
[0141] 1:算法初始化:
[0142] 取向量CGi,t的转置,记为列向量Xi;
[0143] 构造数据矩阵X=[X1,X2,...,Xn],X的第i列即为Xi;
[0144] 2:对矩阵XTX作特征值分解,得到其特征向量{v1,v2,...,vm};
[0145] 3:构造新的数据矩阵Z=(v1v2...vm)T,其大小为m*N;
[0146] 4:Z的第i列bi即原关联性向量CGi,t在低维空间中的投影;
[0147] 5:利用K-Means算法将数据集{bi}分为K个聚类,对应的聚类中心分别为{B1,B2,...,BK};
[0148] 6:对任意节点si,其发生故障的概率正比于min(dist(CGi,k,Cj)),其中dist(CGx,CGy)为向量间的距离函数;
[0149] 7:将所有节点按照发生故障的概率由高到低排列,得到序列{si1,si2,...,siN}。
[0150] 在具体的实施过程中,我们发现低维空间的维度m取15能够收到比较好的效果。
[0151] 以下结合附图和实例对本发明做进一步说明。
[0152] 图3说明了时间维检测的一般步骤。图3中的曲线描述了两种测量值的关联性变化。图4中的实线对应于原始序列对应的累积和。而三条虚线则是将原始关联性序列分别作随机打乱所计算得出的累积和序列。每种曲线最高点的值减去最低点的值即为对应序列的最大变化幅度。我们可以看到,实线的最大变化幅度是所有曲线中最高的。于是,原始序列发生变化的点即为实线中纵坐标绝对值最大的点,置信度为100%。
[0153] 图5显示了空间维检测的过程。在部署区域上,每个节点都会被计算其对应的内在关联性矩阵。为了说明的方便,我们将最强的关联性±1映射为白色(灰度值255),最弱的关联性0映射为黑色(灰度值0)。可以看到,在关联矩阵的相同位置上,右下角的传感器节点总是与其他节点表现出差异很大的颜色。也就是说,对于同样两个变量,在右下角节点上的关联性是与其他节点截然不同的,从而该节点就有着很大的概率成为故障点。
[0154] 本发明所述的方法已经成功应用于无线传感器网络。在绿野千传(http://www.greenorbs.org)项目中,有多达350个节点在野外协同工作,采集环境的温度、湿度、光照以及二氧化碳浓度等数据,为森林监测以及林业研究提供了重要信息。通过在系统中收集测量数据,本发明成功的检测出了多种类型的故障,比如进入丢失(Ingress Drop)、路由回路、节点失效和链路错误等等。检测的过程并没有融入相关的领域知识,而检测结果也显示,这些错误发生的时间常常与系统效率降低(如数据包回收率下降)的时间相吻合。
[0155] 以上所述仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应当视为本发明的保护范围。