m基于自适应修复算法的AODV-SAR路由协议matlab性能仿真

简介: m基于自适应修复算法的AODV-SAR路由协议matlab性能仿真

1.算法仿真效果
matlab2022a仿真结果如下:
27a79859260d7ce0d9509b8b71de2eb9_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
c0fa0c121a3cb7b1490c130df79414ad_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
52485025182ff04bd6a47a182dde6102_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
84f62728c77fa791a0d345d40fd6faa7_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
AODV-SAR,Self-Adaptive Repair

     定义1自修复节点:任意选取路径S→A→B→C→D为MANET中一条业务传输路径,其中节点S为该传输路径的源节点,节点D为该传输路径的目的节点。如果在某一时间,节点B和节点C之间的路径发生故障,导致链路失效,靠近节点S即路径源节点的节点B称为自修复节点。

   结合移动Ad Hoc 网络在军事场景、抢险救灾以及野外科考等环境中的应用背景,网络中的各个节点可能运动速度并不低,但是却服从统一的部署和调度。因此,本文将主要考虑目标节点做确定性运动情况下的搜索方程。假设发生在不同时刻的搜索过程相互独立,这意味着自愈节点无法从过去失败中得到如何更好进行搜索的经验:

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

    由于移动Ad Hoc 网络中节点间的通信均建立在无线链路的基础上,因此链路质量变差或失效将对业务分组传输带来不利的影响。目前,移动Ad Hoc 网络中的路由协议普遍采用在确定传输路径中断后才发起修复请求的机制。由于在判定路由失效时需要进行多次重传,比如,标准的 IEEE 802.11中规定MAC层需要满足四次传输定时器超时后才能判定链路失效,因此,从当前链路失效到开始寻找替代路由需要经历很长的时间。这种时延将对移动Ad Hoc 网络的业务传输造成严重的影响。尽管许多抢先式路由协议在提前预测方面取得了良好的效果,但是由于这类协议往往需要采用节点运动速度、地理位置、业务分组传输跳数以及节点寿命等多种因素作为抢先量度,用于判断链路质量以提前进行路由发现过程,因此,算法过程通常较为复杂而且还会引起较大的控制开销。此外,为了能够准确的对链路进行预测,往往需要节点具备额外的设备,如GPS等。

    针对上述问题,本节将主要关注如何以较低的代价进行本地节点的路由质量检测问题,并建立网络环境的映射关系作为发起路由修复的判据。

    路由质量检测的目的在于能够更早、更快的检测出即将发生失效的链路连接,以帮助本地节点在链路失效前找到替代路径,减少链路中断后多次进行重传确认所引起大量不必要的开销,从而实现对当前路由的快速修复。这种思想与蜂窝网络中的软切换技术十分相似,因此,路由质量检测算法的设计关键在于如何确定路由质量已经变“差”,需要重新选择传输路径。对路由质量的判定可以采取很多方式,比如信号强度、路由存活时间、业务分组传输跳数以及发生冲突的频率等。为了能够快速、准确的判定是否需要发起本地路由的修复过程,本文根据业务分组接收功率来建立路由质量判定函数以避免引入额外的控制开销。在移动Ad Hoc网络中,链路的失效大多是由于节点间相对运动所造成的,因此信号强度作为最直接的衡量标准可以用来判断业务分组在节点间传输的能力,而衰落等原因引起的信号功率短暂的抖动将不会影响对路由质量的判定结果。

3.MATLAB核心程序
```global SCALE;
global Number;
global Energy0;
global Radius;
global Vmax;
global Vavg;
global Smax;
global Savg;
global Len;
global Rpow;
global Rfail;
global Rmax;
global alpha0;
global REG;
global ETX;
global ERX;
global Efs;
global Emp;
global EDA;
global Nnode;
global Psent;
global X;
global Y;
Delays = [];
Change = [];
Power = [];
MTKL = 500;

Sset = [5:5:50];%不同的节点数据包发送速率
for ii = 1:length(Sset)
ii
tmps1 = 0;
tmps2 = 0;
tmps3 = 0;
for jj = 1:MTKL

    rng((ii-1)*jj+jj);
    SCALE   = 1000;%节点分布范围
    Number  = 100;%节点总个数
    Energy0 = 1;%节点初始能量
    Radius  = 240;%节点通信半径
    Vmax    = 10;%节点移动速度
    Vavg    = Vmax*randn(2,Number);
    Smax    = 10;%数据包发送速率
    Savg    = Sset(ii)*rand;
    Len     = 1024;%数据包长度
    Rpow    = 250;%功率覆盖半径
    Rfail   = 1;
    Rmax    = 2e6;%最大传输速率
    alpha0  = pi/3; 
    REG     = 0.2;%缓存大小    
    %能量消耗
    ETX     = 50*1e-9;
    ERX     = 50*1e-9;
    %Transmit Amplifier types
    Efs    = 10    *1e-12;
    Emp    = 0.0013*1e-12;
    %Data Aggregation Energy
    EDA    = 5*1e-9;
    Nnode   = Number;
    Psent   = 0.1;

    if jj == 1
       X = SCALE*rand(1,Number);
       Y = SCALE*rand(1,Number);
    else
       X = X+Vavg(1,:);%移动
       Y = Y+Vavg(2,:);
    end

    dmatrix = zeros(Nnode,Nnode);
    for i = 1:Nnode 
        for j = 1:Nnode 
            Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); 
            %a link; 
            if Dist <= Radius & Dist > 0
               %距离因素
               dmatrix(i,j) = Dist; 
            else 
               %距离因素
               dmatrix(i,j) = inf;  
            end; 
        end; 
    end; 
    distmatrix = zeros(Nnode,Nnode);
    for i = 1:Nnode 
        for j = 1:Nnode 
            Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); 
            distmatrix(i,j) = Dist; 
        end; 
    end; 


    Pmatrix = zeros(Nnode,Nnode);
    for i = 1:Nnode 
        for j = 1:Nnode 
            Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); 
            %a link; 
            if Dist <= Rpow & Dist > 0
               %距离因素
               Pmatrix(i,j) = ETX; 
            else 
               %距离因素
               Pmatrix(i,j) = 0;  
            end; 
        end; 
    end; 

    tmps= randperm(Number);
    if tmps(1)>tmps(2)
       Sn1 = tmps(2);
       En1 = tmps(1);
    else
       Sn1 = tmps(1);
       En1 = tmps(2);
    end
    [paths1,costs1] = func_aodvsar(Sn1,En1,dmatrix,Pmatrix,distmatrix);     

...................................................................................

    else
        if jj == 1
           Ec3(jj,1:Nnode) = Energy0;
           Ec30(1:Nnode)   = Energy0;
        else
           Ec3(jj,1:Nnode) = Ec3(jj-1,1:Nnode);  
        end 
        succes = 0;
        Ecums  = 0.1;
    end

    tmps1 = tmps1+Savg/((length(paths1)+1)*REG)+path_distance/Savg/1000;%缓存延迟+传输延迟

    tmps2 = tmps2+succes;
    tmps3 = tmps3+Ecums;
end
%对节点之间平均端到端的时延
Delays(ii) = tmps1/MTKL;
%数据包分组交付率
Change(ii) = 100*tmps2/MTKL;
%路由拓扑控制开销
Power(ii)  = tmps3/MTKL;

end

figure;
plot(Sset,Delays,'b-o');
grid on
xlabel('不同的节点数据包发送速率');
ylabel('平均端到端的时延');

figure;
plot(Sset,Change,'b-o');
grid on
xlabel('不同的节点数据包发送速率');
ylabel('数据包分组交付率%');
ylim([0,100]);
figure;
plot(Sset,Power,'b-o');
grid on
xlabel('不同的节点数据包发送速率');
ylabel('路由拓扑控制开销');

save R1.mat Sset Delays Change Power
```

相关文章
|
17天前
|
算法 计算机视觉
使用积分图的自适应二值化算法
使用积分图的自适应二值化算法
|
7天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
2天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的人体喝水行为视频检测系统matlab仿真,带GUI界面
MATLAB 2022a中使用YOLOv2算法对avi视频进行人体喝水行为检测,结果显示成功检测到目标。该算法基于全卷积网络,通过特征提取、锚框和损失函数优化实现。程序首先打乱并分割数据集,利用预训练的ResNet-50和YOLOv2网络结构进行训练,最后保存模型。
12 5
|
5天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文档介绍了使用MATLAB2022A中PSO优化算法提升时间序列预测模型性能的过程。PSO优化前后对比显示了优化效果。算法基于CNN、LSTM和Attention机制构建CNN-LSTM-Attention模型,利用PSO调整模型超参数。代码示例展示了PSO的迭代优化过程及训练、预测和误差分析环节。最终,模型的预测结果以图形形式展示,并保存了相关数据。
|
11天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
15 0
|
14天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
286 9
|
26天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
15 0
|
26天前
雷达模糊函数及MATLAB仿真(一)
雷达模糊函数及MATLAB仿真
26 0
|
26天前
雷达检测及MATLAB仿真(三)
雷达检测及MATLAB仿真
21 0
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。