m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量

简介: m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量

1.算法仿真效果
matlab2022a仿真结果如下:
64659acdfcf913b9695d48f05e9be552_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
93fc4b727103133c9f9df798997c85a2_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
97019c5a3f3492cce20ab826bfa8fc3c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
01add0789e98ca6fadf971ad3b08f61f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
7af9c9d95011d9da12c86cdf2a1d676d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   AODV是一种应用于无线网状网络的路由协议。它源节点需要发送数据时才进行路由发现。当没有数据发送请求时并不执行。在路由发现过程中首先检查路由表中是否存在从源节点到目的节点的路由,若存在则直接进行数据转发,若不存在,则广播RREQ分组进行寻找并建立路由。当目的节点收到第一个RREQ分组时,立即回复RREP分组给源节点,当源节点收到RREP分组时,便沿着RREP的路径建立了一条到目的节点的路径,然后通过此路径进行数据的传送。当节点在转发分组失败的时候便广播一个RRER分组,以此来告知源节点路径断开,源节点收到RRER之后将要发送的数据存入缓存,并重新发起路由发现的过程,直到新的路由路径建立起来的时候,才将缓存中的数据依次发送给目的节点。

  AODV是一种按需路由协议,根据业务需求建立和维护路由,它是DSDV (Destination—SequencedDistance-Vector)协议和DSR(Dynamic Source Routing) 协议的结合,使用DSDV协议中的目的节点序列号来防止缓存的路由信息过期以及环路的产生,路由建立则是基于DSR协议中所采用的方法,不同点在于AODV采用的是逐跳路由而不是源路由,可以实现ZigBee节点之间动态的、自发的路由,使节点很快实现到目的节点的通信。ZigBee路由算法中使用的AODVjr算法是对AODV算法的精简和改进,但是仍然保持AODV的原始功能。其特点是路由路径最佳,缺点是单个节点需要路由表,整体路由代价高。

   AODV路由协议主要可分为初始化、路由的建立及维护、显示、时钟、节点移动模块。总体设计框图所示:

caa867efe4eb6adf079604928f056501_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    AODV是一种按需路由协议,根据业务需求建立和维护路由,它是DSDV协议和DSR协议的结合。使用DSDV协议中的目的节点序列号来防止缓存的路由信息过期以及环路的产生,路由建立则是基于DSR协议中所采用的方法,不同点在于AODV采用的是逐跳路由而不是源路由。  

    控制中心主要包括消息收发模块、用户列表(相关节点信息,用户名和IP)、参数设置模块和功能性模块。

 1.参数设置模块:可以实现节点个数、仿真场景大小、仿真时间、信道模型、路由协议、节点初始能量等的输入或者选择

 2.功能性模块:显示拓扑结构图;计算网络平均吞吐量、平均端到端时延、丢包率、剩余节点个数、节点消耗能量等

    参数设置模块,是通过GUI界面进行设置,主要实现可设置网络节点,仿真场景大小,仿真时间,信道模型的选择,路由协议的选择,节点初始能量的设置等参数变量,这些变量,我们均通过GUI界面进行参数的输入。

    功能模块,显示拓扑结构图;计算网络平均吞吐量、平均端到端时延、丢包率、剩余节点个数、节点消耗能量等

708b1291b7f9f5afe4789b3dc25a09a0_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

整个网络的工作机制如下:

    通过设置N个网络节点,在设置好大小的场景中,进行随机坐标的分布,并设置整个网络的工作时间,即仿真时间,不同节点之间的信息传递,其信道模型根据设置,选择Free space和 Two-ray ground reflection两种类型的信道,网络工作的MAC协议为IEEE 802.11,而路由协议,则根据选择,设置Leach或者AODV,或AODV改进三种类型。然后,我们根据网络的实际仿真结果,实时的输出六个指标。


3.MATLAB核心程序

 
    countCHs3 = 0;
    cluster3  = 1;
    for i = 1:n
        if Ea > 0 & S3(i).E > 0 & S3(i).G <= 0  
             if rand<= 0.2
                countCHs3             = countCHs3+1;
                packets_TO_BS3        = packets_TO_BS3+1;
                PACKETS_TO_BS3(r+1)   = packets_TO_BS3;
                S3(i).type            = 'C';
                C3(cluster3).xd       = S3(i).xd;
                C3(cluster3).yd       = S3(i).yd;
                if r > 1
                   distance              = sqrt((S3(i).xd-(S3(n+1).xd) )^2 + (S3(i).yd-(S3(n+1).yd))^2 );
                   Fs                    = LBF3t(r);
                   Ps                    = Ec3(r);
                   Gs                    = w1*distance+w2*Fs+w3*Ps;
                else
                   distance              = sqrt((S3(i).xd-(S3(n+1).xd) )^2 + (S3(i).yd-(S3(n+1).yd))^2 ); 
                   Gs                    = distance;
                end
                C3(cluster3).distance = Gs;
                C3(cluster3).id       = i;
                X3(cluster3)          = S3(i).xd;
                Y3(cluster3)          = S3(i).yd;
                cluster3              = cluster3+1;
                %计算簇头发送4000bit数据的能量消耗
                if Gs > do 
                   S3(i).E = S3(i).E - ((ETX+EDA)*(PACK) + Emp*PACK*(distance*distance*distance*distance)); 
                end
                if Gs <= do 
                   S3(i).E = S3(i).E - ((ETX+EDA)*(PACK) + Efs*PACK*(distance * distance)); 
                end
             end
        end
    end
    STATISTICS.COUNTCHS3(r+1) = countCHs3;
 
    x3 = zeros(1,cluster3-1);
    y3 = 0;
    z3 = 0;
    Drop_rate0 = zeros(1,n);
    
    %产生不同的路由路径,用来进行综合分析
    PATH = [];
    Nums = 1:n;
    nn   = n;
    for js = 1:n/2
        tmps = randperm(nn);
        if js > 1
           I1 = find(tmps == tmps1);
           I2 = find(tmps == tmps2);
           tmps(I1)=0;
           tmps(I2)=0;
           tmps(find(tmps==0)) = [];
        end
        SS   = tmps(1);
        DD   = tmps(2);
        %根据原节点和目标节点进行路由跟新
        [path,hop] = aodv_path_discovery_new(n,nodes_link,SS,DD,Fload,PLest,BREAK);
        PATH     = [PATH,path];
        tmps1    = SS;
        tmps2    = DD;
    end
    for ind=1:length(PATH)
        i = PATH(ind);
        if S3(i).type=='N' && S3(i).E>0
           if cluster3-1 >= 1
              min_dis         = Inf;
              min_dis_cluster = 0;
              for c=1:cluster3-1
                  if r > 1
                     distance              = sqrt((S3(i).xd-C3(c).xd)^2 + (S3(i).yd-C3(c).yd)^2);
                     Fs                    = LBF3t(r);
                     Ps                    = Ec3(r);
                     Gs                    = w1*distance+w2*Fs+w3*Ps;
                  else
                     distance              = sqrt((S3(i).xd-C3(c).xd)^2 + (S3(i).yd-C3(c).yd)^2); 
                     Gs                    = distance;
                  end
                  temp = min(min_dis,Gs);
                  if temp < min_dis
                     min_dis         = temp;
                     min_dis_cluster = c;
                     x3(c)           = x3(c)+1;
                  end
              end
相关文章
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
48 31
|
2天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
1天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
11天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
9天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
9天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
12天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
4天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
41 17
|
15天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
16天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
39 10
下一篇
DataWorks