【WSN定位】基于蜣螂优化算法DBO的Dvhop定位算法 不同锚节点比例和不同通信半径情况下对比【Matlab代码#45】

news/2024/11/17 19:43:50/

文章目录

    • 【可更换其他算法,`获取资源`请见文章第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. 资源获取

可更换其他群智能优化算法,可以获取完整代码资源。


http://www.ppmy.cn/news/694692.html

相关文章

Java -- XXL-JOB分布式任务调度平台

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址…

Matlab遗传算法和KSW熵法实现灰度图像阈值分割(附上完整源码+图片)

灰度图像阈值分割是一种常用的图像分割方法,可以将图像中的物体和背景分开,便于后续的图像处理和分析。本文将介绍如何使用Matlab编程实现灰度图像阈值分割的方法,其中使用了遗传算法和KSW熵法。 文章目录,完整源码数据见文末下载…

OSChina 周三乱弹 ——一首诗解释程序人生

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2017)请戳(这里) 【今日歌曲】 莱布妮子 :分享Bullet for My Valentine的单曲《Tears Dont Fall (Acoustic)》 《Tears Dont Fall (Acoustic)》- …

【概率论】独立性作业(二)

文章目录 填空题填空题 设 A₁,A₂,A₃相互独立,且P(A_{i})=2 \sqrt {3},i=1,2,3.试求A₁,A₂,A₃中 (1) 至少出现一个的概率=____ 【正确答案:26/27】; (2) 恰好出现一个的概率=____ 【正确答案:2/9】; (3) 最多出现一个的概率=____ 【正确答案:7/27】; 解: (1) 所求概率为 P…

Linux--运行指令的本质

本质: ①找到它 which的作用就是找到它 ②运行它 示例: ①告诉系统要运行的指令,然后系统去查找它的路径并运行它 ②自己告诉系统自己要运行的路径,然后系统运行它 注意:a.out不能运行,而./a.out能运行…

042_Unicode对照表八

1. Unicode对照表6300-78FF 1.1. 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Unicode对照表6300-78FF</title><meta charse…

PostgreSQL 数据库NULL值的默认排序行为与查询、索引定义规范 - nulls first\last, asc\desc...

背景 在数据库中NULL值是指UNKNOWN的值&#xff0c;不存储任何值&#xff0c;在排序时&#xff0c;它排在有值的行前面还是后面通过语法来指定。 例如 -- 表示null排在有值行的前面 select * from tbl order by id nulls first; -- 表示null排在有值行的后面 select * from t…

ANR 优化实践系列3 实例剖析集锦

概述 在前文&#xff0c;我们用了较多的篇幅介绍了ANR 优化实践系列1 设计原理及影响因素&#xff0c;并根据不同场景进行了分类&#xff0c;如&#xff1a;当前消息严重耗时&#xff0c;历史消息耗时严重&#xff0c;业务异常密集执行&#xff0c;进程内资源抢占&#xff0c;…