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

news/2024/10/23 7:34:40/

    目录

💥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 
inthe 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:ntext(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:ninitEnergy=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 periodcountCHs=0;             %Number of CH in per period%counter for bit transmitted to Bases Station and Cluster Headssrp=0;          %counter number of sent routing packetsrrp=0;          %counter number of receive routing packetssdp=0;          %counter number of sent data packets to sinkrdp=0;          %counter number of receive data packets by sink%initialization per roundSRP(r+1)=srp;RRP(r+1)=rrp;  SDP(r+1)=sdp;RDP(r+1)=rdp;   pause(1)    %pause simulationhold 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:nSensors(i).G=0;endend

🎉3 参考文献

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

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


http://www.ppmy.cn/news/70432.html

相关文章

修为 - 人生感悟

人不为己,天诛地灭。 说明一下,上面说的为己,指的是人的修为。 一个人,在成年之后,需要不断的对自己进行修为的提高。在经历了世事之后,对人生的感悟要不断地进行总结,提高自己的修为。 老祖宗给…

基于ArcGIS实现陕西省1:250000比例尺地形图分幅和编号

1地形图的分幅与编号原理 我国1:1000000地形图的分幅采用国际1:1000000地图分幅标准,而其他比例尺地形图分幅以1:1000000比例尺地形图为基准进行分幅。每幅1:1000000地形图范围是经差6、纬差4;纬度60~ 76之间经差12、纬差4;纬度76~ 88之间经…

H5性能测试怎么做?这些关键指标你得搞清楚

目录 01、Http相关 02、组件是否压缩 03、图片格式和大小是否合适 04、CSS放在顶部 05、JS放在底部 06、JS &CSS压缩 07、是否添加缓存 08、避免非200返回值 09、使用CDN 03、WebView相关 学习资源分享 软件测试面试小程序 01、Http相关 01、Http请求个数 有…

调用系统分享图片,多图到微信二次分享无效解决

直接上代码&#xff1a;List<String> files为文件路径列表public static void shareMoreWxFile(Context context, List<String> files) {try {ArrayList uriArrayList new ArrayList<Uri>();for (String path : files) {File file new File(path);if (file…

JavaWeb13-JavaScript 开发利器之 jQuery-02

1. jQuery 的 DOM 操作 1.1 查找节点, 修改属性 查找属性节点: 查找到所需要的元素之后, 可以调用 jQuery 对象的 attr() 方法来获取它的各种属性值 查找节点-应用实例 element-attribute.html <!DOCTYPE html> <html lang"en"> <head><met…

Spark常见报错

一.org.apache.spark.shuffle.FetchFailedException: Connection from /xxx:7337 closed 背景&#xff1a;shuffle过程包括shuffle read和shuffle write两个过程。对于spark on yarn&#xff0c;shuffle write是container写数据到本地磁盘(路径由core-site.xml中hadoop.tmp.di…

milvus bootcamp FAST API使用简记

0 引言 前面写了几篇记录&#xff0c;都是在记录解决了哪些基本问题。在经过一系列铺垫之后&#xff0c;终于又来到milvus bootcamp这个示例项目面前&#xff0c;继续摸索其如何使用。 1 milvus版本升级 此bootcamp中提供的milvus的docker版本过低&#xff0c;因此我又从其他…

数据结构与算法:编程中的基本功

I. 数据结构与算法的重要性 1.1 数据结构与算法的定义 数据结构,如其名,是用来存储和组织数据的结构。它们可以用于实现高效的数据访问和操作。常见的数据结构包括数组、链表、栈、队列、哈希表、树和图等。 算法,是为解决特定问题而详细规定的一系列操作步骤。它可以用于…