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

1.算法仿真效果

matlab2022a仿真结果如下:


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

AODV-SAR,Self-Adaptive Repair


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


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



由于移动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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容