基于花朵授粉算法的无线传感器网络部署优化附Matlab代码

news2024/11/18 7:37:28

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

随着无线传感器网络(Wireless Sensor Network,WSN)技术的不断发展,越来越多的WSN技术已经应用到了智能家居,智慧交通等领域.WSN属于一种重要的ad hoc网络,它由很多具有感知和数据处理能力的传感节点以自组织或多跳的方式搭建.目前,WSN的研究工作主要集中在网络技术和通信协议方面,关于传感器网络部署优化的研究还很少.在空旷的农场或森林部署WSN,一般做法是通过飞机进行高空随机抛撒.但是,这种方法可能出现大量的多余节点和覆盖漏洞.因此,如何用尽量少的传感节点感知最大的区域是WSN部署优化中一个亟待研究的问题.在广阔的农场环境或森林中,需要准备许多传感节点,节点大部分靠电池供电,但是,电池能量是有限的,并且无法更换.因此,如何使用相同数量的节点,达到最长的网络寿命成为WSN部署优化中另一个倍受瞩目的问题.

⛄ 部分代码

%==========================================================================

% 算法说明:荧火虫算法(GSO:Glowworm swarm optimisation:a new method for optimising mutlti-modal functions)

% =========================================================================

clc

clear;%清除变量

close all;

% ================================初始化开始================================

domx=[-3,3;-3,3];%定义域

%domx=[-2.048,2.048;-2.048,2.048];

rho   =0.4; %荧光素挥发因子

gamma =0.6; %适应度提取比例

beta  =0.08;%邻域变化率

nt    =5;   %邻域阀值(邻域荧火虫数)

s     =0.01;%步长

iot0  =5;   %荧光素浓度

rs    =3;   %3;%感知半径

r0    =1.5; %3;%决策半径

% ================================初始化结束================================

% ===============================分配空间开始===============================

m =size(domx,1);    %函数空间维数

n =50;              %萤火虫个数

gaddress =zeros(n,m);%分配荧火虫地址空间

ioti     =zeros(n,1);    %分配荧光素存放空间

rdi      =zeros(n,1);     %分配荧火虫决策半径存放空间

% ===============================分配空间结束===============================

figure(1);

sign_first = 1;

step_track = 0;

x = -3:0.1:3;

y = -3:0.1:3;

[xx,yy] = meshgrid(x,y);

j1=3*(1-xx).^2.*exp(-(xx.^2+(yy+1).^2));

j2=10*(xx./5-xx.^3-yy.^5).*exp(-(xx.^2+yy.^2));

j3=(1/3)*exp(-((xx+1).^2+yy));

zz=j1-j2-j3;

figure(1);

surf(xx,yy,zz);

hold on

% ===========================荧火虫常量初始化开始============================

%1.初始化地址

for i=1:m

    gaddress(:,i)=domx(i,1)+(domx(i,2)-domx(i,1))*rand(n,1);

end

gvalue = maxfun(gaddress);

gbest_old = max(gvalue);

%

%可视化

plot3(gaddress(:,1),gaddress(:,2),gvalue(:),'b*');

drawnow;

pause(1);

%

%2.初始化荧光素

ioti(:,1)=iot0;

%3.初始化决策半径

rdi(:,1)=r0;

iter_max=500;%最大迭代次数

t=1;%迭代累计

unchange = 0;

% ===========================荧火虫常量初始化结束============================

% =============================iter_max迭代开始=============================

while(t<=iter_max) && (unchange<60)

    %1.更新荧光素

    ioti=max(0,(1-rho)*ioti+gamma*maxfun(gaddress));

    %2.各荧火虫移动过程开始

    for i=1:n

        %2.1 决策半径内找更优点

        Nit=[];%存放荧火虫序号

        for j=1:n

            if (norm(gaddress(j,:)-gaddress(i,:))<rdi(i))&&(ioti(i,1)<ioti(j,1))

                Nit(numel(Nit)+1)=j;

            end

        end

        %2.2 找下一步移动的点开始

        if length(Nit)>0 %先判断Nit个数不为0

            Nitioti=ioti(Nit,1);%选出Nit荧光素

            SumNitioti=sum(Nitioti);%Nit荧光素和

            Molecular=Nitioti-ioti(i,1);%分子

            Denominator=SumNitioti-ioti(i,1);%分母

            Pij=Molecular./Denominator;%计算Nit各元素被选择概率

            Pij=cumsum(Pij);%累计

            Pij=Pij./Pij(end);%归一化

            Pos=find(rand<Pij);%确定位置

            j=Nit(Pos(1));%确定j的位置

            %荧火虫i向j移动一小步

            gaddress(i,:)=gaddress(i,:)+s*(gaddress(j,:)-gaddress(i,:))/norm(gaddress(j,:)-gaddress(i,:));

            gaddress(i,:)=range(gaddress(i,:),domx);%限制范围

            

            %

            %更新决策半径

            rdi(i)=rdi(i)+beta*(nt-length(Nit));

            if rdi(i,1)<0

                rdi(i,1)=0;

            end

            if rdi(i,1)>rs

                rdi(i,1)=rs;

⛄ 运行结果

⛄ 参考文献

[1]郎健. 无线传感器网络部署优化研究与仿真[D]. 北京工业大学.

[2]王振东, 谢华茂, 胡中栋,等. 改进花朵授粉算法的无线传感器网络部署优化[J]. 系统仿真学报, 2021.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

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

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

相关文章

hadoop集群安装(二):克隆服务器集群并免密

文章目录说明分享集群构建集群规划角色划分配置主机名、ip和主机名映射ssh免密总结说明 已 上篇 创建模型虚拟机为基础构建hadoop集群 分享 大数据博客列表开发记录汇总个人java工具库 项目https://gitee.com/wangzonghui/object-tool 包含json、string、集合、excel、zip压缩…

美食杰项目 -- 个人主页(四)

目录前言&#xff1a;具体实现思路&#xff1a;步骤&#xff1a;1. 展示美食杰菜谱大全效果2. 引入element-ui3. 代码总结&#xff1a;前言&#xff1a; 本文给大家讲解&#xff0c;美食杰项目中 实现个人主页的效果&#xff0c;和具体代码。 具体实现思路&#xff1a; 判断是…

如何复用ijkplayer库实现ffmpeg的功能

ijkplayer库介绍 现在ijkplayer播放器应用的非常广泛&#xff0c;很多播放器基本上都是基于ijkplayer二次迭代开发的&#xff0c;众所周知&#xff0c;ijkplayer是基于ffplay的&#xff0c;所以要使用ijkplayer&#xff0c;就必须使用三个so库。 jeffmonyJeffMonydeMacBook-P…

MySQL Server 和 MySQL Workbench安装

对于开发人员来说&#xff0c;只需要安装 MySQL Server 和 MySQL Workbench 这两个软件&#xff0c;就能满足开发的需要了。 ⚫ MySQL Server&#xff1a;专门用来提供数据存储和服务的软件。 ⚫ MySQL Workbench&#xff1a;可视化的 MySQL 管理工具&#xff0c;通过它&#…

会议信息管理系统SSM记录(四)

目录&#xff1a; &#xff08;1&#xff09;部门管理&#xff1a;查询-添加-删除 &#xff08;2&#xff09;部门管理&#xff1a;修改 &#xff08;1&#xff09;部门管理&#xff1a;查询-添加-删除 在DepartmentController中添加方法&#xff1a; 这里getAllDeps方法上篇…

Charles模拟弱网

Charles模拟弱网&#xff0c;适用PC端和移动端&#xff08;IOS&#xff0f;Android&#xff09; 1.打开Proxy->Throttle Settings&#xff0c;以charles 4.2版本为例 2.出现Throttling的界面 3.预设那里有Charles常用的网络设置模拟的数据&#xff0c;根据需要自己选择即可…

【js学习】闭包理解

闭包原理 js使用的是词法作用域&#xff0c;词法作用域的意味着函数执行使用的是定义函数时生效的变量作用域。即函数执行时&#xff0c;里面的参数访问跟执行函数时的作用域无关。如下代码2所示最后输出的是local scope。 闭包定义&#xff1a;js函数对象的内部状态不仅要包…

神经网络的基本工作原理——机器学习

目录 ​编辑 一、实验内容 二、实验过程 1、算法思想 2、算法原理 3、算法分析 三、源程序代码 四、运行结果及分析 五、实验总结 一、实验内容 掌握神经元细胞的数学模型&#xff1b;理解并掌握神经网络的训练过程&#xff1b;理解并掌握神经网络中的矩阵运算&#xff…

Neo4j入门实战

1.介绍 2.实战 Neo4j的sql语句 1.创建多个节点 CREATE (:student {name:小张,age:20}),(:student {name:彭莎丽,age:18})2.匹配节点将节点删除 这样删除是将student中的条件节点删除——>会变成空白节点 match (m:student {name:"Fairy同学"}) remove m:stu…

Docker数据管理

目录 一、数据卷 二、数据卷容器 三、容器互联 管理 Docker容器中数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09;数据卷容器&#xff08;DataVolumes Containers&#xff09; 一、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容…

设计模式之美——基于接口编程

抽象类在被继承时体现的是 is-a 关系&#xff0c;接口在被实现时体现的是 can-do 关系 例如&#xff0c;Plane can fly. Bird can fly&#xff0c;应该把 fly 定义成一个接口。 – 参考 《码出自效Java 开发手册》 函数的命名不能暴露任何实现细节。比如&#xff0c; uploadT…

集合类ArrayList的扩容机制详解

ArrayList类的内部对构造方法进行了重载&#xff0c;提供了无参构造和有参构造两种构造方法。在ArrayList类的内部维护了一个elementData数组用来存放添加的对象。(关于transient关键字&#xff1a;该关键字修饰的属性&#xff0c;不会进行串行化、序列化)。 目录 无参构造扩容…

胡编乱造的自我介绍

写在前面&#xff1a;这篇文章的内容纯属胡编乱造 切勿信以为真。 一、 姓&#xff1a;&#xff08;Black) 布莱克 名&#xff1a;&#xff08;Sirius) 天狼星 中间名&#xff1a;(Orion) 奥莱恩 结束&#xff01; 二、于 2022年3月 入读清华大学信息技术系硕士 &#xff01; 结…

harbor 安装

harbor 安装一.离线安装helm1.下载安装包&#xff0c;上传到服务器2.解压4.验证二.安装harbor1.导入 Harbor源2.下载 Harbor Helm目录3.解压缩4.修改 Harbor Values文件5.部署 Harbor6.访问 Harbor7.验证8.修改daemon.json9.登录Harbor、并push镜像验证10.登录Harbor页面验证是…

基站交直流配电多回路无线智能电量采集监控装置

【摘要】介绍了安科瑞两款多回路无线智能电量采集监控装置&#xff0c;可应用于基站的交直流配电监控、低压出线开关柜集中监控、末端配电箱等集成电力参数监测、电能计量、环境温湿度监测以及无线传输的各类应用场景。 【关键词】无线监控&#xff1b;多回路监控&#xff1b;铁…

OpenFeign源码2-Bean注册过程和调用过程

0. 环境 nacos版本&#xff1a;1.4.1Spring Cloud : Hoxton.SR9&#xff08;没用2020.0.2版本后面说明&#xff09;Spring Boot &#xff1a;2.4.4Spring Cloud alibaba: 2.2.5.RELEASESpring Cloud openFeign 2.2.2.RELEASE 测试代码&#xff1a;github.com/hsfxuebao/s… 20…

深入理解java虚拟机:虚拟机类加载机制(1)

文章目录1. 类加载的时机2. 类加载的过程2.1 加载2.2 验证2.3 准备2.4 解析2.5 初始化1. 类加载的时机 类从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#xff0c;它的整个生命周期包括了&#xff1a; 加载&#xff08;Loading&#xff09;验证&#xff08;Verif…

计算机网络-应用层(文件传输协议(FTP协议),电子邮件系统(SMTP协议,MIME,POP3,IMAP协议))

文章目录1. 文件传输协议2. 电子邮件系统1. 文件传输协议 文件传输协议&#xff1a; 文件传送协议FTP&#xff1a;提供不同种类主机系统&#xff08;硬、软件体系等都可以不同&#xff09;之间的文件传输能力。简单文件传送协议TFTP&#xff1a;使用于UDP环境&#xff0c;代码…

MyBatis-Plus入门案例

MybatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提供效率。 开发方式 基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlus SpringBoot它能快速构建Spring开发环境用以整合其…

设计模式之美——看似面向对象,实则面向过程

常见的编程范式或者说编程风格有三种&#xff0c;面向过程编程、面向对象编程、函数式编程&#xff0c;而面向对象编程又是这其中最主流的编程范式。现如今&#xff0c;大部分编程语言都是面向对象编程语言&#xff0c;大部分软件都是基于面向对象编程这种编程范式来开发的。 …