1.程序功能描述
无线传感网路由VBF协议和DBR协议的MATLAB性能仿真.将两个协议在能量消耗,存活节点等方面进行比较.
2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
3.核心程序
``` for c=1:n%计算最接近的cluster个节点
dd(c) = sqrt((DBRsave(i).xd-(DBRsave(n+1).xd) )^2 + (DBRsave(i).yd-(DBRsave(n+1).yd))^2 + (DBRsave(i).zd-(DBRsave(n+1).zd))^2);
end
[VV,II] = sort(dd);
II2 = II(1:cluster);%计算最接近的节点编号
for c=1:cluster
DBRsave_close(c).xd=DBRsave(II2(c)).xd;% 存储接近节点的X坐标
DBRsave_close(c).yd=DBRsave(II2(c)).yd;% 存储接近节点的Y坐标
DBRsave_close(c).zd=DBRsave(II2(c)).zd;% 存储接近节点的Z坐标
end
Drop_rate0 = zeros(1,n);
for i=1:n
if DBRsave(i).E>0
min_dis = Inf;
min_dis_cluster = 0;
for c=1:cluster-1
temp = sqrt((DBRsave(i).xd-DBRsave_close(c).xd)^2 + (DBRsave(i).yd-DBRsave_close(c).yd)^2 + (DBRsave(i).zd-DBRsave_close(c).zd)^2);
if temp do
DBRsave(i).E=DBRsave(i).E- (ETX(PACK) + EmpPACK( min_dis min_dis min_dis min_dis)); % 根据距离和模型更新节点能量
end
if min_dis<= do
DBRsave(i).E=DBRsave(i).E- (ETX(PACK) + EfsPACK( min_dis min_dis)); % 根据距离和模型更新节点能量
end
DBRsave(i).min_dis = min_dis; % 存储最小距离
DBRsave(i).min_dis_cluster = II2(min_dis_cluster);% 存储最小距离对应的接近节点编号
Npackv=Npackv+1;
end
end
Npack(r+1) = Npackv;% 记录当前轮发送的数据包数量
end
Throughput = Npack;
Power = Etsetc/10;
death = Dead_nodes_numbers;
%性能
figure;
plot(Throughput,'b','linewidth',2);
grid on;
xlabel('round');
ylabel('y(吞吐量)');
figure;
plot(max(death)-death,'b','linewidth',2);
grid on;
xlabel('round');
ylabel('y(存活节点)');
figure;
plot(max(Power)-Power,'b','linewidth',2);
grid on;
xlabel('round');
ylabel('y(剩余能量)');
save result1.mat Throughput death Power
12_083m
```
4.本算法原理
无线传感器网络(Wireless Sensor Networks, WSNs)是由大量低成本、低功耗、多功能的传感器节点组成的网络,这些节点能够协作地感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。在WSNs中,路由协议起着至关重要的作用,它们负责将数据从源节点传输到目的节点。
4.1 VBF路由协议
VBF协议是一种需要完整定位的地理算法。每个节点的位置通过 AOA技术或信号强度来估计。与发送节点、转发节点和目标节点相关的位置信息被携带在数据包中。从发送节点到目标节点的传递路径,由一个向量确定,该向量位于路由管道内,管道内的每个节点都可以充当发送数据包的候选者。
如果接收到数据包的节点在路由管道内,则发送数据包;否则将他丢弃。为了确保路由,每个数据包中包含了发送者、目标和转发节点的坐标信息。节点的位置或坐标是通过定位技术获得的。
路由过程中,使用了矢量路由和管道路由。矢量路由是从源节点到目的节点的直线,而路由管道是半径可调的圆柱体,具有矢量路由的中心性。数据包从源到目的地的路由由矢量路由确定。
接收到数据包后,接收节点计算其相对于前一个转发节点的位置。只要节点可以确定它与向量路由足够接近,那么该节点就被认为是一个新的转发节点,并将其放入数据包中并转发给下一个节点。否则,将删除数据包。在该协议中,所有转发节点都在路由管道内。那些不靠近路由向量的节点不会转发和删除接收到的数据包。
但是这些协议不需要关于所有节点位置的信息。VBF 是一种源路由协议。这意味着路由从源节点开始。每个数据包只携带简单的路由数据,包括SP、TP和FP三个字段,分别表示发送者、目标和转发节点的位置。为了支持节点移动性,每个数据包还包含一个称为 Range 的字段。当一个数据包到达 TP 字段指定的区域时,它将使用 range 字段内的值确定传输限制,然后将其广播到网络。通过估计它与路由向量和半径字段的距离,将能够确定它是否可以转发数据。
总的来说,在 VBF 协议中,在那些节点彼此靠近的网络中,距离路由向量足够近或在路由管道内的节点将转发数据包。但这将导致能耗增加、不必要的数据包传输量增加。因此,应针对密集网络采取适当的策略。
4.2 DBR路由协议
DBR是一种试图将数据包从源节点(source node)传递到sink节点的贪婪算法。在该过程中,当数据包接近sink节点时,转发节点的深度在减小。如果我们在每个步骤中减少转发节点的深度,则可以将数据包发送到水面(假设不存在“空”区)。在DBR中,传感器节点(sensor node)根据自己的深度和前一个发送方的深度,分布式地做出数据包转发的决策。上述内容是DBR的关键思想。
在DBR中,当接收到数据包时,节点首先检索数据包的前一跳的深度dp,该跳dp嵌入到数据包中。然后,接收节点将其自身的深度dc与dp进行比较。如果当前节点更靠近水面,即dc<dp,当前节点将认为自己是转发分组的合格候选。否则,当前节点只会直接丢弃数据包,丢弃的原因是收到的数据包来自更靠近水面的(更好的)节点。接收节点不希望转发该分组。
转发节点的多个相邻节点很可能是在下一跳转发数据包的合格候选节点。如果所有这些合格的节点都尝试广播数据包,将导致高冲突和高能耗。因此,为了减少冲突和能量消耗,需要控制转发节点的数量。此外,由于DBR的继承多路径特性(inherited multiple-path feature)(其中,每个传感器节点以广播的方式使用当前节点所有方向的声学信道(using an omnidirectional acoustic channel)来转发分组),节点可能多次接收相同一个分组。因此,同一个分组可能多次被转发。为了提高能量效率,理想情况下,节点只需发送一次相同的数据包。我们将在下一节讨论抑制冗余数据包的技术。