文章目录
- 【可更换其他算法,`获取资源`请见文章第5节:资源获取】
- 1. Dvhop定位算法
- 2. 蜣螂优化算法
- 3. 部分代码展示
- 4. 仿真结果展示
- 5. 资源获取
【可更换其他算法,获取资源
请见文章第5节:资源获取】
1. Dvhop定位算法
根据距离矢量和 GPS定位原理,2001年,Nieuleseu等人提出了 DV-Hop传感器节点定位算法,其只包含少数锚节点,剩余节点为未知节点,需要通过定位算法来确定它们的位置,具有无需测量距离,硬件要求低等点,在硬件条件有限的WSN得到了广泛的应用。
DV-Hop算法的定位步骤如下:
(1)各锚节点向通信范围内的邻居节点广播自身的位置信息。接收节点则记录到每个锚节点的最小跳数,同时忽略来自同一个锚节点的较大的跳数信息,而后将跳数值加1转发给邻居节点。
(2)每个锚节点根据所记录的其他锚节点的坐标信息和跳数,通过式(1)估算网络平均跳距距离。
式中,j为锚节点i数据表中的其他锚节点号,hopSij为锚节点i和j之间的跳数。
锚节点将所计算的平均跳距广播至整个网络后,未知节点仅记录所收到的第一个平均跳距,并向邻居节点转发,未知节点接收到平均跳距后,跟据所记录的跳数信息,按式(2)估算未知节点 i 到某个锚节点的距离:
(3)设P1(x1,y1), … ,Pn(xn,yn)表示n个锚节点的坐标位置,待定位节点D的位置为(x,y),其与标节点估计距离分别为d1, d2, … , dn-1,可以建立如下方程。
第一个方程组减去第后一个方程后,到得:
用线性方程组表示为AL= b,其中,
采用最小二乘法得到方程组的解为:
设定节点覆盖范围为100x100,总节点数为:100,信标节点数为3到30递增变化,通信半径为15、25、50,未知节点数等于总节点数减去锚节点数。采用归一化平均定位误差作为评价指标:
2. 蜣螂优化算法
详细介绍此处略,可参考DBO算法介绍
3. 部分代码展示
%% 基于蜣螂优化算法的无线传感器网络DVHop定位算法
%BorderLength ----- 正方形区域的边长,单位m
%NodeAmount ----- 网络节点的个数
%BeaconAmount ----- 信标节点数
%UnAmount ----- 未知节点数
%Sxy ----- 用于存储节点的序号,横坐标,纵坐标的矩阵
%Beacon ----- 信标节点坐标矩阵
%UN ----- 未知节点坐标矩阵
%Distance ----- 未知节点到信标节点距离矩阵
%h ----- 节点间初始跳数矩阵
%X ----- 节点估计坐标初始矩阵,X = [x,y]
%R ----- 节点间的通信距离,一般为10-100m
clear;close all;clc;
BorderLength = 200; %区域边界范围,200x200
NodeAmount = 200; %总的节点数200
BeaconAmount = 30; %信标节点数(锚节点)
UnAmount = NodeAmount - BeaconAmount; %未知节点数
R = 30; %通信距离
%在区域范围内随机生成节点,即总节点数NodeAmount个坐标
AreaC = BorderLength.*rand(2,NodeAmount);%[x1,...,xn;y1,...,yn;];
%为每个点添加序号,如第1,2,3。放在第1行
data = [(1:NodeAmount);AreaC];
%信标坐标信息
BeaconData = data(2:3,1:BeaconAmount);%提取2,3行存放的坐标
UnKnownData = data(2:3,BeaconAmount+1:end);%提取剩下的坐标为未知节点坐标
%画图
figure
plot(BeaconData(1,:),BeaconData(2,:),'r*','linewidth',1.5);%绘制信标(锚节点)
hold on
plot(UnKnownData(1,:),UnKnownData(2,:),'bo','linewidth',1.5)%绘制未知节点
grid on;
title('* 红色信标节点 蓝色未知节点')
4. 仿真结果展示
共包含2个文件夹:文件夹1
中是蜣螂优化算法用于Dvhop定位的效果展示,包括锚节点和未知节点分布图、Dvhop和DBO-Dvhop定位结果图、蜣螂优化曲线;文件夹2
中包括Dvhop和DBO-Dvhop在两个维度上的归一化定位误差对比图,两个维度分别是不同锚节点比例
和不同通信半径
。
5. 资源获取
可更换其他群智能优化算法,可以获取完整代码资源。