一种无线传感器网络中的时隙调度方法和装置与流程

文档序号:11868210阅读:394来源:国知局
一种无线传感器网络中的时隙调度方法和装置与流程
本发明涉及无线传感器网络,尤其涉及一种无线传感器网络中的时隙调度方法和装置。

背景技术:
无线传感器网络正开始被广泛应用于环境监测、智能家居、交通监管以及物体追踪等应用。通常而言,传感器节点使用电池供电,而受限于电池科技的缓慢发展,无线传感器网络中的协议(包括传输、路由、介质访问控制等)都必须具有低功耗的特点。由于通信消耗在所有电量消耗中占据很大比重,因此节点会选择在通信的间隙关闭电波,以达到节约能源的目的。我们把电波开启的时间与总时间的比率称之为占空比(dutycycle)。这样的妥协办法带来的潜在问题是,节点可能无法探测到周围某些节点的存在(称之为邻居发现),或者发送的信息不能被目标节点接收。因此,邻居发现协议的设计即是为了达到占空比和保障邻居发现之间的平衡:占空比越高,能耗越大,但邻居发现的可能性越大;反之占空比越低,能耗越小,但邻居发现的可能性越小。现有的无线传感器网络中的邻居发现协议依据其保障发现的原理,可大体分为三类。第一类为时间同步法:同步所有节点的时钟,所有节点都在同一段时间开启或关闭电波。这一方法若能有效实现,将极其高效简单,然而时间同步问题本身即是在无线传感器网络中很有挑战性的课题。尤其考虑到各个节点间存在的时钟偏移(clockdrift),精确的时间同步将极其困难而不切实际。对应于时间同步法,后两类方法都是异步法,即不需要时钟同步。其中第二类称为随机方法,节点依据一定的概率分布选择进入侦听、传输和睡眠(即关闭电波)状态。依据生日悖论的原理,可以证明即使节点的占空比很低(例如1%),其依然有很大的概率(大于95%)发现邻居节点。此类方法的局限在于邻居发现的最差情况下的延迟非常大,也就是无法保证邻居发现过程在一定时间内能够全部完成。第三类方法称为离散时隙法。节点通过将循环周期分割成离散的、固定时长的时隙,并选择在某些时隙中开启(对应为活动时隙)或关闭电波(对应为睡眠时隙)来保证邻居发现。当节点的活动时隙相互重叠时则认为节点可相互发现。调度时隙的方法可以是选择略微超过一半数目的时隙作为活动时隙,可以是利用离散时隙的组合特性,也可以是利用中国剩余定理的原理进行调度。这些方法都可以使得在一定时间内,无论任意的时隙偏移量都能保证活动时隙的重叠。该方法的不足在于占空比较大以致能耗较高。综上所述,现有无线传感器网络中的调度方法无法同时实现异步、确定性和低功耗的有机结合,只能实现异步、确定性和低功耗中的部分优点。

技术实现要素:
本发明提供了一种使用尽可能少的活动时隙同时实现异步、确定性和低功耗时的无线传感器网络中的时隙调度方法和装置。为实现上述设计,本发明采用以下技术方案:一种无线传感器网络中的时隙调度方法,包括:a、记录无线传感器网络中一个周期的时隙的个数,所述时隙包括活动时隙和睡眠时隙,初始化活动时隙集合为空集;b、计算每个睡眠时隙的效用值;c、将效用值最大的睡眠时隙加入活动时隙集合;d、判断时隙每次偏移整数个时隙长时是否至少有一个活动时隙完全重叠;是则将活动时隙集合中的时隙作为无线传感器网络中的活动时隙,完成时隙调度;否则执行步骤b。其中,所述步骤a具体为:a1、记录当前无线传感器网络中的时隙的个数为n,根据时隙先后顺序标识每个时隙,所述n个时隙包括活动时隙和睡眠时隙;a2、初始化用于标识每次偏移整数个时隙长时是否有一个活动时隙完全重叠的标记数组F[j],F[j]中的数均预设为0;其中j=0、1、2、…、n-1,F[j]=1表示偏移j个时隙至少有一个活动时隙完全重叠,F[j]=0表示偏移j个时隙所有活动时隙都不重叠;a3、初始化活动时隙集合S为空集;其中,所述步骤b具体为:b1、初始化每个睡眠时隙k的效用值u(k)为0;其中k为睡眠时隙在时隙中的标识;b2、计算每个睡眠时隙的效用值u(k),具体计算方法为:若S为空集,u(k)=1;若S不为空集,对S中的每一个活动时隙i,计算|k-i|及n-|k-i|;当|k-i|不等于n-|k-i|且F[|k-i|]和F[n-|k-i|]均等于0时,u(k)累加2,当|k-i|=n-|k-i|且F[|k-i|]和F[n-|k-i|]至少一个等于0时,u(k)累加1,判断睡眠时隙的效用值是否达到S中时隙数目值的两倍,是则将该时隙作为效用值最大的睡眠时隙,停止计算睡眠时隙的效用值,否则计算下一个睡眠时隙的效用值u(k);其中i为活动时隙在时隙中的标识。其中,所述步骤c具体为:c1、判断是否已存在效用值达到S中时隙数目值的两倍的效用值最大的睡眠时隙,是则执行步骤c3,否则执行步骤c2;c2、对睡眠时隙的效用值进行排序,选择效用值最大的睡眠时隙k*,有多个效用值最大的睡眠时隙时,从多个效用值最大的睡眠时隙中随机选择一个作为效用值最大的睡眠时隙k*;c3、将所述效用值最大的睡眠时隙k*加入S。其中,所述步骤d具体为:d1、当效用值最大的睡眠时隙k*加入前的S为空时,令F[0]=1,否则对效用值最大的睡眠时隙k*加入前的S中的每个元素i,令F[|k*-i|]和F[n-|k*-i|]为1;d2、判断F[j]是否全为1,是则执行步骤d3;否则执行步骤b1;d3、将效用值最大的睡眠时隙k*加入后的S中的时隙作为无线传感器网络中的活动时隙,完成时隙调度。一种无线传感器网络中的时隙调度装置,包括:预设单元,用于记录无线传感器网络中一个周期的时隙的个数,所述时隙包括活动时隙和睡眠时隙,初始化活动时隙集合为空集;效用值计算单元,用于计算每个睡眠时隙的效用值;活动时隙更新单元,用于将效用值最大的睡眠时隙加入活动时隙集合;调度结束判断单元,用于判断时隙每次偏移整数个时隙长时是否至少有一个活动时隙完全重叠;是则将活动时隙集合中的时隙作为无线传感器网络中的活动时隙,完成时隙调度;否则运行效用值计算单元。其中,所述预设单元具体包括:时隙预设模块,用于记录当前无线传感器网络中的时隙的个数为n,根据时隙先后顺序标识每个时隙,所述n个时隙包括活动时隙和睡眠时隙;标记数组预设模块,用于初始化用于标识每次偏移整数个时隙长时是否有一个活动时隙完全重叠的标记数组F[j],F[j]中的数均预设为0;其中j=0、1、2、…、n-1,F[j]=1表示偏移j个时隙至少有一个活动时隙完全重叠,F[j]=0表示偏移j个时隙所有活动时隙都不重叠;活动时隙集合预设模块,用于初始化活动时隙集合S为空集;其中,所述效用值计算单元具体包括:效用值初始化模块,用于初始化每个睡眠时隙k的效用值u(k)为0;其中k为睡眠时隙在时隙中的标识;效用值计算模块,用于计算每个睡眠时隙的效用值u(k),具体计算方法为:若S为空集,u(k)=1;若S不为空集,对S中的每一个活动时隙i,计算|k-i|及n-|k-i|;当|k-i|不等于n-|k-i|且F[|k-i|]和F[n-|k-i|]均等于0时,u(k)累加2,当|k-i|=n-|k-i|且F[|k-i|]和F[n-|k-i|]至少一个等于0时,u(k)累加1,判断睡眠时隙的效用值是否达到S中时隙数目值的两倍,是则将该时隙作为效用值最大的睡眠时隙,停止计算睡眠时隙的效用值,否则计算下一个睡眠时隙的效用值u(k);其中i为活动时隙在时隙中的标识。其中,所述活动时隙更新单元具体包括:判断模块,用于判断是否已存在效用值达到S中时隙数目值的两倍的效用值最大的睡眠时隙,是则运行更新模块,否则运行排序模块;排序模块,用于对睡眠时隙的效用值进行排序,选择效用值最大的睡眠时隙k*,有多个效用值最大的睡眠时隙时,从多个效用值最大的睡眠时隙中随机选择一个作为效用值最大的睡眠时隙k*;更新模块,用于将所述效用值最大的睡眠时隙k*加入S。其中,所述调度结束判断单元具体包括:标记数组更新模块,用于当效用值最大的睡眠时隙k*加入前的S为空时,令F[0]=1,否则对效用值最大的睡眠时隙k*加入前的S中的每个元素i,令F[|k*-i|]和F[n-|k*-i|]为1;标记数组判断模块,用于判断F[j]是否全为1,是则运行调度完成模块;否则运行效用值初始化模块;调度完成模块,用于将效用值最大的睡眠时隙k*加入后的S中的时隙作为无线传感器网络中的活动时隙,完成时隙调度。本发明的有益效果在于:基于贪心算法原理,通过定义每个睡眠时隙的效用,每次添加效用最大的时隙作为活动时隙。若已选的所有活动时隙满足对任意的时间偏移都存在活动时隙的重叠,该过程终止,此时已选的所有活动时隙即是该方法调度的活动时隙;否则重复计算效用的过程。本发明提供了在异步及给定时间(n个时隙)情况下,使用尽可能少的活动时隙来保证邻居发现的调度方法和装置,同时实现了异步、确定性和低功耗。附图说明图1是本发明一种无线传感器网络中的时隙调度方法的第一实施例流程图;图2a是本发明一种无线传感器网络中的时隙调度方法的第二实施例流程图;图2b是本发明一种无线传感器网络中的时隙调度方法的时间偏移示意图;图2c是本发明一种无线传感器网络中的时隙调度方法的活动时隙重合示意图;图2d是本发明一种无线传感器网络中的时隙调度方法的睡眠时隙的效用值示意图;图2e是本发明一种无线传感器网络中的时隙调度方法的调度结果和基于DISCO算法的调度方法的调度结果对比示意图;图3a是本发明一种无线传感器网络中的时隙调度装置的结构框架图;图3b是本发明一种无线传感器网络中的时隙调度装置的预设单元的结构框架图;图3c是本发明一种无线传感器网络中的时隙调度装置的效用值计算单元的结构框架图;图3d是本发明一种无线传感器网络中的时隙调度装置的活动时隙更新单元的结构框架图;图3e是本发明一种无线传感器网络中的时隙调度装置的调度结束判断单元的结构框架图。具体实施方式下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。图1是本发明一种无线传感器网络中的时隙调度方法的第一实施例流程图,如图所示,该方法包括:步骤a、记录无线传感器网络中一个周期的时隙的个数,所述时隙包括活动时隙和睡眠时隙,初始化活动时隙集合为空集;步骤b、计算每个睡眠时隙的效用值;步骤c、将效用值最大的睡眠时隙加入活动时隙集合;步骤d、判断时隙每次偏移整数个时隙长时是否至少有一个活动时隙完全重叠;是则将活动时隙集合中的时隙作为无线传感器网络中的活动时隙,完成时隙调度;否则执行步骤b。基于贪心算法原理,通过定义每个睡眠时隙的效用,每次添加效用最大的时隙作为活动时隙。若已选的所有活动时隙满足对任意的时间偏移都存在活动时隙的重叠,该过程终止,此时已选的所有活动时隙即是该方法调度的活动时隙;否则重复计算效用的过程。本发明提供了在异步及给定时间(n个时隙)情况下,使用尽可能少的活动时隙来保证邻居发现的调度方法,同时实现了异步、确定性和低功耗。这一时隙调度方法和装置可广泛利用于各类无线传感器网络应用,尤其是森林、海洋、煤矿、畜牧、野生物种研究等供能受限但又不便更换电池的应用中。图2a是本发明一种无线传感器网络中的时隙调度方法的第二实施例流程图,如图所示,本实施例中包括:步骤201:记录当前无线传感器网络中的时隙的个数为n,根据时隙先后顺序标识每个时隙,所述n个时隙包括活动时隙和睡眠时隙。在进行时隙调度的过程中,时隙中的活动时隙和睡眠时隙时一个不断变化的过程,记当前的活动时隙集合S为时隙集合{0,2,…,n-1}的一个子集。数字i在集合S中表示n个时隙中的第i个时隙被选为活动时隙;反之数字i不在集合S中则表示第i个时隙是睡眠时隙。将当前活动时隙选择以集合S来表示可以简单直观地识别活动时隙,也利于在编程中的实现。步骤202:初始化用于标识每次偏移整数个时隙长时是否有一个活动时隙完全重叠的标记数组F[j],F[j]中的数均预设为0;其中j=0、1、2、…、n-1,F[j]=1表示偏移j个时隙至少有一个活动时隙完全重叠,F[j]=0表示偏移j个时隙所有活动时隙都不重叠。在实际的网络运行过程中,大多数情形下时隙不对齐的,如图2b所示,我们只需令节点在每个活动时隙的开始与结束时都发送一个广播信号,可以很容易进行验证,即使时间偏移量不是整数个时隙,但只要活动时隙存在部分重叠,邻居节点间仍可实现双向发现,在图2b的情形中,在时间偏移量小于1个时隙时,均可实现时隙重合。故本方案中只考虑最差情况下,也就是时间偏移量为整数个时隙的情况。假设时隙对齐的情形,即节点间的时隙开始与结束边界是对齐的。此时时间偏移量必定为整数个时隙。我们采用一个长度为n的标记数组F,其索引值为j=0,1,2,…,n-1。F[j]=1表示在当前选择的活动时隙集合S下,时间偏移量为j个时隙时至少有一个活动时隙完全重叠;反之F[j]=0表示时间偏移量为j个时隙时所有活动时隙都不重叠。这样的标记数组F有效描绘了活动时隙重合与时间偏移量的关系。如图2c所示,其中L表示一个周期内的时隙分布情况,一个周期内共5个时隙,故需要获得时间偏移量分别为0、1、2、3、4个时隙时是否有活动时隙重合;其中阴影部分表示5个时隙中有2个活动时隙,空白部分表示5个时隙中有3个睡眠时隙,L0、L1、L2、L3、L4分别表示时间偏移量为0、1、2、3、4个时隙时的时隙分布,经过对比可以发现,L和L0有活动时隙重合,故F[0]=1;L和L1有活动时隙重合,故F[1]=1;L和L2没有活动时隙重合,故F[2]=0;L和L3没有活动时隙重合,故F[3]=0;L和L4有活动时隙重合,故F[4]=1。步骤203:初始化活动时隙集合S为空集。在最开始调度时,并没有预设哪个时隙为活动时隙,从零开始调度,即初始化活动时隙集合S为空集。步骤204:初始化每个睡眠时隙k的效用值u(k)为0;其中k为睡眠时隙在时隙中的标识。在给定上述系统状态描述的前提下,定义睡眠时隙效用值为:若将该睡眠时隙转变为活动时隙,标记数组F中由0变1的元素数目。显然在此效用定义下,每个睡眠时隙的效用都是非负值。另外效用越大,代表该睡眠时隙作为活动时隙的效益越大,即在更多的时间偏移量使得活动时隙重叠。因此这样的效用定义满足即将介绍的贪心调度算法的效用定义要求。步骤205:计算每个睡眠时隙的效用值u(k),具体计算方法为:若S为空集,u(k)=1;若S不为空集,对S中的每一个活动时隙i,计算|k-i|及n-|k-i|;当|k-i|不等于n-|k-i|且F[|k-i|]和F[n-|k-i|]均等于0时,u(k)累加2,当|k-i|=n-|k-i|且F[|k-i|]和F[n-|k-i|]至少一个等于0时,u(k)累加1,判断睡眠时隙的效用值是否达到S中时隙数目值的两倍,是则将该时隙作为效用值最大的睡眠时隙,停止计算睡眠时隙的效用值,否则计算下一个睡眠时隙的效用值u(k);其中i为活动时隙在时隙中的标识。若S为空集,即时隙全部为睡眠时隙,对于每个睡眠时隙而言,当前标记数组为全0数组,在把每个睡眠时隙分别转变为活动时隙之后,都只有F[0]的值从0变为1,故每个睡眠时隙的效用值u(k)=1;若S不为空集,通过上述计算过程即可得到睡眠时隙的效用值。如图2d所示,该无线传感器网络中单个周期内有10个时隙,其中阴影部分,即0、1、3时隙为当前活动时隙,其余空白部分为睡眠时隙。由上述计算方法可以得到睡眠时隙的效用值u(2)=0、u(4)=2、u(5)=3、u(6)=3、u(7)=2、u(8)=1、u(9)=0,具体每个睡眠时隙的效用值也已表示在图2d中。对于其中判断睡眠时隙的效用值是否达到S中时隙数目值的两倍,该步骤是为了进一步提高调度效率,缩短计算时间,效用值达到两倍于S中元素数目时,即可选择该睡眠时隙作为活动时隙,因为后续的效用计算不可能超出这个值。步骤206:判断是否已存在效用值达到S中时隙数目值的两倍的效用值最大的睡眠时隙,是则执行步骤208,否则执行步骤207。若步骤205中已得到效用值最大的睡眠时隙,则直接执行步骤208对该时隙进行操作,否做执行步骤207。步骤207:对睡眠时隙的效用值进行排序,选择效用值最大的睡眠时隙k*,有多个效用值最大的睡眠时隙时,从多个效用值最大的睡眠时隙中随机选择一个作为效用值最大的睡眠时隙k*。具体的排序方法已多有实现,此处不再赘述。因为每次只允许添加一个睡眠时隙到活动时隙集合中,故当出现多个效用值最大的睡眠时隙时,从多个效用值最大的睡眠时隙中随机选择一个作为效用值最大的睡眠时隙。步骤208:将所述效用值最大的睡眠时隙k*加入S。步骤209:当效用值最大的睡眠时隙k*加入前的S为空时,令F[0]=1,否则对效用值最大的睡眠时隙k*加入前的S中的每个元素i,令F[|k*-i|]和F[n-|k*-i|]为1。更新标记数组以作调度完成或重新开始计算效用值的判断依据。步骤210:判断F[j]是否全为1,是则执行步骤211;否则执行步骤204;步骤211:将效用值最大的睡眠时隙k*加入后的S中的时隙作为无线传感器网络中的活动时隙,完成时隙调度。图2e给出了当时隙个数n=15时的最终调度结果图,其中上图是本实施例中的调度结果,下图是基于DISCO算法的调度结果。可以发现此时采用本方法只需要5个活动时隙,而基于DISCO算法的调度则需要7个活动时隙。本方法的调度过程中的状态和效用值计算如下:1、S={},u对所有睡眠时隙全为1,k*=0,F[0]=1;2、S={0},u[1]=2已为最大,k*=1,F[1]=F[14]=1;3、S={0,1},u[2]=2,u[3]=4为最大,k*=3,F[2]=F[13]=1,F[3]=F[12]=1;4、S={0,1,3},u[2]=0,u[4]=2,u[5]=u[6]=4,u[7]=6为最大,k*=7,F[4]=F[11]=1,F[6]=F[9]=1,F[7]=F[8]=1;5、S={0,1,3,7},u[12]=2为最大,k*=12,F[5]=F[10]=1;6、S={0,1,3,7,12},F所有元素为1,调度结束。本发明采用基于贪心算法原理的调度机制,每次添加效用最大的睡眠时隙作为活动时隙,并相应地更新标记数组,使得索引为对应时隙差的元素为1。若已选的所有活动时隙满足对任意的时间偏移都存在活动时隙的重叠,该过程终止,此时已选的所有活动时隙即是该方法调度的活动时隙;否则重复计算效用的过程。容易验证效用最大值总是大于0,因此除去最后一次循环,每一次循环都至少有两个(最后一次循环可能1个)标记数组中的元素由0变1,算法在最多(n/2+1)次循环后即会终止。图3a是本发明一种无线传感器网络中的时隙调度装置的结构框架图,如图所示,该装置包括:预设单元310,用于记录无线传感器网络中一个周期的时隙的个数,所述时隙包括活动时隙和睡眠时隙,初始化活动时隙集合为空集;效用值计算单元320,用于计算每个睡眠时隙的效用值;活动时隙更新单元330,用于将效用值最大的睡眠时隙加入活动时隙集合;调度结束判断单元340,用于判断时隙每次偏移整数个时隙长时是否至少有一个活动时隙完全重叠;是则将活动时隙集合中的时隙作为无线传感器网络中的活动时隙,完成时隙调度;否则运行效用值计算单元320。具体的,如图3b所示,所述预设单元310具体包括:时隙预设模块311,用于记录当前无线传感器网络中的时隙的个数为n,根据时隙先后顺序标识每个时隙,所述n个时隙包括活动时隙和睡眠时隙;标记数组预设模块312,用于初始化用于标识每次偏移整数个时隙长时是否有一个活动时隙完全重叠的标记数组F[j],F[j]中的数均预设为0;其中j=0、1、2、…、n-1,F[j]=1表示偏移j个时隙至少有一个活动时隙完全重叠,F[j]=0表示偏移j个时隙所有活动时隙都不重叠;活动时隙集合预设模块313,用于初始化活动时隙集合S为空集;具体的,如图3c所示,所述效用值计算单元320具体包括:效用值初始化模块321,用于初始化每个睡眠时隙k的效用值u(k)为0;其中k为睡眠时隙在时隙中的标识;效用值计算模块322,用于计算每个睡眠时隙的效用值u(k),具体计算方法为:若S为空集,u(k)=1;若S不为空集,对S中的每一个活动时隙i,计算|k-i|及n-|k-i|;当|k-i|不等于n-|k-i|且F[|k-i|]和F[n-|k-i|]均等于0时,u(k)累加2,当|k-i|=n-|k-i|且F[|k-i|]和F[n-|k-i|]至少一个等于0时,u(k)累加1,判断睡眠时隙的效用值是否达到S中时隙数目值的两倍,是则将该时隙作为效用值最大的睡眠时隙,停止计算睡眠时隙的效用值,否则计算下一个睡眠时隙的效用值u(k);其中i为活动时隙在时隙中的标识。具体的,如图3d所示,所述活动时隙更新单元330具体包括:判断模块331,用于判断是否已存在效用值达到S中时隙数目值的两倍的效用值最大的睡眠时隙,是则运行更新模块333,否则运行排序模块332;排序模块332,用于对睡眠时隙的效用值进行排序,选择效用值最大的睡眠时隙k*,有多个效用值最大的睡眠时隙时,从多个效用值最大的睡眠时隙中随机选择一个作为效用值最大的睡眠时隙k*;更新模块333,用于将所述效用值最大的睡眠时隙k*加入S。具体的,如图3e所示,所述调度结束判断单元340具体包括:标记数组更新模块341,用于当效用值最大的睡眠时隙k*加入前的S为空时,令F[0]=1,否则对效用值最大的睡眠时隙k*加入前的S中的每个元素i,令F[|k*-i|]和F[n-|k*-i|]为1;标记数组判断模块342,用于判断F[j]是否全为1,是则调度完成模块343;否则运行效用值初始化模块321;调度完成模块343,用于将效用值最大的睡眠时隙k*加入后的S中的时隙作为无线传感器网络中的活动时隙,完成时隙调度。本发明采用基于贪心算法原理的调度机制,每次添加效用最大的睡眠时隙作为活动时隙,并相应地更新标记数组,使得索引为对应时隙差的元素为1。若已选的所有活动时隙满足对任意的时间偏移都存在活动时隙的重叠,该过程终止,此时已选的所有活动时隙即是该方法调度的活动时隙;否则重复计算效用的过程。容易验证效用最大值总是大于0,因此除去最后一次循环,每一次循环都至少有两个(最后一次循环可能1个)标记数组中的元素由0变1,算法在最多(n/2+1)次循环后即会终止。本发明提供了在异步及给定时间(n个时隙)情况下,使用尽可能少的活动时隙来保证邻居发现的调度装置,同时实现了异步、确定性和低功耗。这一时隙调度方法和装置可广泛利用于各类无线传感器网络应用,尤其是森林、海洋、煤矿、畜牧、野生物种研究等供能受限但又不便更换电池的应用中。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1