ADOV路由和DSR路由matlab对比仿真

目录

1.程序功能描述

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

3.核心程序

4.本算法原理

[4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing)](#4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing))

[4.2 DSR路由(Dynamic Source Routing)](#4.2 DSR路由(Dynamic Source Routing))

5.完整程序


1.程序功能描述

ADOV路由和DSR路由的仿真,仿真输出网络的路由路径,跳数,路由长度,并对比ADOV和DSR的性能。

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

MATLAB2022a版本运行

3.核心程序

复制代码
......................................................
Nodes    = 30; 
Radius   = 10; %节点通信距离 
Sp       = 10;  %开始点
Ep       = 6; %目标点
X      = 20*rand(1,Nodes);
Y      = 20*rand(1,Nodes);
Z      = 1*rand(1,Nodes);%节点的信任值

figure(1); 
clf; 
hold on; 
%画拓扑结构
for i = 1:Nodes 
    plot(X(i), Y(i), '.'); 
    text(X(i), Y(i), num2str(i)); 
    for j = 1:Nodes 
        dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); 
        if dist <= Radius   
           Fmat(i,j)  = 1;   
           Tmat(i,j)  = 1-((Z(i)+Z(j))/2); 
           dmat(i,j)  = dist; 
        else 
           Fmat(i,j)  = inf; 
           Tmat(i,j)  = inf; 
           dmat(i,j)  = inf; 
        end  
    end  
end 
%路由  
[path, cost] = func_dijkstra(Sp,Ep,Tmat);
 


dist_all=0; 
for j=2:length(path) 
    dist_all= dist_all + dmat(path(j-1),path(j)); 
end 
 
for p =1:(length(path)-1) 
    line([X(Sp) X(path(1))],[Y(Sp) Y(path(1))],'Color','r','LineWidth', 1, 'LineStyle', '-') 
    line([X(path(p)) X(path(p+1))], [Y(path(p)) Y(path(p+1))], 'Color','r','LineWidth', 2, 'LineStyle','-')  
end 
grid 




disp('路由:');
path
disp('跳数:');
length(path)-1 
disp('路由长度:');
dist_all


save R1.mat 
18

4.本算法原理

4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing)

ADOV是一种反应式的路由协议,它仅在需要时才建立路由。这种路由协议主要包括三个过程:路由发现、路由维护和路由表更新。

路由发现:

当源节点需要向目的节点发送数据,但路由表中没有有效路由时,源节点会发起路由发现过程。它广播一个路由请求(RREQ)消息,该消息包含源节点和目的节点的地址、请求的序列号等信息。

路由维护:

每个节点都维护一个路由表,其中包含到达已知目的地的下一跳地址和跳数。当节点的路由表发生变化时(例如,链路中断),它会更新其路由表,并可能向邻居节点发送路由错误(RERR)消息。

路由表更新:

当节点收到RREQ或RERR消息时,它会根据这些消息更新其路由表。如果RREQ消息提供了一个更好的路由(即跳数更少),则节点会更新其路由表,并可能将RREQ消息转发给其邻居节点。

在ADOV路由中,一个重要的概念是路由度量。路由度量通常基于跳数,但也可以考虑其他因素,如链路质量。假设(d(i, j))表示从节点(i)到节点(j)的距离(以跳数计),则路由发现过程可以表示为寻找从源节点(s)到目的节点(d)的最短路径,即最小化(d(s, d))。

4.2 DSR路由(Dynamic Source Routing)

DSR是一种源路由协议,意味着路由是由源节点确定的,并且路由信息包含在数据包头中。DSR同样是反应式的,它使用路由缓存来存储先前发现的路由。

路由发现:

与ADOV类似,当源节点需要向目的节点发送数据但没有有效路由时,它会发起路由发现过程。不同的是,DSR会在RREQ消息中包含一个路由记录,该记录用于记录从源节点到目的节点的路径。

路由维护:

DSR使用路由缓存来存储先前发现的路由。当节点收到数据包时,它会检查数据包头中的路由信息,并根据该信息转发数据包。如果路由缓存中的路由不再有效(例如,由于节点移动导致链路中断),则节点会丢弃数据包,并可能向源节点发送路由错误消息。

在DSR中,路由发现过程可以表示为寻找从源节点(s)到目的节点(d)的有效路径(P)。路径(P)可以表示为一系列节点的序列:(P = \langle s, n_1, n_2, ..., n_k, d \rangle),其中(n_1, n_2, ..., n_k)是路径上的中间节点。源节点将路径(P)包含在数据包头中,以便中间节点能够根据该路径转发数据包。

5.完整程序

VVV

相关推荐
yugi9878389 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
IT猿手17 小时前
基于强化学习的多算子差分进化路径规划算法QSMODE的机器人路径规划问题研究,提供MATLAB代码
算法·matlab·机器人
fie888921 小时前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
机器学习之心1 天前
基于GRU门控循环单元的轴承剩余寿命预测MATLAB实现
深度学习·matlab·gru·轴承剩余寿命预测
简简单单做算法1 天前
基于FFT粗估计和LS最小二乘法精估计的正弦信号参数估计和检测matlab仿真
matlab·最小二乘法·参数估计·fft粗估计·ls最小二乘法
kaikaile19951 天前
基于MATLAB的滑动轴承弹流润滑仿真程序实现
开发语言·matlab
Not Dr.Wang4221 天前
FIR数字滤波器设计的两种实现
matlab
3GPP仿真实验室1 天前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
民乐团扒谱机2 天前
【微实验】机器学习之集成学习 GBDT和XGBoost 附 matlab仿真代码 复制即可运行
人工智能·机器学习·matlab·集成学习·xgboost·gbdt·梯度提升树
Evand J2 天前
TDOA(到达时间差)的GDOP和CRLB计算的MATLAB例程,论文复现,附参考文献。GDOP:几何精度因子&CRLB:克拉美罗下界
开发语言·matlab·tdoa·crlb·gdop