基于无线传感器网络的节点分簇算法matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1节点分簇算法的基本概念

4.2节点分簇算法实现步骤

5.完整程序


1.程序功能描述

        对传感器网络进行分簇,在分簇过程中考量的有节点能量状态、节点拓扑位置、孤立节点删除等条件。与LEACH算法比较,对比如下几个方面指标:

1.网络从初始状态直到首个节点因能量耗尽而死亡的持续时间。

2.显示了随着时间的变化,一些节点开始死亡,整个网络的可用率下降的趋势情况。实验的终止条件为当网络可用节点下降至 75%时。

3.随时间变化时网络所有节点能量消耗情况。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

...............................................................................
    STATISTICS.COUNTCHS(ij+1) = CH_num;
    %簇内成员选择簇头模块(即簇的形成模块)
    for c=1:1:Cluster-1
        xr(c)=0;
    end
    yr = 0;
    zr = 0;
    for i=1:1:Node
        if Snode(i).type=='N' && Snode(i).E>0
           if Cluster-1>=1 
              min_dis         = sqrt( (Snode(i).xd-Snode(Node+1).xd)^2 + (Snode(i).yd-Snode(Node+1).yd)^2 );
              min_dis_cluster = 0;
              for c=1:Cluster-1
                  temp = min(min_dis,sqrt((Snode(i).xd-C(c).xd)^2 + (Snode(i).yd-C(c).yd)^2 ));
                  if temp<min_dis
                     min_dis         = temp;
                     min_dis_cluster = c;
                     xr(c)           = xr(c)+1;
                  end
              end
              if(min_dis_cluster~=0)  
                  %簇内节点(发送4000bit数据)能量消耗
                  if min_dis > do
                     Snode(i).E=Snode(i).E - (ETX*(NByte*Byte) + Emp*NByte*Byte*(min_dis * min_dis * min_dis * min_dis)); 
                  end
                  if min_dis <= do
                     Snode(i).E=Snode(i).E -  ETX*(NByte*Byte) + Efs*NByte*Byte*( min_dis * min_dis); 
                  end
                  ch_packet                      = ch_packet+1;
              end
              %簇头的能量消耗
              Snode(i).min_dis               = min_dis;
              Snode(i).min_dis_cluster       = min_dis_cluster;
           else
              yr      = yr+1;
              if min_dis>do
                 Snode(i).E=Snode(i).E-(ETX*(NByte*Byte) + Emp*NByte*Byte*( min_dis * min_dis * min_dis * min_dis)); 
              end
              if min_dis<=do
                 Snode(i).E=Snode(i).E-(ETX*(NByte*Byte) + Efs*NByte*Byte*( min_dis * min_dis)); 
              end
              bs_packet=bs_packet+1;
           end
        end
    end
    
end

LIVEs = Node - STATISTICS.DEAD;
ind1  = find(abs(LIVEs - 199)<5);%一个死亡节点
ind2  = find(abs(LIVEs - 150)<5);%存活75%节点
T1    = ind1(1);
T2    = ind2(1);

figure
plot(LIVEs,'b');
hold on
plot(T1*ones(1,200),0:199,'r');
hold on
plot(1:T1,199*ones(size([1:T1])),'r');
hold on
plot(T2*ones(1,151),0:150,'r');
hold on
plot(1:T2,150*ones(size([1:T2])),'r');
hold on
xlabel('x(time)');
ylabel('y(live)');
title('首个节点因能量耗尽而死亡的持续时间');
axis([0,500,0,220]);
text(T1,199,['1个死亡节点']);
text(T2,150,['25%死亡节点']);

figure
plot(Egc,'b');
xlabel('x(time)');
ylabel('y(consumption)');
title('LEACH的网络能量消耗对比');
axis([0,500,0,800]);
save R0.mat Egc LIVEs T1 T2
12_031m

4.本算法原理

       无线传感器网络(Wireless Sensor Networks, WSNs)由大量部署在监测区域内的微型传感器节点组成,通过无线通信方式形成一个多跳的自组织网络系统。其目的是协作地感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。在WSNs中,节点分簇是一种重要的网络拓扑控制方法,能有效提高网络的可扩展性、能效和生命周期。

4.1节点分簇算法的基本概念


       节点分簇是将网络中的节点划分为不同的簇,每个簇由一个簇头(Cluster Head, CH)和多个簇成员(Cluster Members, CMs)组成。簇头负责管理和协调簇内的成员节点,同时负责与其他簇头或基站(Base Station, BS)进行通信。通过分簇,可以实现以下目标:

能量高效:簇头可以进行数据融合,减少传输的数据量,从而节省能量。
可扩展性:簇结构可以适应网络规模的变化。
提高网络生命周期:通过轮换簇头的方式,可以均衡网络中的能量消耗。

4.2节点分簇算法实现步骤

       整个网络有一个汇聚节点(Sink节点),能量足够大,相当于基站,其功率足以发送信息至全网节点,Sink节点和簇头信息交换,整个网络共有n个节点。

(1)  在初始状态下,网内各节点向Sink节点发送能量状态信息。

(2)  汇聚节点收到各节点的能量状态信息后,计算平均能量、最大能量,据此标识各节点为强节点或弱节点。若节点i的能量E(i)≥Eav,则标识为强节点,其标识S(i)=1;若E(i)<Eav,则标识为若节点,其标识S(i)=0。

(4)  具有最大权值的未加入簇的强节点声明为簇头,利用欧氏距离分簇,重复这一过程,直到所有的节点都被分配入簇。仅当已无强节点剩余时,弱节点方能担当簇头的备选对象。

(5)  若只有单一簇头而没有簇成员,则该簇头认为是异常孤立节点,直接删除。

(6)  经过一轮的时间段,重复(2)~(6)过程以开始下一轮的分簇。

5.完整程序

VVV

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章 无线传感器网络概述 6概述 61.1 NS-2 61.2 OPNET 61.3 SensorSim 71.4 EmStar 71.5 GloMoSim 71.6 TOSSIM 71.7 PowerTOSSIM 8第二章 OMNET++简介 9概述 92.1 OMNeT++框架 92.1.1 OMNeT++组成 92.1.2 OMNeT++结构 102.2 OMNeT++的安装 112.3 OMNeT++语法 122.3.1 NED语言 122.3.1.1 NED总概述 122.3.1.2 Ned描述的组件 132.3.1.3函数 152.3.2 简单模块 172.3.2.1 OMNET++中离散事件 172.3.2.2 包传输模型 172.3.2.3定义简单模块 182.3.2.4 简单模块中的主要成员函数 202.3.3 消息 212.3.3.1 cMessage类 212.3.3.2 消息定义 212.3.3.3 消息的收发 222.3.4 模块参数、门及连接的访问 232.3.4.1消息参数的访问 232.3.4.2门和连接的访问 242.3.4.3门的传输状态 262.3.3.4连接的状态 262.4 仿真过程 272.5 配置文件omnetpp.ini 282.6 结果分析工具 292.6.1 矢量描绘工具Plove 292.6.2 标量工具Scalar 2927、结束语 30第三章 物理层仿真(信道) 323.1 UWB的基础知识 323.1.1 UWB信号的应用背景 323.1.2 UWB信号的定义 323.1.3 UWB的脉冲生成方式(高斯脉冲,非高斯脉冲) 343.1.4 UWB的调制方式 343.1.5 用功率控制多址接入方法来进行链路的建立控制 363.2 用OMNeT++对UWB进行仿真 373.2.1 算法仿真的概述 373.2.2 算法的具体流程 393.2.3 算法的主要代码 413.2.4 仿真结果分析 583.2.5 应用前景 58参考文献 59第四章 MAC层仿真 60概述 604.1 无线传感器网络MAC层特性及分类 604.1.1 无线信道特性 604.1.2 MAC 设计特性分析 614.1.3 无线传感器网络典型MAC协议的分类 614.2 基于随机竞争的MAC协议 624.2.1 S-MAC协议[12] 624.2.2 T-MAC协议 644.2.3 AC-MAC协议 654.3 基于时分复用的MAC协议 654.3.1 D-MAC协议 654.3.2 TRAMA协议 664.3.3 AI-LMAC协议 664.4 其他类型的MAC协议 674.4.1 SMACS/EAR协议 674.4.2 基于CDMA技术的MAC协议 674.4.3 DCC-MAC 684.5 基于OMNeT++的MAC层协议仿真 694.5.1 S-MAC协议的仿真 694.5.2 S-MAC协议流程图 704.5.3 S-MAC协议的分析 714.6 小结 86参考文献 86第五章 网络仿真 88概述 885.1 无线传感器网络路由协议研究 885.1.1 无线传感器网络协议分类 885.1.2无线传感器网络中平面路由 905.1.3无线传感器网络中层次化路由 915.1.4 经典算法的OMNET仿真 935.2 无线传感器网络路由协议研究的发展趋势 1045.3 无线传感器网络层路由协议与OMNET++仿真 1045.3.1 无线传感器网络层路由与OMNET++仿真的基本概念[19] 1045.3.1.1 传感器网络的体系结构 1055.3.1.1.1 传感节点的物理结构 1055.3.1.1.2 传感器网络的体系结构与网络模型 1065.3.2 传感器网络层路由协议的基本概念 1065.3.2.1 网络通信模式[28] 1065.3.2.1.1 单播: 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件算法开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值