一种智能抄表系统无线网络路由算法

文档序号:7805978阅读:156来源:国知局
一种智能抄表系统无线网络路由算法
【专利摘要】本发明涉及智能抄表、无线通讯领域,具体公开了一种智能抄表系统无线网络路由算法。本技术采用通过对无线通信网络的研究,分析了路由算法在网络通信性能方面的重要性,发明了一种冗余的路由分配算法。该算法结合Dijkstra算法,设计了一种适用于冗余路由分配的R-Dijkstra算法。R-Dijkstra算法把无线网络定义为一个非负权重的连通图,通过引入冗余度参数和路径优化目标,实现了传输路径选择。进一步给出了算法步骤和实现过程。应用实例表明,该算法能够满足无线智能抄表路由的要求。本技术具有可靠性高,计算量小,容易编程实现等优点。
【专利说明】一种智能抄表系统无线网络路由算法

【技术领域】
[0001] 本发明涉及无线传输技术、网络技术、路由技术,具体地说是一种智能抄表系统无 线网络路由算法。

【背景技术】
[0002] 随着控制、计算机、通信、网络等技术的发展,信息交换沟通的领域正在迅速覆盖 从现场设备到各个控制领域,而兴起于本世纪初的工业无线技术引发了传统工业测控模式 的重大变革,工业无线网络是从新兴的无线传感器网络发展而来的、具有低成本、低能耗、 高度灵活性等特点。工业无线网络是一种面向设备间信息交互的无线通信技术,是对现有 无线通信技术在工业应用方向上的功能扩展和提升,是降低工业测控系统成本、扩展应用 范畴的革命性技术。工业无线网络技术改变了现有系统控制信息传递的方式。路由作为数 据的传输和分发机制,是无线网络的一大核心任务,是不可或缺的。无线网络路由是一个非 常活跃的研究领域,在这方面国内外学者提出了很多的解决方案。
[0003] 目前,A0DV(反应式路由协议)、0LSR(先应式路由协议)等主流的路由算法,大部 分是采用的分布式协议,路由的计算选择过程由数据的发送或者转发者来承担,采用网络 各个成员来选择路由和维护路由的策略。在一个无线智能抄表网络中,网络管理者负责节 点路由和通信资源的分配管理,通过命令将路由信息发送到网络设备,是一种集中式路由 配置方案,而不需要网络其他节点进行路由计算。此外,当前主要路由算法集中在单路径路 由的研究,当路由路径上某个节点故障时,通信就要受到影响,也不符合无线抄表网络的要 求。在实际应用中,网络节点之间无线通信往往受到周围环境电磁干扰、信号衰减、信号反 射等不利因素影响,对无线传输的性能带来很大挑战。
[0004] Dijkstra算法是由荷兰计算机科学家Edsger Wybe Dijkstra提出的,在论领 域有着广泛的应用,是经典的最短路径算法。Dijkstra算法的输入为一个非负权重的有 向图G。在给定出某个发顶点的情况下,该算法能够找出出发顶点到图中其余顶点的最 短距离。然而Dijkstra算法得出的结果是最短的距离和路径,只有单一路径,不符合 WirelessHART中图路由机制的要求,因此提出了基于Dijkstra算法搜索的冗余路径搜索 算法R-Di jkstra算法。
[0005] 因此,采用冗余路由,引入多路径路由机制,增强了数据传输的路径冗余,以确保 数据可靠无误的传输,具有重大的意义。


【发明内容】

[0006] 为了使无线抄表网络路由更可靠,本发明的目的是提供一种冗余的智能抄表系统 无线网络路由算法。
[0007] 为实现本发明的目的所采用的技术方案是:
[0008] -种智能抄表系统无线网络路由算法,采用吸收了 Dijkstra算法思想的 R-Di jkstra 算法;
[0009] 所述R-Dijkstra算法以Dijkstra算法为核心搜索算法,通过引入冗余度参数r, 实现了路由路径的冗余;
[0010] 根据冗余度参数r,对待加入节点汇报的邻居进行选择,然后对将每个选出的邻居 作为出发顶点,分别采用Dijkstra算法进行对目的节点搜索,得出每条路径后,最后将待 加入节点分别添加到每条路径的起点上,这样就得出了冗余度r的路由路径,这些路径都 是待加入节点到目的节点冗余的目标代价最小的路由。
[0011] 冗余度参数r,表示每个节点在路由转发数据时候可选择的邻居个数为r个;
[0012] 网络可以用一个有向图模型G = (V,E)来表达,其中V表示网络中节点的集合,E 为有向边集合;网络中每两个节点之间的链接可以赋予权值w(i,j),表示由节点i到节点 j的链接权值;w(i,j)具体值的计算可以根据链路质量、带宽多个指标计算获得;将两节点 之间是否直接链接作为W(i,j)取值依据,有链接的邻居之间的权值都为1,否则为无穷大; 根据节点加入时汇报邻居信息,然后采用R-Dijkstra算法,得出待加入节点的路由信息。
[0013] 所述路径都是待加入节点到目的节点冗余的目标代价最小的路由,目标代价可以 考虑传输跳数、信号质量、节点能量以及负载等因素的共同作用;从路由实时性考虑,在本 算法中采用跳数作为目标代价。
[0014] 算法的复杂度结论如下;
[0015] Dijkstra算法的复杂度主要在两个循环中,因此Dijkstra算法的复杂度为 0(n2) ;R-Dijkstra算法在Dijkstra算法基础上引入了冗余度参数r,以Dijkstra算法为 基础,进行了 r次循环;因此,R-Dijkstra算法的复杂度为0(rXn2);
[0016] 由于通常情况下r彡2,但η相对较大,则有r << n,冗余度参数对算法复杂度的 影响不是很严重。
[0017] R-Dijkstra算法步骤如下;
[0018] 步骤1 :在r个邻居节点中,选择一个未被选择过的节点作为出发顶点S,目的顶点 为T,距离数组D用来表示S到其余各节点的传输跳数,路径记录数组为Path,其中D [i]表 示S到节点i的最短距离,Path[i]表示S到节点i最短路径需要经过的节点;
[0019] 步骤2 :根据w(i, j)的值,初始化D、Path的值;
[0020] 步骤3:从数组D中选择值最小的且未被选择过的顶点X,作为中间节点,其中 X关S,X关T ;
[0021] 步骤4:令Zev且Z关S,Z关X,则数组D中S到Z的距离值为D[Z],其中D的 值用D[Z]_new来更新,按照以下策略:
[0022] D [Z]_new = min (D [Z], D [X] +w (i, j))
[0023] 如果发生D [Z]值发生变化,则相应的Path [Z]做路径记录,Path [Z] = X,表示S 至IJ Z的最短路径需要经过中间节点X,即S到X再到Z ;
[0024] 步骤5 :重复步骤3、步骤4,直到所有D中的顶点都被选择过;这时,所获得的矩阵 D中的值就是从S顶点出发到网络中其余各点的最短距离,目的节点为T,找出Path[T]中 记录节点,将其输出,然后将Path [T]中的结点作为新的目的节点赋给T,按照该操作方法, 依次循环逆向输出Path [T]中记录的节点,直到不能取出新的目的节点T,然后输出起始节 点S,最后将上述输出内容反序,该路径就是S到T最短路径;
[0025] 步骤6 :如果r个邻居都已经被选择过,则算法结束,否则返回步骤(1)。
[0026] 本发明的优点是:
[0027] 1、本发明在吸收了 Dijkstra算法的思想和方法步骤的基础上,针对路由的具体 特点,满足无线网络路径冗余的要求,完成了智能无线抄表网络中路由路径分配任务,对于 一般的无线网络路径冗余具有普适性。
[0028] 作为工业无线网络的一项基础的支撑技术,路由对于无线网络节点可靠性的提 高,对于降低网络整体丢包率具有重要意义。
[0029] 2、本技术具有算法成熟,计算量小,易于实现等优点。采用自主研发的CMC模块组 网,验证了该技术的效果。

【专利附图】

【附图说明】
[0030] 图1是路由冗余示意图。
[0031] 图2是R-Di jkstra算法流程图之一。
[0032] 图3是R-Di jkstra算法效果图之二。
[0033] 图4是R-Di jkstra算法效果图之三。

【具体实施方式】
[0034] 下面结合附图图1-4对本发明作进一步详细说明。
[0035] 为保证数据传输可靠性,在智能无线抄表系统中采用了冗余的路由机制。路由中 的每一跳至少有两个路由选择,属于多径路由,所有的网络设备到目的节点的路径有多条。 例如在图1的网络拓扑中,节点6要给节点3、节点4或者节点5发送数据,可以使用线1或 者线2上所有的节点,都可以到达。
[0036] R-Di jkstra算法的的流程图如图2所示。图在计算机中的存储有邻接矩阵、邻接 表、十字链表等多种方式。为了图路由操作方便和节省空间,本算法数据结构吸收了邻接表 的思想,采用链表的形式来表示网络拓扑和图路由参考邻居。整个拓扑由图节点链表构成, 图节点中对应的参考邻居信息。其中,参考邻居信息为参考邻居链表的头结点指针。据结 构类型如下:
[0037] 网络节点的数据结构类型如下:
[0038] Struct _Node Struct { Int ShortAddress; //节点的短地址,在网络中唯 RefNeighbor *pUpStreamNbor; //上行对应的参考邻居链表指 针 RefNeighbor *pDownStreamNbor; //下行对应的参考邻居链表指 针 Struct _Node Struct pNext; //指向网络的下一个节点 } NodeStruct;
[0039] 参考邻居的数据结构类型如下:
[0040] Struct -RefNeighbor ?
[0041] Int ShortAddress; Int Weight; //从某节点到该邻居之间的链接权重值 Struct _RefNeighbor pNext; {RefNeighbor;
[0042] 若网络中有n个节点,则距离数组D、路径记录数组Path设计为n维的数组,如 果S到节点i不需要绕行其他节点,则Path [i]置为NULL。
[0043] 算法实现过程如下:
[0044] int NeighborNum=r; //选取冗余度为r,选择r个可选 邻居 int j=0; int Counter=n; //循环次数计数器,《为网络中节点 个数; bool Visit[n]=0; "汸|'|极;〖[1数机,末汸丨、|11为0,汸丨、|1| 过为1 While(NeighborNum) { S=NeighborAvailableD++]; //选取报告上来的邻居,初始化出发节 占 S1 j \ s\ Counter=n; //计数器复位 memset (Visit, 0, sizeof (bool) *n) ; /71方1、丨丨」私记从位 Visit[S]=l; //出发节点不能被选择,置 h 1 Init (D, Path, G,S) ; //出发节点\初始化β,路径矩阵Path初始化为 NULL While (Counter>l) { X=MinSeIectOneNode (D, Visit) ; //选择一个未被访问过的距离最 小的节点X For(i=0;i<n;i++) //更新距离矩阵15 { if((i!=S)&&(i!=X)) //检查该节点不为出发节点和当 前选择节点,即为z节点
[0045] { D[i]=Min(D[i],D[X]+W(X,i)) //如果〃到\经过x后到距离更小 则更新d if(D[i]==D[X]+W(X,i)) { Path[i]=X; //记录路径 } Visit[X]=l; //标记该节点已经被访问过 Counter-; //计数器减1 } NeighborNum-; }
[0046] 其中,算法的两个子函数的实现如下所示:
[0047] MinSelectOneNode (int* D, int* Visit); { int MinD=MaxNum; //设置临时变量,用于记录当 前最小距离值 For(i=0;i<n;i++) { If((D[i]<MmD)&&(Visit[i]==0)) //寻找当前距离最小的且未被访 问过的节点 { MinD=D[i]; RetNode=i; } Return RetNode; //返回符合条件的节点 } Min (mta, intb) //求取最小值函数 { if (a<b) Return a; else Return b; }
[0048] 为了验证算法的效果,选取了一个一般情况下智能无线抄表应用场景,该网络拓 扑如图3左侧所示。其中节点1是网关节点,节点2-7为已经在网的设备节点,它们要向节 点1传输测量数据和状态信息。当某时刻,新的设备节点8要加入网络,在冗余度参数r为 2的情况下,选取节点6和节点7为邻居节点,经过R-Dijkstra算法运算,得出两条路径的 结果为8->6->4->1,8->7->5->1,,如图3右侧所示。R-Dijkstra算法在保证路径冗余的同 时,实现了以跳数为指标的路径最优,该算法得出的结果较好的满足了智能无线抄表系统 的要求。
【权利要求】
1. 一种智能抄表系统无线网络路由算法,其特征在于: 采用吸收了 Dijkstra算法思想的R-Dijkstra算法; 所述R-Dijkstra算法以Dijkstra算法为核心搜索算法,通过引入冗余度参数r,实现 了路由路径的冗余; 根据冗余度参数r,对待加入节点汇报的邻居进行选择,然后对将每个选出的邻居作为 出发顶点,分别采用Dijkstra算法进行对目的节点搜索,得出每条路径后,最后将待加入 节点分别添加到每条路径的起点上,这样就得出了冗余度r的路由路径,这些路径都是待 加入节点到目的节点冗余的目标代价最小的路由。
2. 按照权利要求1所述一种智能抄表系统无线网络路由算法,其特征在于: 冗余度参数r,表示每个节点在路由转发数据时候可选择的邻居个数为r个; 网络可以用一个有向图模型G = (V,E)来表达,其中V表示网络中节点的集合,E为有 向边集合;网络中每两个节点之间的链接可以赋予权值w(i, j),表示由节点i到节点j的 链接权值;w(i,j)具体值的计算可以根据链路质量、带宽多个指标计算获得;将两节点之 间是否直接链接作为w(i,j)取值依据,有链接的邻居之间的权值都为1,否则为无穷大;根 据节点加入时汇报邻居信息,然后采用R-Dijkstra算法,得出待加入节点的路由信息。
3. 按照权利要求1所述的一种智能抄表系统无线网络路由算法,其特征在于: 所述路径都是待加入节点到目的节点冗余的目标代价最小的路由,目标代价可以考虑 传输跳数、信号质量、节点能量以及负载等因素的共同作用;从路由实时性考虑,在本算法 中采用跳数作为目标代价。
4. 按照权利要求1的所述一种智能抄表系统无线网络路由算法,其特征在于:算法的 复杂度结论如下; Dijkstra算法的复杂度主要在两个循环中,因此Dijkstra算法的复杂度为0(n2); R-Dijkstra算法在Dijkstra算法基础上引入了冗余度参数r,以Dijkstra算法为基础,进 行了 r次循环;因此,R-Dijkstra算法的复杂度为0(rXn2); 由于通常情况下r彡2,但η相对较大,则有r << n,冗余度参数对算法复杂度的影响 不是很严重。
5. 按照权利要求1所述一种智能抄表系统无线网络路由算法,其特征在于: R-Dijkstra算法步骤如下; 步骤1 :在r个邻居节点中,选择一个未被选择过的节点作为出发顶点S,目的顶点为 T,距离数组D用来表示S到其余各节点的传输跳数,路径记录数组为Path,其中D [i]表示 S到节点i的最短距离,Path[i]表示S到节点i最短路径需要经过的节点; 步骤2 :根据w (i,j)的值,初始化D、Path的值; 步骤3 :从数组D中选择值最小的且未被选择过的顶点X,作为中间节点,其中X尹S, X关T ; 步骤4:令Zev且Z尹S,Z尹X,则数组D中S到Z的距离值为D [Z],其中D的值用 D[Z]_new来更新,按照以下策略: D [Z]_new = min (D [Z], D [X] +w (i, j)) 如果发生D [Z]值发生变化,则相应的Path [Z]做路径记录,Path [Z] = X,表示S到Z 的最短路径需要经过中间节点X,即S到X再到Z ; 步骤5 :重复步骤3、步骤4,直到所有D中的顶点都被选择过;这时,所获得的矩阵D中 的值就是从S顶点出发到网络中其余各点的最短距离,目的节点为T,找出Path[T]中记录 节点,将其输出,然后将Path [T]中的结点作为新的目的节点赋给T,按照该操作方法,依次 循环逆向输出Path [T]中记录的节点,直到不能取出新的目的节点T,然后输出起始节点S, 最后将上述输出内容反序,该路径就是S到T最短路径; 步骤6 :如果r个邻居都已经被选择过,则算法结束,否则返回步骤(1)。
【文档编号】H04L12/707GK104065572SQ201410258788
【公开日】2014年9月24日 申请日期:2014年6月11日 优先权日:2014年6月11日
【发明者】王宏, 李世兴, 杨祖业, 李勇, 王进超 申请人:沈阳中科博微自动化技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1