(5)建立节点间能量传输链路。找到物联网中的能量发射节点及能量传输路径上的能量中继节点,就可以在能量请求节点和能量发射节点之间建立一条能量传输链路。中继节点收到能量后,按能量转发报文将一定的能量传输到下一中继节点,同时转发能量转发报文,直到能量传输到能量请求节点。
3 基于Dijkstra算法动态计算传输节点的策略
上述路由算法实现的关键是运用Dijkstra算法求解最佳电量节点构成的传输路径,即需要核心节点进行信息传输,由于核心节点的电力存储影响整个网络的寿命,因此,需要动态变化这些核心节点。根据节点剩余电量情况,定时动态计算参与传输的核心传感节点,以形成物联网结构上的传输网络。
本文运用Dijkstra算法求解最佳电量节点构成的传输路径图,图中的每个节点代表一个参与传输的传感器节点,每条弧代表一条通信线路。为一对给定节点之间选择一条传输路径,只需在图中找到这对节点之间的最短路径即可。在最短传输路径上的节点,即为本次能量传输的中继和后续节点。
3.1 图结构
图结构的定义:节点信息存储物联网传感器节点的剩余电量;彼此直接通讯的则对应图中的边;每次发生信息传输时,找其后续节点中剩余电量最大的作为中继节点进行传输。
3.2 图调整
图初建时设置几个主要核心传感器节点作为参与数据传输的节点,并彼此连边,形成初始图。在传输过程中,一旦网络中的某一个节点的剩余能量低于预设的临界能量值TE—MIN,则该低能量节点就会退出无线能量传输,只传播该节点采集的信息给其他中继节点,以传输其信息到服务器。从而实现高能量节点向低能量节点的能量补充。
3.3 算法
该算法分为如下几个步骤:
(1)设置一个未选择为最短路径的节点集合U,一个已选择为最短路径的节点集合S,S+U=V(G)。在初始情况下,S为空,U中包含所有节点。源点s的距离dis(s)=0,其他节点v的距离dis(v)=∞。
(2)从U集合中选择一个到S集合任一点距离最短的点,将其加到S集中,并从U集中删除。
(3)修改U中各节点的距离,重复过程(2)直到到达终点。
Dijkstra算法流程图如图3所示。
算法伪代码如下: