【WSN覆盖】基于麻雀搜索算法的三维无线传感器网络覆盖优化 三维WSN覆盖优化【Matlab代码#26】
文章目录
- 【可更换其他算法,`获取资源`请见文章第5节:资源获取】
- 1. SSA算法
- 2. 三维覆盖模型
- 3. 部分代码展示
- 4. 仿真结果展示
- 5. 资源获取
【可更换其他算法,获取资源请见文章第5节:资源获取】
1. SSA算法


2. 三维覆盖模型
三维覆盖模型如下面图1所示。

由于节点随机抛洒,而传感器节点的分布情况会影响网络覆盖率,以 R c o v R_{cov} Rcov作为覆盖率评价标准。在三维覆盖区域中,传感器节点的覆盖区域是某一半径确定的球。在三维监测区域中随机抛洒 N N N个传感器节点,形成节点集 S = { s 1 , s 2 , . . . , s N } (1) S=\left \{ s_{1},s_{2},...,s_{N} \right \} \tag{1} S={s1,s2,...,sN}(1)
其中,第 i i i个节点的坐标为 s i ( x i , y i , z i ) s_{i}(x_{i},y_{i},z_{i}) si(xi,yi,zi)。三维监控节点集合为 L = { l 1 , l 2 , . . . , l N } (2) L=\left \{ l_{1},l_{2},...,l_{N} \right \} \tag{2} L={l1,l2,...,lN}(2)其中,三维监测区域内某个目标点为 l v ( x v , y v , z v ) l_{v}(x_{v},y_{v},z_{v}) lv(xv,yv,zv),三维监控点与目标点的距离为:
d ( s i , l v ) = ( x i − x v ) 2 + ( y i − y v ) 2 + ( z i − z v ) 2 (3) d(s_{i},l_{v})=\sqrt{(x_{i}-x_{v})^{2}+ (y_{i}-y_{v})^{2}+(z_{i}-z_{v})^{2}} \tag{3} d(si,lv)=(xi−xv)2+(yi−yv)2+(zi−zv)2(3)
若 d ( s i , l v ) ≤ R s d(s_{i},l_{v})\le R_{s} d(si,lv)≤Rs,则目标点在三维覆盖区域内,感知度标记为1;相反,则在三维覆盖区域之外,感知度标记为0。采用布尔感知模型,感知度为:
p ( s i , l v ) = { 1 , d ( s i , l v ) ≤ R S 0 , d ( s i , l v ) > R S (4) p(s_{i},l_{v})=\left\{\begin{matrix} 1,d(s_{i},l_{v})\le R_{S} \\ 0,d(s_{i},l_{v})> R_{S} \end{matrix}\right. \tag{4} p(si,lv)={1,d(si,lv)≤RS0,d(si,lv)>RS(4)
其中,R_{s}为节点的通信半径,假设三维网络中有 k k k个 待测节点 s 1 , s 2 , . . . , s k s_{1},s_{2},...,s_{k} s1,s2,...,sk,对应点 l l l的覆盖率分别为 p ( s i , l v ) p(s_{i},l_{v}) p(si,lv),其中 k a l l k_{all} kall是监测区域内所有待测传感器节点, R p ( k a l l , l v ) R_{p}(k_{all},l_{v}) Rp(kall,lv)为联合感知概率,表达式为:
R p ( k a l l , l v ) = 1 − ∏ i = 1 k ( 1 − p ( s i , l v ) ) (5) R_{p}(k_{all},l_{v})=1-\prod_{i=1}^{k}(1-p(s_{i},l_{v})) \tag{5} Rp(kall,lv)=1−i=1∏k(1−p(si,lv))(5)
网络整体覆盖率为:
R c o v = ∑ i = 1 k R p ( k a l l , l v ) k (6) R_{cov}=\frac{\sum_{i=1}^{k}R_{p}(k_{all},l_{v}) }{k} \tag{6} Rcov=k∑i=1kRp(kall,lv)(6)
其中, R c o v R_{cov} Rcov是传感器网络的整体覆盖率, P P P为区域中的任意一个监测点。以覆盖率为适应度函数,可以检验无线传感网络覆盖性能。
3. 部分代码展示
FoodNumber=30; %种群数量
maxCycle=500; %最大迭代次数
dim=30; %待优化参数数量
P_percent = 0.2; %发现者比例
pNum = round( FoodNumber * P_percent ); %发现者数量
objfun='WSNcover';
c=0; %下限
d=50; %上限
r=10; %边界宽lb= c.*ones( 1,dim ); % Lower limit bounds
ub= d.*ones( 1,dim ); % Upper limit bounds
for i = 1 : FoodNumberFoodsX( i, : ) = lb + (ub - lb) .* rand( 1, dim ); FoodsY( i, : ) = lb + (ub - lb) .* rand( 1, dim );FoodsZ( i, : ) = lb + (ub - lb) .* rand( 1, dim );ObjVal(i)=feval(objfun,FoodsX( i, : ),FoodsY( i, : ),FoodsZ( i, : ),dim,r,d);Fitness(i)=calculateFitness(-ObjVal(i));% 得到适应度值,覆盖率越高,适应度值越高
endpFit = Fitness;
pObj = ObjVal;
pX = FoodsX;
pY = FoodsY;
pZ = FoodsZ;
[ ObjMax, ObjbestI ] = max( ObjVal );
[ fMax, fbestI ] = max( Fitness );
bestX = FoodsX( fbestI, : );
bestY = FoodsY( fbestI, : );
bestZ = FoodsZ( fbestI, : );
HistoryObjMax = [1,maxCycle];% 画图
figure(1)
for i=1:dimx = bestX(1,i);y = bestY(1,i);z = bestZ(1,i);cc(x,y,z,r);hold on;
end
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
title('优化前覆盖效果');
4. 仿真结果展示



5. 资源获取
A资源获取说明.rar
相关文章:
【WSN覆盖】基于麻雀搜索算法的三维无线传感器网络覆盖优化 三维WSN覆盖优化【Matlab代码#26】
文章目录 【可更换其他算法,获取资源请见文章第5节:资源获取】1. SSA算法2. 三维覆盖模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法,获取资源请见文章第5节:资源获取】 1. SSA算法 2. 三维覆盖模型 三维覆盖模…...
【学习日记2023.5.20】 之 菜品模块完善
文章目录 3. 功能模块完善之菜品模块3.1 公共字段自动填充3.1.1 问题分析3.1.2 实现思路3.1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 3.1.4 功能测试3.1.5 提交代码 3.2 新增菜品3.2.1 需求分析与设计3.2.2 代码开发3.2.2.1 文件上传实现3.2.2.2 新增菜品实现 3.2.3 功…...
MySQL高级SQL语句
创建两个表用于演示 location store_info use kgc; create table location (Region char(20),Store_Name char(20)); insert into location values(East,Boston); insert into location values(East,New York); insert into location values(West,Los Angeles); insert into lo…...
rem和em的区别和使用场景,以及如何在实际开发中灵活运用它们
在前端开发中,我们经常使用rem和em作为长度单位来设置页面元素的大小。虽然它们都可以用于实现响应式布局,但是它们之间存在着一些区别。本文将深入探讨rem和em的区别和使用场景,以及如何在实际开发中灵活运用它们。 什么是rem rem是相对于…...
JDK源码阅读环境搭建
本次针对jdk8u版本的搭建 1.新建项目 新建java项目JavaSourceLearn ,这里我创建的是maven 2.获取JDK源码 打开Project Structure 找到本地JDK安装位置将src.zip解压到项目java包中 整理下项目结构,删除用不到的目录 提示: 添加源码到项目之后首次运行…...
基本定时器工作模式
计数和定时 BasicTimer支持8位或16位向上计数模式。当计数值大于等于比较寄存器(CMPH、CMPL),会产生计数中断标志,并从自动重载寄存器(LOADH、LOADL)加载新的比较值。这样可以实时调整每个计数周期的计数长…...
【华为OD机试真题2023B卷 JAVA】报文重排序
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 报文重排序 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 对报文进行重传和重排序是常用的可靠性机制,重传缓冲区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。。 输入描…...
【Docker】- 02 Docker-Compose
Docker-Compose Docker-Compose1 下载并安装Docker-Compose1.1 下载Docker-Compose1.2 设置权限1.3 配置环境变量1.4 测试 2 Docker-Compose管理MySQL和Tomcat容器3 使用docker-compose命令管理容器4 docker-compose配合Dockerfile使用4.1 docker-compose文件4.2 Dockerfile文件…...
工业相机的Pixel Binning和Pixel Skipping
一般图像传感器的不同分辨率都对应着不同的帧率。如果想要提高帧率,就要考虑是否需要缩小视野。若不希望视野缩小,就需要减小分辨率(resolution)。常用的减少分辨率的两种采样方式是:Skipping和Binning。 什么是Binni…...
c++ 11标准模板(STL) std::set(八)
定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…...
linux服务器断电重启后,发现时间误差八小时
文章目录 问题现象排查与解决时间同步与设置服务器时钟介绍 问题现象 客户的服务器已部署好平台,放入了机房,运行正常。服务器系统时间设置东八区(CST),时间日期也已修改正确客户是我省的某小县城,某台晚上…...
兼容人大金仓,异常信息报错解决大全
乱码报错 ISO-8859-1 SQL 错误 [55006]: : "ssss" (kbjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf) Detail: 3. : "sss…...
短睡眠 堀大辅 超短眠 人生更丰富
堀大辅是位每天只睡半小时的日本狠人,更多信息自行百度。以下内容,个人收集总结,仅供参考。 堀大辅大胆假设「只要能够减少睡眠的时间,我就能过得更充实」,便与朋友付诸行动,通过纪录观察每天的睡眠时数&a…...
私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」
文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公…...
Debezium系列之:Debezium镜像仓库Quay.io,使用Debezium镜像仓库的方法和案例
Debezium系列之:Debezium镜像仓库Quay.io,使用Debezium镜像仓库的方法和案例 一、Debezium镜像仓库变动二、镜像仓库[Quay.io](https://quay.io/organization/debezium)三、使用镜像仓库Quay.io方法四、使用镜像仓库下载Debezium UI一、Debezium镜像仓库变动 Debezium2.2版本…...
文心一言和ChatGPT最全对比
文心一言和ChatGPT都是基于深度学习技术的自然语言处理模型,有各自的优势和使用场景,无法简单地比较 ChatGPT 和文心一言哪一个功能更强大,它们各自具有优势和局限性,需要根据具体需求进行选择,以下一些具体对比&#…...
龙芯2K1000实战开发-平台介绍
文章目录 概要整体架构流程技术名词解释技术细节小结概要 龙芯 2K1000 处理器主要面向于网络应用,兼顾平板应用及工控领域应 用。采用 40nm 工艺,片内集成 2 个 GS264 处理器核,主频 1GHz,64 位 DDR3 控制器,以及各种系统 IO 接口。 整体架构 龙芯 2K1000 的结构如图 所…...
C++ map用法总结(整理)
1,map简介 map是STL的一个关联容器,它提供一对一的hash。 第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value); map以模板(泛型)方式实现,可以存储任意类型的…...
面向对象的第二个基本特征:继承011026
1.什么是继承? 生活中: 继承 ---> 延续 ---> 扩展 代码中: 继承 ---> 重复使用已有的类的代码(复用) ---> 扩展已有类的代码(扩展) 2.为什么要继承? ① 代码的复用和…...
机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选)
博主前期相关的博客可见下: 机器学习项目实战-能源利用率 Part-1(数据清洗) 机器学习项目实战-能源利用率 Part-2(探索性数据分析) 这部分进行的特征工程与特征筛选。 三 特征工程与特征筛选 一般情况下我们分两步走…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
