基于粒子群优化算法的最佳方式设置无线传感器节点的位置,以减轻由于任何能量耗尽节点而产生的覆盖空洞(Matlab代码实现)

news2024/10/6 21:31:31

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文为了以最佳方式设置无线传感器节点的位置,以减轻由于任何能量耗尽节点而产生的覆盖空洞。粒子群优化(PSO)用于此目的。目标是具有可用节点的最大覆盖区域。此优化中不使用任何约束。

📚2 运行结果

 

 

 

部分代码:

close all
clear
clc
addpath(genpath(cd))
warning('off')
%%
N=10;                       % number of nodes
area=[10,10];              % nodes deployment area in meter
Trange=2;                   % transmission range of sensor node in meter
nodes.pos=area(1).*rand(N,2);% nodes geographical locations
lambda=0.125;                % signal wavelength in meter
nodes.major = Trange;        % major axis for ellpitical range in meter
nodes.minor = lambda*Trange;  % minro axis for ellipitical range in meter
% redundantNo=9;               % number of healing nodes   
redundantNo=round(10*N/100);
%% plot the nodes deployment
cnt=1;
for ii=1:N      
    for jj=1:N
        if ii~=jj
            nodes.distance(ii,jj)=pdist([nodes.pos(ii,:);nodes.pos(jj,:)]);
            if nodes.distance(ii,jj)<Trange || nodes.distance(ii,jj)==Trange
                nodes.inrange(ii,jj)=1;
            else
                nodes.inrange(ii,jj)=0;
            end
        end
    end
end

figure
F5=plot(nodes.pos(:,1),nodes.pos(:,2),'.','color','r');
hold on
for ii=1:N                   % plot the circular transmission range
    [nodes.circle.x(ii,:),nodes.circle.y(ii,:)]=circle(nodes.pos(ii,1),nodes.pos(ii,2),Trange);
    F6=fill(nodes.circle.x(ii,:),nodes.circle.y(ii,:),[0.25,0.25,0.25]);
    alpha 0.3
    hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('Initial Placement of Nodes with circular transmission range')
%% plot delauny triangle
TRI = delaunay(nodes.pos(:,1),nodes.pos(:,2));
figure(2)
F5 = plot(nodes.pos(:,1),nodes.pos(:,2),'.','color','r');
hold on
for ii=1:N                   % plot the circular transmission range
    [nodes.circle.x(ii,:),nodes.circle.y(ii,:)]=circle(nodes.pos(ii,1),nodes.pos(ii,2),Trange);
    F6=fill(nodes.circle.x(ii,:),nodes.circle.y(ii,:),[0.25,0.25,0.25]);
    alpha 0.3
    hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('Coverage hole in initila position of Nodes')
hold on
triplot(TRI,nodes.pos(:,1),nodes.pos(:,2))
%% Hole detection
[holeDetected.circle,Circmcenter.circle,circumradius.circle]=holeDetection(TRI,nodes,F5,F6,Trange,area,2,1);
display(['--> No of detected Holes for Circular = ',num2str(numel(find(holeDetected.circle)))])
%% PSO optimize position of rest wsn nodes to cover the hole
nvars = 2*(N);
fun=@(x)objf(x,Trange,area);
lb=zeros(nvars,1);
ub=area(1).*ones(nvars,1);
options = optimoptions(@particleswarm,'Display','iter','MaxIterations',100,'PlotFcn','pswplotbestf');
[x,fval] = particleswarm(fun,nvars,lb,ub,options);
finalPos = reshape(x,[numel(x)/2,2]);
% plot the final tuned Node' pos
figure
plot(finalPos(:,1),finalPos(:,2),'o','color','r');
hold on
for ii=1:N                 % plot the circular transmission range
    [finalcircle.x(ii,:),finalcircle.y(ii,:)]=circle(finalPos(ii,1),finalPos(ii,2),Trange);
    fill(finalcircle.x(ii,:),finalcircle.y(ii,:),[0.25,0.25,0.25]);
    alpha 0.3
    hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('Optimized location of Nodes with circular transmission range')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

Abhishek Gupta (2022). WSN-Nodes-Location-Optimiation .

🌈4 Matlab代码实现

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

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

相关文章

数据脱敏的安全管理

什么是数据脱敏 我们需要先说下什么是敏感数据&#xff0c; 敏感数据泛指个人信息&#xff08;姓名、电话、住址、健康信息、证件等数据&#xff09;、涉及需要保护的数据。 数据脱敏&#xff0c;是将敏感数据按照一定的规则对敏感数据进行变形&#xff0c;达到保护用户信息安…

提升80%上云集成效率, TA是如何做到的

摘要&#xff1a;基于华为云开天aPaaS&#xff0c;提升80%上云集成效率&#xff0c;降低50%集成成本没有充足资金&#xff0c;没有足够的项目规划和过渡时间&#xff0c;也没有经验丰富的IT团队支持&#xff0c;中小企业的上云路可谓是困难重重。如何帮助企业高效上云、实现降本…

【Globalmapper中文入门到精通系列实验图文教程】(附配套实验数据持续更新)

【Globalmapper中文版入门到精通系列实验图文教程】&#xff08;附配套实验数据持续更新&#xff09; 文章目录一、专栏简介二、文章目录三、数据目录四、传送门一、专栏简介 本专栏为GlobalMapper中文入门实战精品教程&#xff0c;内容主要涉及&#xff1a;Globalmapper23软件…

【Oracle】数据库账号频繁被锁问题解决

文中使用的Oracle版本为11g。 今天在测试环境中遇到了一个问题&#xff0c;如下图&#xff1a; 所有的数据库客户端访问Oracle11g都出现了上面的提示“ORA-28000: the account is locked”&#xff0c;一开始其实并不知道是什么原因引起的问题&#xff0c;到后面才发现是登录错…

Kotlin 开发Android app(九):Android两大布局LinearLayout和RelativeLayout

Kotlin 的基本特性就先写到这里&#xff0c;我们这个系列的定位是基础&#xff0c;也就是能用就好&#xff0c;够用就好&#xff0c;我们不会举太多的例子&#xff0c;但是这些都是最经常用到的特性。 从这节开始就是Kotlin和android 进行结合&#xff0c;使用Kotlin进行安卓应…

基于Spring Cloud的架构使用学习升级之路

引言 Spring Cloud全家桶用了挺长时间了&#xff0c;很长一段时间都是基于已有的架构进行需求研发。今年成为团队技术负责人&#xff0c;承担了新的项目&#xff0c;这是很好的一个机会&#xff0c;于是开启了项目架构升级之路。 架构&#xff0c;是团队项目的根基。在一个团…

数字信号处理-5-傅里叶分析

1 傅里叶系数 傅里叶级数用公式如下&#xff1a; a0、a1、a2、a3…b1、b2、b3…叫做傅里叶系数。cosnx 或 sinnx 中的 n 对应着频率&#xff0c;决定 sin、cos 大小的系数是 an、bn。 2 傅里叶变换 步骤1 求傅里叶系数 从原波形 F(x) 中求傅里叶系数中的 a0、a1、a2、a3……

IPD-产品需求管理过程(1)

一、产品需求管理模型 在确定客户需求时,要考虑影响用户购买标准的八类基本需求($APPEALS),并基于客户视角进行详细分解,形成有针对性的产品。 1.1、需求管理业务流程 二、需求收集流程 2.1、需求收集的来源 路标规划:通过市场管理流程分析,落实到路标规划中的需求…

python中StringIO和BytesIO

1. 类文件对象 最常见的io操作是将磁盘中的文件读到内存以及内存内容写入文I件。还有一种内存和内存之间的IO&#xff0c;叫类文件对象&#xff0c;python中的StringIO和BytesIO就是类文件对象&#xff0c;通俗解释即&#xff1a;像操作文件一样在内存中操作字符串和二进制内容…

基于FPGA的SD卡的数据读写实现(SD NAND FLASH)

文章目录 1、存储芯片分类 2、NOR Flash 与 NAND Flash的区别 3、什么是SD卡&#xff1f; 4、什么是SD NAND&#xff1f; 5、SD NAND的控制时序 6、FPGA实现SD NAND读写 6.1、设计思路 6.2、仿真结果 6.3、实验结果 1、存储芯片分类 目前市面上的存储芯片&#xff0…

如何使用腾讯云提供的WordPress应用镜像搭建博客网站系统!

之前也有写过搭建WordPress的教程&#xff0c;如何使用轻量应用服务器搭建WordPress个人博客使用的是宝塔面板一件搭建的方式&#xff0c;但是还是有一些麻烦&#xff0c;这里我们之间使用腾讯云提供的WordPress应用镜像搭建&#xff0c;感兴趣小伙伴可以参考以下&#xff01; …

嵌入式分享合集108

一、PLC串口通讯的基本知识 这几天弄plc都要神经了 尤其西门子的 太烦了 s7200cn s7200smart s1200 编程软件都不一样~~服 &#xff0c; 然后接线也很烦 好了 正题 电气作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口 什么是串口通讯&#xff1f; 串口通讯的使…

阿里强势推出Spring源码进阶宝典:思维脑图+视频教程+笔记文档

这不是准备跳槽了&#xff0c;所以最近摸鱼比较多一些&#xff0c;老大默许了&#xff0c;我觉得我老大还是很好的。也在网上看了一些资料&#xff0c;但是&#xff0c;我发现很多讲解注解的时候&#xff0c;对于一些可以直接点击源码查看的内容讲解的占多数&#xff0c;但是授…

ThreadPoolExecutor 线程池参数详解,执行流程

线程池的使用: public static void main(String[] args) {ThreadFactory sThreadFactory new ThreadFactory() {private final AtomicInteger mCount new AtomicInteger(1);Overridepublic Thread newThread(Runnable r) {int andIncrement mCount.getAndIncrement();return…

成熟的汽车衡称重软件,应具备哪些品质

每台汽车都配电子计算机、打印机各一台&#xff0c;并配相应称重管理软件。制造厂商开发的最新软件应免费及时为买方升级。自动称重系统管理软件选用国内成熟产品&#xff0c;至少在国内有10套以上稳定运行业绩&#xff0c;需配一套容量为2KVA&#xff0c;220V的UPS电源至少满足…

Guava LongMath类

Guava LongMath类 Guava LongMath类 LongMath提供long基础类型的实用方法。 类声明 以下是com.google.common.math.LongMath类的声明&#xff1a; GwtCompatible(emulatedtrue) public final class LongMath extends Object 方法 方法继承 这个类继承了以下类方法&#xf…

二、数据库查询语句(多表查询篇)

二、数据库查询语句(多表查询篇) 1、笛卡尔积 ​ 前面涉及的都是单张表的查询&#xff0c;如果我们的查询条件相对比较复杂&#xff0c;需要涉及多张表进行查询&#xff0c;如果是两张无关的表联合查询&#xff0c;列出所有的可能的结果&#xff0c;如下图&#xff1a; 如果没…

网易云课堂-课程分析

需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 数据展示 一级类目 二级类目 三级类目 求和项:在学人数 平均值项:原始价格 平均值…

docker-compose配合Dockerfile使用

也就是在dockers-compose.yml文件中添加build 指定一下我的Dockerfile文件的路径 例如我的dockers-compose.yml文件在docker-compose文件夹下&#xff0c;而docker-compose文件夹与Dockerfile和项目的war包在同一级目录&#xff0c;也就是Dockerfile文件&#xff0c;在dockers-…

readme.md编写并生成html

目录1、Markdown教程2、生成html3、目录制作3.1 vscode Markdown Preview Enhanced 插件3.2 自定义侧边栏4、参考1、Markdown教程 Markdown 教程 | 菜鸟教程 2、生成html 通过 vscode 下载 Markdown Preview Enhanced、Markdown PDF等插件&#xff0c;就可以实现转化 3、目…