一种基于非均匀分簇和建立簇间路由的算法的无线传感器网络路由协议(Matlab代码实现)

news2024/11/23 8:27:05

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

本文准备了一种路由方法,该方法使传感器通过有效地使用能量将数据从发送方加载到接收器,因为它在 LEACH 协议中使用簇头形成。作为接收器的“水槽”在整个范围内从一个地方随机移动到另一个地方。

传感器节点最初是在给定范围内和相同能量中随机创建的,经过几轮后,传感器的能量发生变化,然后根据该能量选择集群头 ,死节点以红色表示。我们可以在使用寿命和平均能耗等两个因素中比较现有系统和我们提出的系统进行结果分析​。​

📚2 运行结果

主函数部分代码:

​
clc;
clear;
close all;
warning off all;
tic;
​
%% Create sensor nodes, Set Parameters and Create Energy Model 
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
 Initial Parameters 
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%
n=100;                                  %
Number of Nodes 
in
 the field[Area,Model]=setParameters(n);         %Set Parameters Sensors and Network
​
%%%%%%%%%%%%%%%%%%%%%%%%% configuration Sensors %%%%%%%%%%%%%%%%%%%%
CreateRandomSen(Model,Area);            %
Create a random scenarioload Locations                          %Load sensor Location
Sensors=ConfigureSensors(Model,n,X,Y);
Sender=n+1;     %Sink
TotalCH=[];
ploter(Sensors,Model,Sender,TotalCH);                  %Plot sensors
for i=1:n
    text(Sensors(i).xd,Sensors(i).yd,int2str(i),'FontSize',10);
end
plot(Sensors(Sender).xd,Sensors(Sender).yd,'w*','MarkerSize',15);
​
%%%%%%%%%%%%%%%%%%%%%%%%%% Parameters initialization %%%%%%%%%%%%%%%%
countCHs=0;         %counter for CHs
flag_first_dead=0;  %flag_first_dead
deadNum=0;          %Number of dead nodes
​
initEnergy=0;       %Initial Energy
for i=1:n
      initEnergy=Sensors(i).E+initEnergy;
end
​
SRP=zeros(1,Model.rmax);    %number of sent routing packets
RRP=zeros(1,Model.rmax);    %number of receive routing packets
SDP=zeros(1,Model.rmax);    %number of sent data packets 
RDP=zeros(1,Model.rmax);    %number of receive data packets 
​
Sum_DEAD=zeros(1,Model.rmax);
CLUSTERHS=zeros(1,Model.rmax);
AllSensorEnergy=zeros(1,Model.rmax);
​
%%%%%%%%%%%%%%%%%%%%%%%%% Start Simulation %%%%%%%%%%%%%%%%%%%%%%%%%
global srp rrp sdp rdp
srp=0;          %counter number of sent routing packets
rrp=0;          %counter number of receive routing packets
sdp=0;          %counter number of sent data packets 
rdp=0;          %counter number of receive data packets 
​
%Sink broadcast start message to all nodes
​
Receiver=1:n;   %All nodes
Sensors=SendReceivePackets(Sensors,Model,Sender,'Hello',Receiver);
​
% All sensor send location information to Sink .
 Sensors=disToSink(Sensors,Model);
% Sender=1:n;     %All nodes
% Receiver=n+1;   %Sink
% Sensors=SendReceivePackets(Sensors,Model,Sender,'Hello',Receiver);
​
%Save metrics
SRP(1)=srp;
RRP(1)=rrp;  
SDP(1)=sdp;
RDP(1)=rdp;
​
%% Main loop program
for r=1:1:Model.rmax
​
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
 Initialization 
%%%
%%%
%%%
%%%
%%%
%%%
%%%
    %This section Operate for each epoch   
    member=[];              %Member of each cluster in per period
    countCHs=0;             %Number of CH in per period
    %counter for bit transmitted to Bases Station and Cluster Heads
    srp=0;          %counter number of sent routing packets
    rrp=0;          %counter number of receive routing packets
    sdp=0;          %counter number of sent data packets to sink
    rdp=0;          %counter number of receive data packets by sink
    %initialization per round
    SRP(r+1)=srp;
    RRP(r+1)=rrp;  
    SDP(r+1)=sdp;
    RDP(r+1)=rdp;   
    pause(1)    %pause simulation
    hold off;       %clear figure
    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Sensors=resetSensors(Sensors,Model);
    %allow to sensor to become cluster-head. LEACH Algorithm  
    AroundClear=10;
    if(mod(r,AroundClear)==0) 
        for i=1:1:n
            Sensors(i).G=0;
        end
    end

🎉3 参考文献

[1]马震. 关于无线传感器网络节能的若干关键问题研究[D].北京交通大学,2009.

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

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

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

相关文章

安装Ubuntu18.04双系统、干净卸载,并在Ubuntu系统中安装CARLA模拟器

Ubuntu系统安装 Ubuntu系统安装参照流程 Ubuntu 双系统安装流程_ubuntu双系统_地球被支点撬走啦的博客-CSDN博客 Ubuntu系统卸载 1.将开机启动项设置默认为Windows,进入BIOS设置界面调整BootDevice中Windows和Ubuntu的顺序,将Windows调整在Ubuntu前边…

封神之作!超火Java面试突击手册一周内转发2.4W次,最终被所有大厂封杀

前言 本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 本来想将文件上传到github上,但由于文件太大有的都无法显示…

OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块

文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…

研发工程师玩转Kubernetes——部署应用

Kubernetes是容器的管理编排工具,而容器则是程序的载体。我们先在Docker上部署应用,然后再在kubernetes上部署,并对它们进行对比学习。 Docker部署应用 查看运行中的容器 docker ps可以看到下面的表头,此时没有一个运行中的容器…

图片压缩指定大小,让您的图片高效而优美

在现代社会中,图片是我们不可或缺的一部分,在各行业中都有着非常重要的作用。但是,大尺寸的图片不仅会占用过多的存储空间,还会导致网页或应用程序的加载速度变慢。因此,将图片压缩到指定大小是一个必要的步骤。 图片…

文档管理-gitlab+markdown网页插件

特点 使用git进行版本管理,本地编辑使用Typora。使用gitlab进行权限管理可以在线阅读通过Markdown在线阅读插件实现,可显示目录显示与链接跳转,界面优于自带的wiki。 与其他方式对比 gitlab的wiki:显示界面效果不好&#xff0c…

书籍《脆弱的繁华》读后感

前几周看完了《脆弱的繁华》这本书,这本书当时是公司组织的一次活动,邀请书籍原作者,张程对书籍进行了讲解,同时这本书也是在此次活动中免费赠送的,作者对于书籍做了一些说明,并且对一些问题也进行了探讨&a…

Azkaban 集群模式部署

文章目录 Azkaban 集群模式部署一、配置Mysql Azkaban 集群模式部署 将这三个包,上传到hadoop102,第一个是azkaban需要的建表语句 这三个解压到 /opt 目录下 输入命令:tar -zxvf azkaban-db-3.84.4.tar.gz -C /opt/ 输入命令:ta…

spring注册beanDefinition

代码使用springboot测试 1.ConfigurationClassPostProcessor 构造context时会创建reader。 构造reader时会创建processor。 最关键是第一个,类型是ConfigurationClassPostProcessor。 AbstractApplicationContext类的refresh方法的invokeBeanFactoryPostProcesso…

Node输出日志的正确姿势

背景 每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助调试程序,比如System.out.println或console.log。解决后,就会将这些语句删除,周而复始。 但是通过系统日志输出的日志格式都是这种: // output console.log(&quo…

TensoRF-张量辐射场论文笔记

TensoRF-张量辐射场论文笔记_什度学习的博客-CSDN博客 注释代码: https://github.com/xunull/read-TensoRF 官方源码:https://github.com/apchenstu/TensoRF Install environment conda create -n TensoRF python3.8 conda activate TensoRF pip install torch t…

HTTPTomcatServlet学习

HTTP&Tomcat 今日目标: 了解JavaWeb开发的技术栈理解HTTP协议和HTTP请求与响应数据的格式掌握Tomcat的使用掌握在IDEA中使用Tomcat插件理解Servlet的执行流程和生命周期掌握Servlet的使用和相关配置 1. Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&…

正点原子串口算法解析-定时器+数组长度判断

源码 片段1 片段2 片段3 解析 片段1的作用 开启一个10ms的定时器 片段2的作用 每10毫秒置位接收标志位且关闭定时器 片段3的作用和详解 代码第38行 用res变量接收数据 从代码第39行开始看 接收标志位不允许接收(不为0) 下面的所有代码都不会运行 如果接收标志为允许接收…

CRM管理系统如何选型?分别有什么作用?

CRM管理系统通常指CRM系统,中文名称是客户关系管理,起源于上世纪80年代的“接触管理”,它能确保客户在销售、营销、服务上的每一步交互都顺利高效,带动业绩的提升。今天就来说一说CRM管理系统是什么(从使用到选型&…

【HarmonyOS】元服务混淆打包以及反混淆mapping文件生成

大家所知的Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,从而可以减少包体积。 一般应用release发布的时候都会选择开启混淆,防止应用被反编译…

OpenPCDet系列 | 5.4.3 DenseHead中的AxisAlignedTargetAssigner正负样本分配模块

文章目录 AxisAlignedTargetAssigner模块assign_targets处理流程1. 提取有效gt信息2. 提取需要处理的类别信息3. 帧信息整合4. 批信息整合 assign_targets_single处理流程1. 构建每个anchor的正负样本label分配2. 构建每个anchor的正负样本编码信息bbox_targets分配3. 构建每个…

NMEA 2000总线连接器组成类别及功能

NMEA 2000总线介绍 连接的所有设备都能彼此通信 NMEA 2000总线系统是一种数字网络,可连接船上各种系统和设备,例如雷达、GPS、深度传感器、气象环境和船体控制系统。 NMEA 2000总线的工作方式 NMEA 2000总线通过总线连接器连接各个设备和系统&#xf…

HANTS时间序列滤波算法的MATLAB实现

本文介绍在MATLAB中,实现基于HANTS算法(时间序列谐波分析法)的长时间序列数据去噪、重建、填补的详细方法。 HANTS(Harmonic Analysis of Time Series)是一种用于时间序列分析和插值的算法。它基于谐波分析原理&#x…

linux 常用命令awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 AWK用法 awk 用法:awk pattern {action} files 1.RS, ORS, F…

CFS三层内网靶机渗透

目录 一、靶场框架 靶场搭建: 二、渗透过程 三、总结 靶场介绍: 三层内网靶场,共有三个网段,分别为75网段(公网网段)、22网段(内网)、33网段(内网) 靶…