先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。
覆盖问题是无线传感器(Wireless Sensor Networks, WSN)节点配置首先面临的基本问题,因为传感器节点可能任意分布在配置区域,它反映了WSN某区域被监测和跟踪的状况,涉及到通信质量、网络寿命等问题,直接影响整个网络的服务质量。受传感器自身体积大小的限制,传感器的电池非常有限。在满足一定的覆盖条件下,合理地利用节点的能量,延长网络的生命周期是非常有必要的。因此,如何利用有限数量的传感器节点实现最大程度的网络覆盖成为传感器节点部署的一个关键问题。
01
基础理论
1.1 相关理论
无线传感器网络是由部署在监测区域内的传感器节点通过自组织和多跳的方式构成的无线网络,可以对监测对象的信息进行实时感知、采集和处理。图1是一个典型的WSN系统结构。传感器节点在WSN中充当数据采集者、数据中转站或簇头节点的角色。监测区域内的节点负责采集自身覆盖范围内的数据,经过簇头节点的数据融合后发送给汇聚节点,最后经过互联网交给用户。因此,覆盖问题是WSN网络配置面临的最基本问题,它直接影响网络的服务质量。
图1 无线传感器网络模型
1.2 WSN覆盖分类
根据WSN应用场景的不同,覆盖的需求也不一样。如图2所示,根据监测对象的不同,WSN的覆盖可以分为点覆盖、区域覆盖和栅栏覆盖三种类型。根据传感器节点部署方式的不同,可以分为静态部署和动态部署。
1. 按监测对象分类
(1)点覆盖。这种类型的覆盖又称为目标覆盖。它的目的是在附近传感器节点的帮助下监测物联网中的任何特定目标,如图2(a)中的蓝色三角形即为目标监测点。显而易见,这种类型的覆盖消耗的能量较少,因为被监测的是一些特定的目标,而不是整个物联网区域。
(2)区域覆盖。区域覆盖又称为面覆盖,它的目的是通过网络内的传感器节点集合来监视整个物联网。如图2(b)所示,监测区域被传感器节点全部覆盖,这种情况称为全覆盖,这是区域覆盖的一个特例。区域覆盖又可以进一步分为单覆,盖和多覆盖。在单覆盖中,物联网区域内的每个目标点都必须至少被一个传感器节点所覆盖。多覆盖中物联网区域内的每个目标点至少要被k个节点覆盖,因此通常称为k覆盖。
(3)栅栏覆盖。栅栏覆盖也称为屏障覆盖,这种类型的覆盖的主要目的是监测在屏障旁边发生的任何突破或入侵行为。如图2(c)所示,传感器节点的设置是为了检测物联网区域中的任何入侵行为,当物体穿越传感器所构筑的屏障时,这种入侵行为将被传感所捕获。屏障覆盖可以进一步划分为两种类型,即弱屏障覆盖和强屏障覆盖。在弱屏障覆盖中,存在少数覆盖孔或未覆盖区域,这可能导致目标未被发现。而强屏障覆盖保证了目标会被传感器节点更准确地扫描到,图2(c)所示覆盖类型即为强屏障覆盖。
图2 WSN覆盖类型
2. 按部署方式分类
(1)静态部署
(2)动态部署
(这里不详细展开,具体内容自己去查阅文献,参考文献:肖航.基于改进海洋捕食者算法的三维无线传感器网络覆盖优化研究[D].江西理工大学,2023.)
02
2D环境WSN覆盖模型
当一个移动用户进入WSN网络中,其移动范围受网络覆盖范围的影响,因此,在部署WSN网络节点时,需首先通过网络覆盖模型对网络覆盖率进行分析。一般地,可以通过0/1感知模型和概率感知模型对网络覆盖率进行定义并量化。
0/1感知模型也叫布尔模型。因为大多数文献使用的都是布尔模型来计算覆盖率,因此这里也只介绍基于布尔模型的覆盖率计算方法。
(图片截自参考文献:胡小平,曹敬.改进灰狼优化算法在WSN节点部署中的应用[J].传感技术学报,2018,31(05):753-758)
这里举个例子,如图3所示。就是说把目标区域分成m*n个点(小格子),然后监测每个小格子能否被检测到。所以,也就不难理解为什么也叫0/1感知模型了。对一个点(小格子),能够被检测即为1,不能被覆盖到,就为0。那么,覆盖率就是能够被覆盖的小格子的数量除以小格子的总数,即:所有1的和÷m*n。至于m和n分别取多大,可以自己定义。分得越细,覆盖率就越精确,但计算量也越大。
图3
有朋友可能会有疑问,为什么不直接计算面积?就是说计算覆盖到的面积,再除以矩形的面积。理论上当然是可以的,并且这才是真正的覆盖率。但是,不同的传感器的覆盖区域可能会有重叠。就是说圆与圆之间会有交叉。举个例子,如图4所示。这个问题大家可以去了解一下:两个圆的重叠面积,是可以计算的。但多个圆的重叠面积,数学界的世纪难题!
因此,我们才会采用上面的方法做近似计算~
图4
03
编码方式
如果利用蜣螂优化(DBO)算法求解这个问题,目标函数是不难计算的。统计被覆盖的点(小栅格)的数量,然后除以点(小栅格)的总数即可。最主要是如何去编码,即DBO的个体的表达方式。
因为我们讨论的是2D环境,因此可以使用矩阵编码,即每个个体表示成一个2行K列的矩阵,K为传感器网络的节点个数。那么矩阵第一行对应每个传感器的横坐标,矩阵第二行对应每个传感器的纵坐标,由此便确定了每个传感器节点的圆心位置。
当然,也可以不用这么复杂,直接把横坐标和纵坐标拉通,放在一起组成一个2*K维数组。
以上两种方式都可以,但不同的编码方式,也会使算法的处理不同。
04
实验仿真
使用DBO算法来优化WSN的节点覆盖率。种群规模NP设置为30,最大迭代次数T等于1000。
首先测试节点数较少的情况:m*n=100×100、覆盖节点数K=20、通信半径R=10。覆盖情况如图5所示:
图5 DBO优化2D覆盖(K=20,R=10)
可以看到,DBO算法基本可以将这些节点完全铺开。这也是检测算法性能的一种方式。对于节点少的情况,如果一个算法的优化结果存在圆与圆之间有重叠,那么性能并不理想。很明显,所有圆铺开,没有重叠时,覆盖率才最大。因此,并不是优化节点数多的情况才能检验算法性能。
其次,测试节点数较多的情况:m*n=100×100、覆盖节点数K=40、通信半径R=10。覆盖情况如图6所示:
图6 DBO优化2D覆盖(K=40,R=10)
这里不再对图6进一步分析。只能说DBO这个算法确实可以,在没改进的情况下,这个效果已经胜过许多改进算法了~
05
推广到3D环境
基于布尔模型的3D环境下的WSD节点覆盖优化,其实就是2D环境的推广。如图7所示,点P为目标监测点,点S为传感器节点,Rs为传感器的感知半径。所以距离计算公式改为三维空间中的距离计算公式即可,即计算(xi,yi,zi)与(x,y,z)之间的距离。类似地,2D环境是划分成m*n个点(小栅格),3D环境则划分成m*n*h个点(小栅格)即可。(懒得敲公式了~)
图7 3D布尔感知模型
同样,利用DBO算法来进行优化。
首先测试节点数较少的情况:m*n*h=80×80*80、覆盖节点数K=15、通信半径R=10。覆盖情况如图8所示:
图8 DBO优化3D覆盖(K=15,R=10)
3D环境下,DBO算法仍然可以把所有节点铺开,即球与球之间没有重叠,视觉角度而已,在MATLAB手动旋转一下就能观察清楚了。
其次,测试节点数较多的情况:m*n*h=80×80*80、覆盖节点数K=40、通信半径R=10。覆盖情况如图9所示:
图8 DBO优化3D覆盖(K=40,R=10)
06
MATLAB代码
这里介绍的WSN覆盖优化只是一个算法应用。实际中,需要考虑很多因素,例如障碍物、WSN能耗等。但现在很多改进算法的文章,算法应用做的都是工程优化,例如压力容器设计、拉伸/压缩弹簧设计、焊接梁设计等。太多、太泛。可以换一换应用,先改进算法,再数值实验,然后做个2D的WSN覆盖优化,然后再推广到3D。这是我的个人看法~
2D环境下的WSN覆盖优化MATLAB代码
基于差分进化(DE)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于粒子群(PSO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于灰狼优化(GWO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于正余弦算法(SCA)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于鲸鱼优化算法(WOA)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于哈里斯鹰优化(HHO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于麻雀搜索算法(SSA)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于非洲秃鹫优化算法(AVOA)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于白鲸优化(BWO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于蜣螂优化(DBO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于沙猫群优化(SCSO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于蛇优化(SO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于指数分布优化器(EDO)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
基于星鸦优化算法(NOA)的WSN覆盖优化(2D) | 关注公众号,里面有链接 |
3D环境下的WSN覆盖优化MATLAB代码
基于差分进化(DE)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于粒子群(PSO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于灰狼优化(GWO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于正余弦算法(SCA)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于鲸鱼优化算法(WOA)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于哈里斯鹰优化(HHO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于麻雀搜索算法(SSA)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于非洲秃鹫优化算法(AVOA)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于白鲸优化(BWO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于蜣螂优化(DBO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于沙猫群优化(SCSO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于蛇优化(SO)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
基于星鸦优化算法(NOA)的WSN覆盖优化(3D) | 关注公众号,里面有链接 |
可通过下方链接下载代码清单,在里面寻找需要的算法代码,然后去对应的链接获取。清单会同步更新,一旦有新的代码,就可以在清单里找到。清单里面有部分代码是开源获取的。可随时免费下载。
链接:https://pan.baidu.com/s/1SFDMplrL7tiqGZlrpOSGYg
提取码:8023