一种无线传感器网络模拟器及其节点事件处理方法转让专利

申请号 : CN200710120587.X

文献号 : CN101374083B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄长城陈海明崔莉

申请人 : 中国科学院计算技术研究所

摘要 :

本发明涉及一种无线传感器网络模拟器及其节点事件处理方法,所述无线传感器网络模拟器,包括节点模块,所述节点模块包括链表模块,用于在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,在数据结构中查找节点,修改和更新节点的状态,并对其相邻节点的操作。所述无线传感器网络模拟器节点事件处理方法,包括下列步骤:在模拟器的初始化阶段,创建所有节点实例,根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以多个节点的关键字按序插入到多个链表中;在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,在链表中查找节点,修改和更新节点的状态,并对其相邻节点的操作。

权利要求 :

1.一种无线传感器网络模拟器,包括节点模块,其特征在于,所述节点模块,包括:初始化模块,用于在模拟器的初始化阶段,先创建所有节点实例,然后根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以多个节点的关键字按序插入到链表模块的多个链表中;

链表模块,用于在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,在链表中查找节点,修改和更新节点的状态,并对其相邻节点操作;

所述链表模块,包括查找子模块,用于根据链表数据结构,采用以节点标号为关键字的快速查找方法在数据结构中查找节点,然后通过该节点所包含的指针,并直接获得与该节点相连或相邻的节点。

2.根据权利要求1所述的无线传感器网络模拟器,其特征在于,所述链表数据结构为多维有序链表、有序堆结构链表、有序二叉树链表、B+树链表、HASH表链表中的一种或者一种以上的组合。

3.根据权利要求2所述的无线传感器网络模拟器,其特征在于,所述节点的关键字是指以节点的标号、X轴坐标和Y轴坐标为关键字。

4.根据权利要求1至3任一项所述的无线传感器网络模拟器,其特征在于,所述快速查找方法依照所述链表数据结构,分别采用两分查找算法、二叉排序树法、B+树法、HASH算法。

5.根据权利要求3所述的无线传感器网络模拟器,其特征在于,所述链表数据结构包括三组指针,其中,第一组指针为序号指针,用于指向该节点在以节点标号为序排列形成的链表中的前驱节点和后继节点;第二组指针为第一坐标指针,用于指向该节点在以节点的X轴坐标为序排列形成的链表中的前驱节点和后继节点;第三组指针为第二坐标指针,用于指向该节点在以节点的Y轴坐标为序排列形成的链表中的前驱节点和后继节点。

6.一种无线传感器网络模拟器节点事件处理方法,其特征在于,包括下列步骤:步骤A,在模拟器的初始化阶段,先创建所有节点实例,然后根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以多个节点的 关键字按序插入到多个链表中;

步骤B,在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,采用以节点标号为关键字的快速查找方法在数据结构中查找节点,然后通过该节点所包含的指针,并直接获得与该节点相连或相邻的节点,修改和更新节点的状态,并对其相邻节点操作。

7.根据权利要求6所述的无线传感器网络模拟器节点事件处理方法,其特征在于,所述步骤B包括下列步骤:步骤B 1,以节点标号为关键字,查找到一目标节点;

步骤B2,查找到位于该目标节点两边的以节点的X轴坐标为序排列的前驱节点或后继节点,若该节点的X轴坐标与目标节点的X轴坐标之差的绝对值小于或等于一预定距离,则转入步骤B3;否则,转入步骤B5;

步骤B3,计算所述目标节点与该目标节点的前驱节点或后继节点之间的欧氏距离;

如果计算结果小于或等于所述预定距离,则转入步骤B4;

否则,转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点;

步骤B4,标记该目标节点的前驱节点或后继节点为处于相应的范围内,并转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点;

步骤B5,结束所有步骤。

8.根据权利要求7所述的无线传感器网络模拟器节点事件处理方法,其特征在于,所述步骤B2还包括下列步骤:步骤B21,当该节点的X轴坐标与目标节点的X轴坐标之差的绝对值小于或等于所述预定距离时,如果所述目标节点的Y轴坐标与该目标节点的前驱节点或后继节点的Y轴坐标之差的绝对值小于或等于所述预定距离,则转入步骤B3; 否则,转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;

若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点。

9.根据权利要求6所述的无线传感器网络模拟器节点事件处理方法,其特征在于,所述步骤B包括下列步骤:步骤B1’,以节点标号为关键字,查找到一目标节点;

步骤B2’,查找到位于该目标节点两边的以节点的Y轴坐标为序排列的前驱节点或后继节点,若该节点的Y轴坐标与目标节点的Y轴坐标之差的绝对值小于或等于一预定距离,则转入步骤B3’;否则,转入步骤B5’;

步骤B3’,计算所述目标节点与该目标节点的前驱节点或后继节点之间的欧氏距离;

如果计算结果小于或等于所述预定距离,则转入步骤B4’;

否则,转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;若在步骤B2’中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2’中查找的为目标节点的后继节点,则继续查找该节点的后继节点;

步骤B4’,标记该目标节点的前驱节点或后继节点为处于相应的范围内,并转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;若在步骤B2’中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2’中查找的为目标节点的后继节点,则继续查找该节点的后继节点;

步骤B5’,结束所有步骤。

10.根据权利要求9所述的无线传感器网络模拟器节点事件处理方法,其特征在于,所述步骤B2’还包括下列步骤:步骤B21’,当该节点的Y轴坐标与目标节点的Y轴坐标之差的绝对值小于或等于所述预定距离时,如果所述目标节点的X轴坐标与该目标节点的前驱节点或后继节点的X轴坐标之差的绝对值小于或等于所述预定距离,则转入步骤B3’; 否则,转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;

若在步骤B2’中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2’中查找的为目标节点的后继节点,则继续查找该节点的后继节点。

说明书 :

一种无线传感器网络模拟器及其节点事件处理方法

技术领域

[0001] 本发明涉及无线传感器网络模拟器技术领域,特别是一种无线传感器网络模拟器及其节点事件处理方法。

背景技术

[0002] 网络模拟是测试和评价网络协议性能的重要手段,现有的网络模拟器(或称网络仿真平台)大都是为有线网络或传统的无线网络而建立的。 一般地,对于有线网络,由于它有足够的带宽容量和可靠的通信链路,研究人员在测试分析和评价有线网络的性能时,一般不考虑网络规模对通信质量的影响,而只要考虑网络流量对网络性能的影响,所以一般只需以少数节点组成的典型网络为目标进行测试分析和评价有线网络的性能。
[0003] 对于传统的无线网络,不管是采用带基站的结构,还是无基站的自组织结构,一般网络中的节点数量都十分有限,所以在评价和测试这类网络的性能时,需要考虑的网络规模也不是很大。 因此,无论是有线网络还是传统的无线网络,目前都可以用现有的网络模拟器来进行有效的测试和评价。
[0004] 但是,由于现有的网络模拟器大都是基于离散事件驱动和串行处理的架构而建立的,随着网络规模的不断扩大,模拟实验的运行时间会越来越长,同时,随着网络中节点数量的增加,模拟器中的事件数量也会快速增加,从而造成运算数量和运行时间的快速增加。
[0005] 无线传感器网络是当前国际上备受关注的、由多学科高度交叉的新兴前沿研究热点领域。 无线传感器网络综合了传感器技术、嵌入式计算技术、现代网络及无线通信技术、分布式信息处理技术等,其能够通过各类集成化的微型传感器协作地实时监测、感知和采集各种环境或监测对象的信息,通过嵌入式系统对信息进行处理,并通过随机自组织无线通信网络以多跳中继方式将所感知的信息传送到用户终端,从而真正实现“无处不在的计算”理念。 无线传感器网络的研究采用系统发展模式,因而必须将现代的先进微电子技术、微细加工技术、系统SOC(system-on-chip)芯片设计技术、纳米材料与技术、现代信息通讯技术、计算机网络技术等融合,以实现其微型化、集成化、多功能化及系统化、网络化,特别是实现传感器网络特有的超低功耗系统设计。 无线传感器网络具有十分广阔的应用前景,在军事国防、工农业、城市管理、生物医疗、环境监测、抢险救灾、防恐反恐、危险区域远程控制等许多领域都有重要的科研价值和巨大实用价值,已经引起了世界许多国家军界、学术界和工业界的高度重视,并成为进入2000年以来公认的新兴前沿热点研究领域,被认为是将对二十一世纪产生巨大影响力的技术之一。
[0006] 无线传感器网络技术,是一种由大量节点组成的、同时具有感知和通信功能的、采用自组织方式进行通信的新一代无线网络技术。 其由部署在监测区域内的大量的廉价微型传感器节点组成,通过无线通信方式形成一个多跳的自组织的网络系统,其目的是感知、采集和处理网络覆盖的地理区域中感知对象的信息,并发布给观察者。 无线传感器网络节点具有数据采集和处理、无线通信、协同合作等功能,可以随机或者特定地布置在目标环境中,能够获取被监测区域中的信息并相互协同完成特定的任务。 传感器节点由电源、感知部件、嵌入式处理器、存储器、通信部件和软件等几部分构成。
[0007] 现有的无线传感器网络的发展日新月异,各种网络方案和协议日趋复杂,网络规模日趋庞大,对于无线传感器网络的研究人员而言,掌握无线传感器网络的仿真模拟的重要性是不言而喻的。
[0008] 无线传感器网络模拟器,也称无线传感器网络仿真平台,或者WSN仿真平台,是指能够在一个可控制的环境里研究无线传感器网络的应用,包括操作系统和网络协议栈,能够模拟仿真数量众多的节点,能够观察由不可预测的干扰和噪声引起的难以琢磨的节点间的相互作用,获取节点间详细的细节,从而提高节点投放后的网络成功率,减少投放后的网络维护工作的一种模拟仿真平台。 现有技术中的无线传感器网络使用的模拟器系统主要有NS-2、TOSSIM、OPNET、OMNET++等等。
[0009] 不同于传统的无线网络(一般以局域网的形式存在,规模通常比较小),无线传感器网络一般是以大规模的末端网络的形式存在,其规模往往较大,但是,现有的模拟器都不能很好地采取有效的方法,在增加无线传感器网络中的模拟节点数量的同时,又能使其中的事件数量不至于增加的太多,这样会造成传感器网络模拟器中的查找运算数量过大,从而使得传感器网络模拟器的运算负担过大,进而造成传感器网络模拟器的运算速度降低,规模无法扩大。

发明内容

[0010] 本发明的目的在于,提出一种无线传感器网络模拟器及其节点事件处理方法。其每个节点在事件处理程序中,不但可以修改自身的状态,还可以更新与本事件相关的所有其它节点的状态,从而减少了模拟器中的事件数量,提高了基于离散事件驱动架构建立的传感器网络模拟器的规模和执行速度。
[0011] 为了实现所述目的,本发明提出了一种无线传感器网络模拟器,包括节点模块,所述节点模块包括链表模块,用于在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,在链表中查找节点,修改和更新节点的状态,并对其相邻节点操作。
[0012] 较佳的,所述链表数据结构为多维有序链表、有序堆结构链表、有序二叉树链表、B+树链表、HASH表链表中的一种或者一种以上的组合。
[0013] 较佳的,所述节点模块,还包括初始化模块,用于在模拟器的初始化阶段,先创建所有节点实例,然后根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以多个节点的关键字按序插入到链表模块的多个链表中。
[0014] 较佳的,所述节点的关键字是指以节点的标号、X轴坐标和Y轴坐标为关键字。
[0015] 较佳的,所述链表模块包括查找子模块,用于根据链表数据结构,采用以节点标号为关键字的快速查找方法在数据结构中查找节点,然后通过该节点所包含的指针,并直接获得与该节点相连或相邻的节点。
[0016] 较佳的,所述快速查找方法依照所述链表数据结构,分别采用两分查找算法、二叉排序树法、B+树法、HASH算法。
[0017] 较佳的,所述链表数据结构包括三组指针,其中,第一组指针为序号指针,用于指向该节点在以节点标号为序排列形成的链表中的前驱节点和后继节点;第二组指针为第一坐标指针,用于指向该节点在以节点的X轴坐标为序排列形成的链表中的前驱节点和后继节点;第三组指针为第二坐标指针,用于指向该节点在以节点的Y轴坐标为序排列形成的链表中的前驱节点和后继节点。
[0018] 为了实现所述目的,本发明还提出了一种无线传感器网络模拟器节点事件处理方法,包括下列步骤:
[0019] 步骤A,在模拟器的初始化阶段,先创建所有节点实例,然后根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以多个节点的关键字按序插入到多个链表中;
[0020] 步骤B,在模拟器运行时,在节点的事件处理程序中,根据链表数据结构,在链表中查找节点,修改和更新节点的状态,并对其相邻节点操作。
[0021] 较佳的,所述步骤B可以包括下列步骤:
[0022] 步骤B1,以节点标号为关键字,查找到一目标节点;
[0023] 步骤B2,查找到位于该目标节点两边的以节点的X轴坐标为序排列的前驱节点或后继节点,若该节点的X轴坐标与目标节点的X轴坐标之差的绝对值小于或等于一预定距离,则转入步骤B3;否则,转入步骤B5;
[0024] 步骤B3,计算所述目标节点与该目标节点的前驱节点或后继节点之间的欧氏距离;
[0025] 如果计算结果小于或等于所述预定距离,则转入步骤B4;
[0026] 否则,转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;
[0027] 步骤B4,标记该目标节点的前驱节点或后继节点为处于相应的范围内,并转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;
[0028] 步骤B5,结束所有步骤。
[0029] 较佳的,在所述步骤B3中,若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点。
[0030] 较佳的,在所述步骤B4中,若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点。
[0031] 较佳的,所述步骤B2还包括下列步骤:
[0032] 步骤B21,当该节点的X轴坐标与目标节点的X轴坐标之差的绝对值小于或等于所述预定距离时,如果所述目标节点的Y轴坐标与该目标节点的前驱节点或后继节点的Y轴坐标之差的绝对值小于或等于所述预定距离,则转入步骤B3;
[0033] 否则,转入步骤B2,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点。
[0034] 较佳的,在所述步骤B21中,若在步骤B2中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2中查找的为目标节点的后继节点,则继续查找该节点的后继节点。
[0035] 较佳的,所述步骤B可以包括下列步骤:
[0036] 步骤B1’,以节点标号为关键字,查找到一目标节点;
[0037] 步骤B2’,查找到位于该目标节点两边的以节点的Y轴坐标为序排列的前驱节点或后继节点,若该节点的Y轴坐标与目标节点的Y轴坐标之差的绝对值小于或等于一预定距离,则转入步骤B3’;否则,转入步骤B5’;
[0038] 步骤B3’,计算所述目标节点与该目标节点的前驱节点或后继节点之间的欧氏距离;
[0039] 如果计算结果小于或等于所述预定距离,则转入步骤B4’;
[0040] 否则,转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;
[0041] 步骤B4’,标记该目标节点的前驱节点或后继节点为处于相应的范围内,并转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点;
[0042] 步骤B5’,结束所有步骤。
[0043] 较佳的,所述步骤B2’还包括下列步骤:
[0044] 步骤B21’,当该节点的Y轴坐标与目标节点的Y轴坐标之差的绝对值小于或等于所述预定距离时,如果所述目标节点的X轴坐标与该目标节点的前驱节点或后继节点的X轴坐标之差的绝对值小于或等于所述预定距离,则转入步骤B3’;
[0045] 否则,转入步骤B2’,继续查找该目标节点的前驱节点或后继节点的前驱节点或后续节点。
[0046] 较佳的,在所述步骤B21’中,若在步骤B2’中查找的为目标节点的前驱节点,则继续查找该节点的前驱节点;若在步骤B2’中查找的为目标节点的后继节点,则继续查找该节点的后继节点。
[0047] 本发明提出的无线传感器网络模拟器及其节点事件处理方法具有以下有益效果:(1)不需要改变模拟器的架构,即在现有的基于离散事件驱动的模拟器中,只要对节点的结构和初始化过程稍加扩充,就可以实现本发明提出的方法,因此具有普遍的适用性;(2)根据节点密度的不同,可以将模拟器中的事件数减少一半左右,因此可以将模拟的运行速度提高一倍左右;(3)减少模拟器中的事件数,不仅可以提高运行速度,还可以降低内存资源的消耗,从而可以支持更大规模网络的模拟实验。
[0048] 以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

附图说明

[0049] 图1所示为本发明实施例中的无线传感器模拟器的结构图;
[0050] 图2所示为本发明中第一实施例的流程图;
[0051] 图3所示为本发明中节点的结构定义;
[0052] 图4所示为本发明中多维有序链表的示意图;
[0053] 图5所示为本发明中第二实施例的流程图。

具体实施方式

[0054] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种无线传感器网络模拟器及其节点事件处理方法进行进一步详细说明。 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0055] 本发明实施例中的无线传感器网络模拟器及其节点事件处理方法,是以面向对象的,基于离散事件驱动的网络环境模拟器NS-2为例而进行说明的,但本发明的中的模拟器并不限于适用于NS-2模拟器,其可以适用于基于离散事件驱动的无线传感器网络模拟器,包括TOSSIM、OPNET、OMNET++等等无线传感器网络模拟器。
[0056] NS-2是美国DARPA支持的项目VINT(the Virtual InterNet Tested)中的基础和核心部分。由USI/ISI,Xerox PARC,LBNL和UC Berkeley这些美国大学和实验室合作研究开发,其目的在于建立一个网络仿真平台,为网络研究人员提供一系列的仿真工具,从而实现新的网络协议的设计和实现。
[0057] NS-2是面向对象的,基于离散事件驱动的网络环境模拟器。 它实现了多种网络协议的模拟,如网络协议TCP、UDP,流量源行为,如FTP、Telnet、Web、CBR、VBR;实现了DropTail、RED、CBQ等几种路由器队列管理机制以及Dijkstra,动态路由、静态路由、组播路由等路由算法。 此外,NS-2还支持组播协议SRM及部分MAC层协议。
[0058] 在NS-2模拟过程中,整个模拟过程提供了一系列对模拟进行配置的接口,其中包括选择事件调度器(event scheduler)。
[0059] 事件调度器是模拟器的调度中心,用于处理分组(packet)的延迟和充当定时器,从所有事件中选择发生时刻最早的事件执行,把该事件执行完毕,然后从剩余的所有事件中选择发生时刻最早的事件执行,如此反复执行。
[0060] 进行模拟通常要首先创建一个Simulator类的实例对象,并调用该对象的一系列方法来创建节点(Node)、拓扑(Topology)等模拟所必需的对象,形成模拟器。
[0061] 如图1所示,为本发明实施例中的无线传感器模拟器的结构图。 无线传感器模拟器10,包括节点(Node)模块11,链路(Link)模块12、分组(Packet)模块13、代理(Agent)模块14、流量发生器(traffic generator)15和应用模拟器(simulated application)16。
[0062] 节点模块11用于表示无线传感器的端节点和路由器,包括地址分类器111、端口分类器112、多播分类器113和复制器114等模拟组件。
[0063] 链路模块12用于连接网络节点,所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。 包括DelayLink121、Queues122和TTLChcker123等连接器(Connector)。 其中,DelayLink构造链路带宽和延迟特征;Queues构造和模拟与该链路相连的路由器的输出缓冲;TTLChcker对该链路的数据包的TTL字段减1操作,并丢弃TTL值为0的数据包。
[0064] 分组模块13是对象间交互的基本单元。由一系列分组头131和一个可选的数据空间132组成。 分组头的结构在Simulator对象创建时就被初始化了,同时,每个分组头131相对于分组的起始地址的偏移量也被记录下来,提供给用户来存取各个头部所包含的信息。
[0065] 代理模块14用于代表了网络层分组的起点和终点,并被用于实现如TCP和UDP等网络协议。
[0066] 流量发生器15、应用模拟器16是构建在运输层代理之上,其中,流量发生器15用于模拟应用程序产生网络通信量,包括以下四类:(1)EXPOO_Traffic、(2)POO_Traffic、(3)CBR_Traffic、(4)TafficTrace,它们一般用在UDP代理之上;应用模拟器16有FTP,Telnet,一般用在TCP代理之上。
[0067] 本发明的核心思想是将模拟器中的所有节点组织成一个集中式的列表,通过该列表可以获取任何一个节点的信息。 该列表的结构决定了操作节点的方式,利用这种集中式的列表可以大幅度提高传感器网络模拟器的执行规模和速度。 为此,本发明的实施例中运用了一种多维有序链表,或者有序堆结构,或者有序二叉树,或者B+树,或者HASH表树等结构的节点组织结构,该结构以标号(ID)、X轴坐标和Y轴坐标为关键字将节点组织成三个有序链表。
[0068] 本发明实施例中的无线传感器模拟器10,所述节点模块11中,还包括链表模块115,用于在模拟器运行时,在节点的事件处理程序中,通过链表数据结构,在链表中查找节点,修改和更新节点的状态,并对其相邻节点进行操作。
[0069] 本发明实施例中的无线传感器模拟器10,采用以节点标号为关键字的快速查找算法在有序链表中查找到该节点,然后通过该节点所包含的指针,直接获得与该节点相连或相邻的节点,并对这些节点进行操作,而不需要产生新的事件和再次检索有序链表,从而减少了模拟器中的事件数量,提高了模拟器的规模和运行速度。
[0070] 所述快速查找算法根据组织节点的数据结构的不同,可以采用不同的快速查找算法,如两分查找算法(两分法)、二叉排序树法、B+树法、HASH等算法。
[0071] 本发明实施例的链表模块115,在设置节点的数据结构中,除了包含表示节点状态和相关信息(如节点位置、物理层协议、数据链路层协议、网络层协议、传输层协议和应用层协议)的字段外,还包括三组指针,其中,第一组指针为序号指针,用于指向该节点在以节点标号(ID)为序排列形成的链表中的前驱节点和后继节点;第二组指针为第一坐标指针,用于指向该节点在以节点的X轴坐标为序排列形成的链表中的前驱节点和后继节点;第三组指针为第二坐标指针,用于指向该节点在以节点的Y轴坐标为序排列形成的链表中的前驱节点和后继节点。 通过节点的X轴坐标和Y轴坐标,可以确定节点在二维平面中的具体位置,因此,通过不同节点的X轴坐标和Y轴坐标,可以确定节点间的距离,将此距离同无线广播的距离进行比较,即可确定一节点是不是目标节点的相邻节点。 其中,无线信道的广播距离,即无线广播的距离,一般设置在无线信道模块中。
[0072] 所述节点模块11,还包括初始化模块116,用于在模拟器的初始化阶段,先创建所有节点实例,而后根据实验场景的配置,依次设置各节点的标号和位置信息,最后将节点分别以节点的标号、X轴坐标和Y轴坐标为关键字按序插入到链表模块的三个链表中。
[0073] 较佳地,所述链表模块115包括查找子模块1151,用于根据链表数据结构,采用以节点标号为关键字的快速查找算法在链表中查找节点,然后通过该节点所包含的指针,直接获得与该节点相连或相邻的节点。
[0074] 本发明的无线传感器模拟器10中,初始化模块116在模拟器的初始化阶段,先创建所有节点实例,然后根据实验场景的配置,依次设置各节点的标号(ID)和位置(坐标)等信息,最后将节点分别以节点的标号(ID)、X轴坐标和Y轴坐标为关键字按序插入到链表模块的三个链表中。 这样,初始化完成后的节点被组织成一个多维的有序链表,该多维有序链表将模拟器中的所有节点分别以标号(ID)、X轴坐标和Y轴坐标为序进行了排列。
[0075] 当模拟器运行时,在节点的事件的处理程序中,链表模块115中的查找子模块1151通过链表不仅可以修改和更新本节点的状态,还可以实现对其相邻节点的操作。 首先,采用以节点标号为关键字的快速查找算法在链表中查找到该节点,然后,通过该节点所包含的指针,直接获得与该节点其相连或相邻节点,链表模块115对这些节点进行操作,而不需要产生新的事件和再次检索有序链表,从而减少了模拟器中的事件数量,提高了模拟器的规模和运行速度。
[0076] 下面以一实施例详细说明本发明的无线传感器网络模拟器节点事件处理方法,在该实施例中,所进行的操作为更新所有距节点i的传播距离在L以内的节点的状态,如图2所示,本发明实施例的无线传感器网络模拟器节点事件处理方法,包括以下步骤:
[0077] 步骤S110,对一传感器网络模拟器进行初始化。 在模拟器的初始化阶段,首先,创建所有节点实例,而后,根据实验场景的配置,依次设置各节点的标号和位置信息,最后,将节点分别以节点的标号、X轴坐标和Y轴坐标为关键字按序插入到链表模块的三个链表中。
[0078] 在初始化的过程中,依次创建各个节点,并根据实验场景的配置,在设置完节点的标号(ID)和位置(坐标)等信息后,将节点分别按照标号(ID)、X轴坐标和Y轴坐标的顺序插入到三个链表中。 其中,从节点的组织结构来看,每个节点包含三组指针。
[0079] 如图3所示,此为本发明中节点的结构定义,其中,第一组指针为序号指针,用于指向该节点在以节点标号(ID)为序排列形成的链表中的前驱节点和后继节点,表示为preNodeByID和nextNodeByID;
[0080] 第二组指针为第一坐标指针,用于指向该节点在以节点的X轴坐标为序排列形成的链表中的前驱节点和后继节点,表示为preNodeByX和nextNodeByX;
[0081] 第三组指针为第二坐标指针,用于指向该节点在以节点的Y轴坐标为序排列形成的链表中的前驱节点和后继节点,表示为preNodeByY和nextNodeByY。
[0082] 这三组指针分别表示了该节点在各个有序链表中的位置。
[0083] 当各个节点实例被依次创建,初始化完成之后,就形成了如图4中所示那样的多维有序链表的结构。
[0084] 作为一种可实施的方式,图4所示的节点结构比较特殊,N个节点正好按节点的标号顺序依次排列,所以每个节点中的三组指针具有相同的值。 在一般的情况下,这三组指针不具有这样的规则性。
[0085] 步骤S120,在模拟器运行时,在节点的事件处理程序中,根据多维有序链表,在有序链表中查找节点,修改和更新节点的状态,并对其相邻节点的操作。
[0086] 步骤S120具体包括下列步骤:
[0087] 步骤S121,在模拟器运行时,在节点的事件处理程序中,根据多维有序链表,以节点标号(ID)为关键字,采用快速查找算法在多维有序链表中查找到目标节点i;
[0088] 步骤S122,沿着节点i中包含的preNodeByX指针和nextNodeByX指针,查找到位于节点i两边的节点i的以节点的X轴坐标为序排列形成的链表中的前驱节点或后继节点j;
[0089] 步骤S123,如果节点i的X轴坐标与该节点i的前驱节点或后继节点j的X轴坐标之差的绝对值小于或等于节点i的传播距离L,则转入步骤S124;否则,转入步骤S127;
[0090] 步骤S124,如果节点i的Y轴坐标与该节i的前驱节点或后继节点j的Y轴坐标之差的绝对值小于或等于节点i的传播距离L,则转入步骤S125;否则,转入步骤S122,即继续沿着preNodeByX指针和nextNodeByX指针查找节点j的前驱节点或后续节点,其中,若节点j为节点i的前驱节点,则继续查找节点j的前驱节点,若节点j为节点i的后继节点,则继续查找节点j的后继节点;
[0091] 步骤S125,计算节点i与该节i的前驱节点或后继节点j之间的欧氏距离;如果计算结果小于或等于节点i的传播距离L,则转入步骤S126;否则,转入步骤S122,即继续沿着preNodeByX指针和nextNodeByX指针查找节点j的前驱节点或后续节点,其中,若节点j为节点i的前驱节点,则继续查找节点j的前驱节点,若节点j为节点i的后继节点,则继续查找节点j的后继节点;
[0092] 其中,欧氏距离为(∑(Xi-Yi)2)1/2,即两项间的差是每个变量值差的平方和再平方根,目的是计算其间的整体距离即不相似性。
[0093] 步骤S126,更新该节i的前驱节点或后继节点j的状态,并转入步骤S122,即继续沿着preNodeByX指针和nextNodeByX指针查找节点j的前驱节点或后续节点,其中,若节点j为节点i的前驱节点,则继续查找节点j的前驱节点,若节点j为节点i的后继节点,则继续查找节点j的后继节点。
[0094] 步骤S127,结束更新所有距节点i的传播距离在L以内的节点的状态的事件处理过程。
[0095] 作为另一种可实施的方式,在本发明实施例中,步骤S 122也可以为:沿着节点i中包含的preNodeByY指针和nextNodeByY指针,查找到位于节点i两边的节点i的以节点的Y轴坐标为序排列形成的链表中的前驱节点或后继节点j。
[0096] 此时,步骤S123和步骤S124也需要进行相应的修改。
[0097] 即,在步骤S123中,先计算节点i的Y轴坐标与该节i的前驱节点或后继节点j的Y轴坐标之差的绝对值,若该绝对值小于或等于节点i的传播距离L,则转入步骤S124,否则,转入步骤S127。
[0098] 在步骤S124中,计算节点i的X轴坐标与该节i的前驱节点或后继节点j的X轴坐标之差的绝对值,若该绝对值小于或等于节点i的传播距离L,则转入步骤S125,否则,转入步骤S122。
[0099] 从所述步骤中可以看出,在模拟器的运行阶段,通过已经建立的多维有序链表,不仅可以修改本节点的状态,还可以实现对其相邻节点的操作。 就本实施例而言,不用计算节点i到所有其它节点间的距离,就可以快速查找到位于节点i的传播范围L内的所有节点,并更新这些节点的状态,避免了产生新的事件,从而提高了模拟器的规模和执行速度。
[0100] 作为本发明无线传感器网络模拟器节点事件处理方法的又一种实施方式,如图5所示,所进行的操作与本发明的第一实施例相同,即更新所有距节点i的传播距离在L以内的节点的状态,只是在执行步骤中存在差别,即在模拟器运行时,在节点的事件处理程序中,根据多维有序链表,在有序链表中查找节点,修改和更新节点的状态,并对其相邻节点的操作的过程中,具体包括下列步骤:
[0101] 步骤S221,以节点标号(ID)为关键字,采用快速查找算法在多维有序链表中查找到目标节点i;
[0102] 步骤S222,沿着节点i中包含的preNodeByX指针和nextNodeByX指针,查找到位于节点i两边的节点i的“以节点的X轴坐标为序排列形成的链表”中的前驱节点或后继节点j;
[0103] 步骤S223,如果节点i的X轴坐标与该节点i的前驱节点或后继节点j的X轴坐标之差的绝对值小于或等于节点i的传播距离L,则转入步骤S224;否则,转入步骤S226;
[0104] 步骤S224,计算节点i与该节i的前驱节点或后继节点j之间的欧氏距离,如果计算结果小于或等于节点i的传播距离L,则转入步骤S225;否则,转入步骤S222,即继续沿着preNodeByX指针和nextNodeByX指针查找节点j的前驱节点或后续节点,其中,若节点j为节点i的前驱节点,则继续查找节点j的前驱节点,若节点j为节点i的后继节点,则继续查找节点j的后继节点;
[0105] 步骤S225,更新该节i的前驱节点或后继节点j的状态,并转入步骤S222,即继续沿着preNodeByX指针和nextNodeByX指针查找节点j的前驱节点或后续节点,其中,若节点j为节点i的前驱节点,则继续查找节点j的前驱节点,若节点j为节点i的后继节点,则继续查找节点j的后继节点。
[0106] 步骤S226,结束更新所有距节点i的传播距离在L以内的节点的状态的事件处理过程。
[0107] 作为本实施例的另一种可实施的方式,在本实施例中,步骤S222也可为:沿着节点i中包含的preNodeByY指针和nextNodeByY指针,查找到位于节点i两边的节点i的以节点的Y轴坐标为序排列形成的链表中的前驱节点或后继节点j。
[0108] 此时,步骤S223也需要进行相应的修改,即在步骤S223中,计算节点i的Y轴坐标与该节i的前驱节点或后继节点j的Y轴坐标之差的绝对值,若该绝对值小于或等于节点i的传播距离L,则转入步骤S224,否则,转入步骤S226。
[0109] 本发明的无线传感器网络模拟器及其节点事件处理方法,不需要改变模拟器的架构,在现有的基于离散事件驱动的模拟器中,只要对节点的结构和初始化过程稍加扩充,就可以实现本发明提出的方法,因此具有普遍的适用性;同时根据节点密度的不同,可以将模拟器中的事件数减少一半左右,因此可以将模拟的运行速度提高一倍左右;而且,其减少模拟器中的事件数,不仅可以提高运行速度,还可以降低内存资源的消耗,从而可以支持更大规模网络的模拟实验。
[0110] 以上对本发明的目的、技术方案以及有益效果进行了详细的说明,所应理解的是,上述内容仅为本发明的具体实施例而已,并不用于限制本发明的保护范围。 本发明保护范围应当以权利要求书所述为限定,凡在本发明的精神与原则之内,对本发明权利要求技术方案所做的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。