无线Mesh网络中OLSR路由协议的MATLAB仿真研究

一、理论基础

无线Mesh网络其也可以称为无线网状网络或者无线多跳网络,其具有动态自组织、自配置、易于维护等优点,同时还具备成本较低,系统运行稳定的优势。无线Mesh网络将移动节点和固定节点通过无线链路进行相互链接,组成一个多跳移动的自组无线网络。无线Mesh网络的构建是基于Ad Hoc无线网络之上的,因此,在其拓扑结构上和Ad Hoc无线网络具有较多的相似点。无线Mesh网络能够灵活快速的实现各种场合的组网,因此具有极其广泛的应用前景。无线Mesh网络结构的基本示意图如下图所示:

基于无线Mesh网络OLSR路由协议的MATLAB仿真_OLSR路由协议

Dijkstra算法计算无线Mesh网络G中的N个sd的路径,主要步骤如下所示:

Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。选择特殊路径长度最短的路径,将其连接的V-S中的顶点加入到集合S中,同时更新数组dist。一旦S包含了所有顶点,dist[]就是从源到所有其他顶点的最短路径长度。

1)数据结构。 设置地图的带权邻接矩阵为map[][],即如果从源点u到顶点i有边,就令map[u][i]=<u,i>的权值,否则map[u][i]=∞;采用一维数组dist[i]来记录从源点到i顶点的最短路径长度:采用一维数组p[i]来记录最短路径上i顶点的前驱。

2)初始化。令集合S={u},对于集合V-S中的所有顶点x,初始化dist[i]=map[u][i],如果源点u到顶点i有边相连,初始化p[i]=u(i的前驱是u),否则p[i]=-1

3)找最小。在集合V-S中依照贪心策略来寻找使得dist[j]具有最小值的顶点t,即dist[t]=min,则顶点t就是集合V-S中距离源点u最近的顶点。

4)加入S战队。将顶点t加入集合S,同时更新V-S

5)判结束。如果集合V-S为空,算法结束,否则转6

6)在(3)中已近找到了源点到t的最短路径,那么对集合V-S中所有与顶点t相邻的顶点j,都可以借助t走捷径。

二、核心程序

登录后复制

%节点分布范围            Nnode = 100;            SCALE = 500;%            %初始节点能量            E0    = 1;            %通信半径            Radius= 100;%            %节点最大移动速度            Vmax  = 1;%            %数据发送包速率            Smax  = 20;%            %数据发送包长度            SLen  = 2000;%            %节点通信阈值            LRad  = 87;            %电路能耗系数            Eelec = 5e-8;            %信道传播模型的能耗系数            Efs   = 1e-11;            %信道传播模型的能耗系数            Emp   = 1.3e-15;            %压缩比            u     = 0.5;%            %初始变异概率            P     = 0.5;%            %发送率            Trans = 1.5;            %%            %构造一个多跳传输测试网络系统,OLSR协议的改进            X       = rand(1,Nnode)*SCALE;              Y       = rand(1,Nnode)*SCALE;             %定义随机带宽            Bw      = 100*rand(Nnode,Nnode);            %顶级随机的丢包率            Db      = rand(Nnode,Nnode)/20;            %network topology             dmatrix0= zeros(Nnode,Nnode);            Fmatrix0= zeros(Nnode,Nnode);            Cmatrix0= zeros(Nnode,Nnode);            for i = 1:Nnode                 for j = 1:Nnode                     Dist          = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);                    %距离因素                    dmatrix0(i,j) = Dist;                  end;             end;             %计算归一化值的最大值            for i = 1:Nnode                 for j = 1:Nnode                     Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);                       %网络优先级参数                    Fmatrix0(i,j) =((Bw(i,j)-min(min(Bw)))/min(min(Bw)) + (max(max(dmatrix0))-dmatrix0(i,j))/max(max(dmatrix0)) + (1-Db(i,j)))/3;                     %视频传输能力——即节点之间的传输损耗,用简化模型替代                    if i == j                       Cmatrix0(i,j) = 0;                      else                       Cmatrix0(i,j) = 20*log10(Dist);                     end                end;             end;             MAX_dmatrix = max(max(dmatrix0));            MAX_Fmatrix = max(max(Fmatrix0));            MAX_Cmatrix = max(max(Cmatrix0));            matrix      = zeros(Nnode,Nnode);            dmatrix     = zeros(Nnode,Nnode);            Fmatrix     = zeros(Nnode,Nnode);            Cmatrix     = 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                       matrix(i,j)  = 1;                          %距离因素                       dmatrix(i,j) = Dist;                        %网络优先级参数                       Fmatrix(i,j) = ((Bw(i,j)-min(min(Bw)))/min(min(Bw)) + (max(max(dmatrix0))-dmatrix0(i,j))/max(max(dmatrix0)) + (1-Db(i,j)))/3;                        %视频传输能力——即节点之间的传输损耗,用简化模型替代                       Cmatrix(i,j) = 20*log10(Dist);                     else                        matrix(i,j)  = inf;                        %距离因素                       dmatrix(i,j) = inf;                        %网络优先级参数                       Fmatrix(i,j) = inf;                        %视频传输能力——即节点之间的传输损耗,用简化模型替代                       Cmatrix(i,j) = inf;                     end;                 end;             end;             %归一化处理            dmatrix = dmatrix/MAX_dmatrix;            Fmatrix = Fmatrix/MAX_Fmatrix;            Cmatrix = Cmatrix/MAX_Cmatrix;            %路由优化算法的改进            Tmatrix = (dmatrix + Fmatrix + Cmatrix)/3;            %定义通信起始节点和终止节点            tmp = randperm(Nnode);            for i = 1:Nnode                distA(i) = sqrt((X(i))^2 + (Y(i))^2);                distB(i) = sqrt((X(i)-SCALE)^2 + (Y(i)-SCALE)^2);            end            [Va,Ia] = max(distA);            [Vb,Ib] = max(distB);            Sn  = Ia;            En  = Ib;            [paths,costs] = func_dijkstra(Sn,En,Tmatrix);             %通过遗传优化算法去搜索OLSR协议的最小MRP集            if isempty(paths) == 0               flags = 1;             end         end                path = func_find_best_MRPset(paths,X,Y,Tmatrix,Nnode);        path_distance=0;         ds=0;        for d=2:length(paths)            path_distance= path_distance + MAX_dmatrix*dmatrix(paths(d-1),paths(d));            ds(d)=MAX_dmatrix*dmatrix(paths(d-1),paths(d));         end         %hop数量        path_hops = length(paths);         %根据OSLR协议所建立的网络路径进行视频的传输...............................................1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.

三、测试结果

基于无线Mesh网络OLSR路由协议的MATLAB仿真_matlab_02




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空