基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
无线传感器网络是不断发展的传感技术之一,也用于执行不同的任务。这些类型的网络在许多领域都是有益的,例如紧急情况,健康监测,环境控制,军事,工业,并且由于无线电范围,这些网络容易受到恶意用户和物理攻击。
📚2 运行结果



主函数部分代码:
% Clean memory and command window
clear,clc,close all
%% Parameters
N = 100; % Number of nodes
W = 200; % length of the network
L = 200; % width of the network
Ei = 2; % Initial energy of each node (joules)
CHpl = 3000; % Packet size for cluster head per round (bits)
p = 5/100; % desired percentage of cluster heads
R = 50; % Range for cluster
pMin = 10^-4; % Lowest possible CH_prop
num_rounds = 2000; % Max Number of simulated rounds
NonCHpl = 200; % Packet size for normal node per round (bits)
Tsetup = 4; % average Time in seconds taken in setup phase
Tss = 10; % average Time in seconds taken in steady state phase
Etrans = 1.0000e-05; % Energy for transmitting one bit
Erec = 1.0000e-05; % Energy for receiving one bit
Eagg = 1.0000e-07; % Data aggregation energy
Efs = 0.3400e-9; % Energy of free space model amplifier
% Position of sink
SX = W/2; SY = L/2;
%% First Leach algorithm %%%%%%%%%%%%%%%%%%%%%%%%%%
% 1st row: states of being a CH, 1:never been CH, 0:has been CH
% 2nd: x-position, 3rd: y-position
net = [ones(1,N);rand([1,N])*W;rand([1,N])*L];
% Preallocation for energy calculations
E = Ei*ones(1,N); % Energy left in each node
EH = zeros(1,num_rounds);
% Preallocation for dead nodes calculations
Ecrit = 0; % Critical energy left in node to call it alive
Ncrit = fix((95/100)*N); % Critical number for dead nodes to stop simulation
Dead = false(1,N); % Status of all nodes 0:Alive 1:Dead
DeadH = zeros(1,num_rounds);
% Preallocation for Bits sent calculations
BitsH = zeros(1,num_rounds);
figure('Position',[34 30 792 613]);
% Simulating for each round
for r=1:num_rounds % iterating on each round%%%% Choosing Clusters heads %%%%[net(1,:),CH] = Leach_algo(net(1,:),Dead,p,r);tmp = find(CH);for i=1:Nif isempty(net(2,CH))else[~,aa]=min(sqrt((net(2,CH) - net(2,i)).^2 + (net(3,CH) - net(3,i)).^2));net(1,i) = tmp(aa);endend%%%% Energy calculations %%%%EH(r) = sum(E); %get all energy left in all nodes% first CHnumClust = length(find(CH));D = sqrt((net(2,CH) - SX).^2 + (net(3,CH) - SY).^2);E(CH) = E(CH) - (((Etrans+Eagg)*CHpl)+(Efs*CHpl*(D.^ 2))+(NonCHpl*Erec*round(N/numClust)));% second rest of nodesrest = N-numClust-sum(double(Dead));mD = zeros(1,rest); tmp = net(2:3,~CH&~Dead);for i=1:rest, mD(i) = fun(tmp(1,i),tmp(2,i),net,CH,SX,SY); endE(~CH&~Dead) = E(~CH&~Dead) - ((NonCHpl*Etrans) + (Efs*CHpl*(mD.^2)) + ((Erec+Eagg)*CHpl));%finally updating alive status to all nodesE(Dead) = 0;Dead(E<=Ecrit) = true ; DeadH(r)=sum(double(Dead));%%%% sent bits %%%%BitsH(r+1) = BitsH(r) + numClust*CHpl + rest*NonCHpl;%%%% Showing updated net %%%%net = DrawNet(net,N,CH,Dead,SX,SY,1);title(['Normal nodes:Black ---- CH:Red ---- Dead:Empty circle --- round (',num2str(r),')']);drawnowif DeadH(r)>=Ncrit,break;end % Stop simulation when 5% or less is alive
end
close all
T_L = (Tsetup+Tss)*(0:r-1);
EH = EH(1:r); EHdis_L = (N*Ei)-EH;
DeadH = DeadH(1:r); AliveH_L = N-DeadH;
BitsH_L = BitsH(2:r+1);
%% Second HEED algorithm %%%%%%%%%%%%%%%%%%%%%%%
% 1st row: Clustering indexing
% 2nd: x-position, 3rd: y-position
net = [zeros(1,N);net(2:3,:)];
% calculating costs
cost = zeros(1,N);
for i=1:NDist = sqrt(((net(2,:)-net(2,i)).^2) + ((net(3,:)-net(3,i)).^2));Snbr = Dist <= R;cost(i) = sum(Dist(Snbr))/(sum(Snbr)-1);
end
🎉3 参考文献
[1]陆政. 基于改进蚁群算法的WSN路由研究[D].安徽理工大学,2018.
部分理论引用网络文献,若有侵权联系博主删除。
相关文章:
基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 无线传感器网络是不断发展的传感技术之一,也用于执行不同的任务。这些类型的网络在许多领域都是有益的,…...
ChatGPT镜像站收集【Free ChatGPT】(一)
文章目录 Free ChatGPT Site ListLast synced:BeiJingT 2023-04-18妙站站点列表Free ChatGPT Site List 这儿收集了一些免费好用的ChatGPT镜像站点 ⭐:使用不受限🔑:需要进行登录⛔:有限地使用次数后需提供key或进行充值❓ :未测试,未进行标注也为未测试Last synced:BeiJin…...
PHP面试宝典之Mysql数据库基础篇
字符类型: tinyint(4):占1个字节,4代表字段值长度,用0填充,搭配zero fill使用 有符号:取值范围 负128 ~ 正127; 无符号:取值范围 0 ~ 255; 默认无…...
4月记录总结
4/24 1.GBK12、16、24是指什么 GBK12、GBK16、GBK24是指不同的字体点阵大小,也就是字体的显示大小。在GBK编码中,一个汉字通常是由多个点阵组成的,其中点阵的大小就是字体的点阵大小。具体来说: GBK12:指每个汉字由12…...
每日学术速递4.29
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.LG 1.A Cookbook of Self-Supervised Learning 标题:自监督学习食谱 作者:Randall Balestriero, Mark Ibrahim, Vlad Sobal, Ari Morcos, Shashank Shekhar, Tom…...
整数在内存中的存储:原码、反码、补码 大小端字节序
本篇博客会讲解整数在内存中的存储形式,以及整数二进制的3种表示形式:原码、反码、补码,还有大小端的相关知识点。相信读完本篇博客,大家对内存的了解会上一个台阶。 注意:本篇博客讨论的是整数在内存中的存储&#x…...
【方法】 如何批量将RAR或其他压缩格式转换成ZIP?
压缩文件的格式有很多种,比如RAR、ZIP、7-Zip、CAB、ARJ、ACE、TAR、BZ2等等。因为需求不同,或者不同平台对上传的压缩包格式要求不同,我们往往需要把压缩文件进行格式转换,那压缩文件不同格式之间如何进行转换呢? 如…...
《道德经》
《道德经》是春秋时期老子(李耳)的哲学作品,又称《道德真经》、《老子》、《五千言》、《老子五千文》,是中国古代先秦诸子分家前的一部著作,是道家哲学思想的重要来源。 道德经分上下两篇,原文上篇《德经…...
ABI Research产业研究:ZiFiSense如何革新物流货物及运输包装追踪
“文章源自前沿科技研究机构ABI Research产业研究,重点介绍了ZETA LPWA协议开发公司纵行科技在业务发展、M-FSK调制技术以及ZETag云标签系列产品在物流货物追踪与包装管理等方面的应用分析,还分享了纵行科技ZETA技术在商业市场和生态系统方面的发展情况。…...
家乡特色推荐系统~java~mysql
摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&…...
二维码在设备点维一体化管理中的应用
随着科技发展,设备点维一体化管理体系应运而生,该管理体系的出现让设备维护保养变得更加高效精细化。 设备点维一体化管理体系以设备点检和维护保养为基础,通过日常、专业及精密点检,对点检测得的数据和设备给油脂保养情况进行统…...
基于simulink使用混合波束成形对射频毫米波发射器进行建模
一、前言 本例说明了一种使用66元件混合波束成形天线对32 GHz QPSK射频发射和接收系统进行系统级建模和仿真的方法。该系统包括射频缺陷、发射阵列辐射效应、窄带接收阵列和基带接收器,可校正系统损伤和消息解码。天线波束形成方向使用方位角和仰角定义,…...
面试官:v-model原理?
什么是v-model v-model是Vue框架中的一个指令,用来实现双向数据绑定。它能够在表单元素(如输入框、复选框等)和Vue实例中的数据属性之间建立起一条双向数据通道,使得当表单元素的值发生改变时,对应的数据属性也会相应…...
兰林:科技赋能健康产业 助力乡村振兴建设
万民健康创始人 万民智养中医创始人 万民星农CEO兰林 党建引领谋发展 , 旗帜下乡促振兴 。 乡村振兴,健康先行。自党的十八大以来,国家卫健委贯彻落实“以基层为重点”的党的卫生与健康工作方针,推动医疗卫生工作重心下移、资源下…...
小红书流量密码是什么,怎么掌握并运用
现在是个流量的社会,因为流量其实代表的就是收益,那面对一个流量时代,小红书现在而言毫无疑问是蓝海,品牌想要做好,自然要掌握平台流量密码。今天来和大家一起分享一下小红书流量密码有什么,流量密码可以用…...
FL Studio 2023中文高级版水果编曲软件下载
FL Studio 2023中文版是一款非常经典的音乐制作软件,这款软件除了可以为用户提供全面的音乐制作功能之外,还有丰富的主题和皮肤供用户选择,让用户不但做出的音乐具有自己的风格,连制作的音乐的过程也个性十足,非常适合…...
浅析如何写出高质量代码
你是否曾经为自己写的代码而感到懊恼?你是否想过如何才能写出高质量代码?那就不要错过这个话题!在这里,我们可以讨论什么是高质量代码,如何写出高质量代码等问题。无论你是初学者还是资深开发人员,都可以在…...
手把手教你 ,带你彻底掌握八大排序算法【数据结构】
文章目录 插入排序直接插入排序希尔排序 选择排序选择排序堆排序升序 交换排序冒泡排序快速排序递归hoare版本挖坑法前后指针版本 非递归Hoare挖坑法前后指针 快排的优化三数取中法选key递归到小的子区间时,可以考虑使用插入排序 归并排序递归实现非递归实现 排序算…...
第十一章 Transform组件(上)
本章节我们介绍Transform类,它是一个组件,每一个游戏对象有拥有该组件。因此,它值得我们重点介绍一下。Transform代表了游戏对象的世界变换,也就是移动,选择和缩放。 首先,我们先介绍它的属性(…...
aac音频怎么转mp3,这几个方法很简便
对于aac来说,其是一种高级音频编码,也是专门为声音数据设计的文件压缩格式。通常来说,aac与mp3有一些不同。aac使用了全新的算法进行编码的,其整体的效率较mp3更高一些。同时,aac格式的音质较好一些。但是,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
