[0042] 以下将结合附图,对本发明的技术方案进行详细说明。
[0043] 如图1所示的本发明的总体流程图,基于兴趣和地址组合的无线传感器网络数据查询算法,
[0044] 在无线传感器网络建立初期,首先进行MAC地址编码,采用一种混合编码算法对上述的MAC地址进行编码,其步骤如下:
[0045] 1、根据预测网络部署密度进行MAC
[0046] 地址分配并网络仿真,得到单播地址及地址选择频率。
[0047] 2、将单播地址按照地址选择频率降序排列。
[0048] 3、设中间地址j的选择频率为p(j),对地址选择频率大于p(j)的所有地址首位设为0,后续位采用哈夫曼编码,地址选择频率小于p(j)的所有地址首位设为1,后续位采用定长。
[0049] 4、计算中间地址j对应的编码性能参数。
[0050] 5、选择不同中间地址重复第三步、第四步,比较编码性能参数确定最优混合地址编码,中间地址j确定了两种地址编码的比例。
[0051] 其次,按照静态博弈模型给整个无线传感器网络的节点分配MAC地址,包括以下步骤:
[0052] 1、定义合理地址资源的最大长度为Lmax,i,传感器节点个数为m,利用公式:
[0053]
[0054] 计算Lmax,i。
[0055] 2、设传感器节点i的所选择的地址长度为Li
[0056] ,传感器节点效益对所选地址长度与合理地址资源长度差值的敏感程度为α,[0057] 定义传感器节点i的效益函数为:
[0058]
[0059] 3、设权值Wi
[0060] 表示节点k的决策在整体效益函数中的比重,求解如下优化问题:
[0061]
[0062] 约束条件为:
[0063] Li<Lmax,i
[0064] 可得:Li=Lmax,i-(Wi/μ)1/α。
[0065] 以此式计算任意节点地址长度,其中min为取最小值的符号,c为常数。
[0066] 进行静态博弈策略选择后,必须对所要选的地址进行声明获得该地址的使用权。如果传感器节点在地址声明时,发现自己要声明的地址已经被其它的传感器节点占用,那么要在可用地址集合中重新选择、声明。当传感器节点密度较大时,可能会有多次地址冲突而进行重复声明,在这样的情况下,可以认为该区域已经有足够的传感器节点参与工作,其余传感器节点可以进入休眠状态;当其它传感器节点失效后,再启用这些传感器节点,这样可合理利用资源,保证网络流畅运行,同时让过剩的传感器节点参与工作,也能延长传感器网络的生命周期。
[0067] 在本发明中,称汇集节点在询问其关注的监测数据时在网络中广播以属性组合构成的消息为“兴趣”。兴趣命令包含传感器监测参数的数值范围,其表达形式为“X≤a”,“a﹤X﹤b”及“X≥b”三种。所有兴趣的内容,全网所有的节点都必须理解,每个节点都可以学习新的兴趣,同时在无线传感器网络部署阶段完成兴趣的制定。
[0068] 本发明兴趣命令的下行广播是基于兴趣的广播,汇聚节点和每个路由传感器节点都建立一张下行路由兴趣表,记录每个兴趣的范围,供查询使用。当传感器节点接收到广播兴趣,同时接收到上跳的地址,并根据兴趣表判断其后的传感器节点是否发生该兴趣,只有在其后的传感器节点发生该兴趣的情况下,继续路由兴趣,否则停止路由兴趣。
[0069] 如图2所示的按兴趣查询的实例示意图,查询对象为雨量。假设兴趣命令为“雨量(rain)>30”,只有传感器节点G满足兴趣要求,雨量30在传感器节点C和E的兴趣表中相应项的范围内。当汇聚节点S向第一层邻节点A、B、C、D广播携带兴趣“雨量(rain)>30”的兴趣命令包时,只有传感器节点C在自己的兴趣表中找到相应项满足“雨量>30”的条件,这样传感器节点C继续向传感器节点E和F路由、广播兴趣命令数据包,而传感器节点A、B、D兴趣表中相应项不满足“雨量>30”的条件,
[0070] 则停止广播;同样,若没有相应记录,将收到的命令数据包丢弃,不广播。数据传输过程中,传感器节点E接着向下层的传感器节点G和其它传感器节点路由、广播兴趣命令数据包,当传感器节点G收到查询的兴趣命令后,将所监测到的实时雨量值沿着查询路径上传给汇聚节点。
[0071] 一次完整的数据查询包括兴趣命令的下行广播和上行数据的MAC地址路由。
[0072] 其中,本发明的兴趣命令的下行广播的具体过程为:
[0073] 第一步:无线传感器网络第一次启动时,全网按照静态博弈模型分配MAC地址,每个节点都被赋予一个原始兴趣表。
[0074] 第二步:管理节点发出原始兴趣命令后,汇聚节点接收到该命令后查找兴趣表,若兴趣命令在兴趣表相应项的范围内,则将本身的MAC地址加入到原始的兴趣命令,若兴趣命令在兴趣表相应项的范围外,则产生新的兴趣命令并向下广播。
[0075] 第三步:中间的路由传感器节点接收到兴趣命令后查找兴趣表,若兴趣命令在兴趣表相应项的范围内,则在保存上一跳MAC地址的同时,将上一跳的MAC地址换成本身的MAC地址,然后接着向下广播,直到找到满足兴趣命令的目的传感器节点为止。
[0076] 本发明的上行数据的MAC地址路由的具体过程为:
[0077] 第一步:当兴趣命令传递到目的传感器节点后,目的传感器节点沿着广播路由路径逆向上传监测参数值;存储有广播路径的中间传感器节点可按一定的规则被唤醒,其余传感器节点处于休眠状态。
[0078] 第二步:数据上传时,下层路由传感器节点根据记录的的MAC地址唤醒上层路由传感器节点,并将监测数据发送给该上层路由传感器节点。
[0079] 第三步:上层传感器路由节点收到数据后,查找兴趣表,并将此数据与兴趣表中相应兴趣的范围进行比较,若此数据不在所记录的兴趣范围内,则修改兴趣表中该兴趣的范围,然后依次上传路由,直到传送到管理节点。
[0080] 如图3所示的兴趣命令的下行广播和上行数据的MAC地址路由的实例示意图。图中实线箭头表示兴趣命令广播的下行传递方向,虚线箭头表示兴趣的上行传递方向,图上数字为每个传感器节点的MAC地址。传感器节点A、B、C、D都接收到汇聚节点S广播的兴趣命令,传感器节点C因其兴趣表中记录的兴趣范围符合查询条件,则将自己的MAC地址“2”替换兴趣命令中原有的MAC地址,接着向传感器节点E、F广播,而传感器节点A、B、D停止广播;传感器节点E因其兴趣表中记录的兴趣范围也符合查询条件,则将自己的MAC地址“4”替换兴趣命令中原有的MAC地址“2”,接着向传感器节点G、H广播,而传感器节点F停止广播;传感器节点G接收到广播消息,保存传感器节点E的MAC地址,然后上传监测数据。下方的表1描述了监测数据上行传递过程中的地址映射关系。传感器节点G根据所存储的地址,唤醒上一级MAC地址为“4”的路由传感器节点E,将数据上传;传感器节点E接收上传数据,唤醒MAC地址为“2”的传感器节点C;传感器节点C接收上传数据,并将该数据发送给汇聚节点S,完成数据查询过程。
[0081] 表1
[0082]
[0083] 以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。