这个一个无线传感器网络定位算法仿真,可以直接在 MATLAB 上运行。其中各文件的功能如下:
主函数是算法的整体描述,主要步骤如下:
- 载入仿真无线传感器网络,包括锚点的位置信息,以及相邻节点之间的距离,这些仿真数据通过 initData.m 实现。
- 锚点将自身信息通过广播告知网络中其余节点,广播后其余节点均可得到锚点信息和自身距离锚点的最短路径,此步骤通过加权宽度遍历算法实现。
- 将最短路径作为直接距离,利用多边定位算法将未知节点的位置估计出来。
- 第 3 步得到的网络图和理论网络图有些区别,我们利用理论网络图相邻节点距离的平方和减去估计理论图相邻节点的平方和得到的值作为两个网络图的相似度,然后根据此进行优化,其中相似度计算由函数 fun() 实现。
- 利用 fun() 计算出来的相似度,对所有的估计节点进行逐个局部优化,此处的优化使用了 MATLAB
- 精度估计由 accuracy.m 提供,计算的是相对精度,计算公式为估计坐标和理论坐标的距离除以通信半径。
该文件主要负责生成随机无线传感器网络,其中无线传感器网络节点的通信半径是 0.4,无线传感器网络覆盖范围是 1x1。在无线传感器网络中有 4 个位置已知的传感器网络节点,称为锚点。网络中有 20 个位置未知的无线传感器网络节点,利用 rand() 函数随机生成。
无线传感器网络生成后需要初始化,所有的无线传感器节点立即感知邻居节点,并计算相邻节点之间的距离,在 MATLAB 软件中通过计算两点间距离实现,并通过矩阵存储相邻节点。
anchor(2, 4)
记录 4 个锚点的坐标的集合,anchor 的第i
列数据就是锚点i
的坐标。sensors(20, 2)
记录 20 个未知节点的坐标,用于测试和生成相邻节点之间的距离。netsa(4, 20)
记录锚点到邻居未知节点之间的距离。netss(20, 20)
记录未知节点之间的距离。
MATLAB 软件有一个内置函数 minsearch,该函数可以利用目标函数的约束找到优化解,fun 提供用以提供目标函数。
该文件用以计算最终得到的无线传感器网络定位图的平均相对精度误差。