【Dvhop定位】基于粒子群算法的Dvhop定位算法 PSO-Dvhop定位算法【Matlab代码#86】


【可更换其他算法,获取资源请见文章第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. 粒子群优化算法

详细介绍此处略。

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);%提取剩下的坐标为未知节点坐标

4. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取

可以获取完整代码资源。👇👇👇👀名片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天`南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值