基于DBO算法的WSN节点覆盖优化

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI会议征稿】第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024)

第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) The 3rd International Academic Conference on Blockchain, Information Technology and Smart Finance 第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) 将于2024年2月23-25日在马来西亚举行。本次会…

IP地址如何实现定位功能?

网络犯罪、保护网络安全的重要手段。近日,一则新闻引起了广大网友的关注:IP也能实现定位功能,这是如何做到的呢?本文将对此进行深入解析。 首先,我们需要了解什么是IP地址定位。IP地址定位是通过IP地址确定网络用户所在…

计算机视觉:使用opencv实现银行卡号识别

1 概述 1.1 opencv介绍 OpenCV是Open Source Computer Vision Library(开源计算机视觉库)的简称,由Intel公司在1999年提出建立,现在由Willow Garage提供运行支持,它是一个高度开源发行的计算机视觉库,可以…

我国陆地遥感卫星发展现状与展望

一、引言 从20世纪90年代末至今,我国陆地遥感卫星事业历经二十多年,实现了从无到有、从小到大、从弱到强的跨越发展。随着高分辨率对地观测系统重大专项(高分专项)、《陆海观测卫星业务发展规划(2011—2020年&#xff…

vue3响应式api

响应式api——compositon api setup: 不要再想this问题执行是在beforeCreated之前 beforeCreated:也就是创建了一个实例 created:挂载了数据 通过形参props接收,只读 以后所有代码都写到setup中 判断是否只读:isReadon…

【04】Istio的pilot流量分发机制

4.1 Pilot配置分发机制 Pilot负责网格数据平面相关配置信息的获取,生成,和分发,它通过Service Registry获取网格配置信息并将其转换为XDS接口的标准数据格式,而后经gRPC分发至相关的Envoy; Service Registry:服务注册表…

EXIT(1)

EXTI介绍 EXTI是片上外设 NVIC是cpu内的外设 回忆起之前的GPIO和AFIO 我们是如何检测按键按下的 我们是一直用while循环读取IDR寄存器的对应位置的值 一直检测判断按键是否被按下 那么是否有第二种方式检测按键是否被按下了呢? 通过EXTI 当EXTI检测到按键的电平发生…

【C++】【Opencv】minMaxLoc()函数详解和示例

minMaxLoc()函数 是 OpenCV 库中的一个函数,用于找到一个多维数组中的最小值和最大值,以及它们的位置。这个函数对于处理图像和数组非常有用。本文通过参数和示例详解,帮助大家理解和使用该函数。 参数详解 函数原型…

将 ONLYOFFICE 文档编辑器与 С# 群件平台集成

在本文中,我们会向您展示 ONLYOFFICE 文档编辑器与其自有的协作平台集成。 ONLYOFFICE 是一款开源办公套件,包括文本文档、电子表格和演示文稿编辑器。这款套件支持用户通过文档编辑组件扩展第三方 web 应用的功能,可直接在应用的界面中使用。…

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

Embedded-GCC-Template 第三方资源集合 STM32F407-GCC-Template Arm-none-eabi-gcc MakefileOpenOCDCMSIS-DAPVscode工程模板 一、本次环境搭建所用的软硬件 1)Windows or Linux (本文以Windows为主) 2)JLink、Daplink、Wch-Link烧录器 3&#xff…

MySQL join原理及优化

MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候,驱动表会根据关联字段的索引进行查找,当在索引上找到了符合的值,再回表进行查询,也就…

C#中的扩展方法---Extension

C#中扩展方法是C# 3.0/.NET 3.x 新增特性,能够实现向现有类型中“添加”方法,以下主要介绍C#中扩展方法的声明及使用。 1、扩展方法的声明 扩展方法使能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型…

Flink在汽车行业的应用【面试加分系列】

很多同学问我为什么要发这些大数据前沿汇报? 一方面是自己学习完后觉得非常好,然后总结发出来方便大家阅读;另外一方面,看这些汇报对你的面试帮助会很大,特别是面试前可以看看即将面试公司在大数据前沿的发展动向&…

OmniFocus Pro for Mac(GTD时间管理软件) OmniFocus Mac版

OmniFocus Pro 3 for Mac 中文激活版是一款功能强大且灵活的 GTD 时间管理工具,可为您提供无干扰的环境,帮助您可以轻松地从邮件,消息,Safari 和任何其他第三方应用程序中安排任务,编写备注和剪辑信息。您可以快速轻松…

计算机网络:概述

0 学时安排及讨论题目 0.1讨论题目: CSMA/CD协议交换机基本原理ARP协议及其安全子网划分IP分片路由选择算法网络地址转换NATTCP连接建立和释放再论网络体系结构 0.2 本节主要内容 计算机网络在信息时代中的作用 互联网概述 互联网的组成 计算机网络在我国的发展 …

键盘打字盲打练习系列之认识键盘——0

一.欢迎来到我的酒馆 盲打,yyds! 目录 一.欢迎来到我的酒馆二.键盘规格三.键盘分区 二.键盘规格 经常看视频,看到别人在键盘上一通干净利索的操作,就打出想要的文字。心里突然来一句:卧槽,打字贼快啊&#…

JavaScript_动态表格_添加功能

1、动态表格_添加功能.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态表格_添加功能</title><style>table{border: 1px solid;margin: auto;width: 100%;}td,th{text-align: ce…

期中成绩这样发

数字化时代&#xff0c;成绩查询系统已经成为学校里不可或缺的一部分。老师们需要一种方便、快捷、准确的方式来发布和查询成绩&#xff0c;而学生们则需要一种安全、可靠的方式来获取自己的成绩。那么&#xff0c;如何实现这一目标呢&#xff1f;我来给大家介绍几种简单实用的…

uniapp发行web页面在老版本浏览器打开一片空白

uniapp发行的web页面&#xff08;菜单->发行->网站-PC Web或手机H5&#xff09;&#xff0c;对于一些老的浏览器&#xff08;或内核&#xff09;&#xff0c;打开一片空白&#xff1b; 而在新版本的浏览器中打开却正常。这是因为那些版本较低的浏览器不支持ES6的语法和新…

SpringBoot系列-2 自动装配

背景&#xff1a; Spring提供了IOC机制&#xff0c;基于此我们可以通过XML或者注解配置&#xff0c;将三方件注册到IOC中。问题是每个三方件都需要经过手动导入依赖、配置属性、注册IOC&#xff0c;比较繁琐。 基于"约定优于配置"原则的自动装配机制为该问题提供了一…