一种基于遗传算法的无线传感器网络节点定位方法
技术领域
本发明属于无线传感器网络技术领域,具体是一种基于遗传算法的无线传感器网络节点定位方法。
背景技术
在无线传感器网络中,定位问题是一个亟待解决的问题,因为传感器网络的许多具体应用都要涉及到传感器节点的位置问题。例如高危车间人员抢救,老人、小孩追踪,最优路线导航,智能交通、物流管理等许多应用都要求网络节点预先知道自身的位置,并在通信和协作过程中利用位置信息完成应用要求。
一般的,在无线传感器网络中,根据是否需要测量实际节点的距离,无线定位机制一般可分为两种:基于测距的定位算法和不基于测距的定位算法。基于测距的定位算法首先测量节点之间的距离、角度或者其它连接性信息,然后进行空间位置的定位。基于测距的定位算法中,典型的测距算法有:到达时间(TOA)、到达时间差(TDOA)、到达角度(AOA)、无线信号强度指示(RSSI);典型的定位算法有:三边定位法(tri-lateration),三角定位法(triangulation),最大似然估计法(Maximum Likelihood estimation)。不基于测距的定位算法利用节点间的估计距离计算节点位置,典型有:凸规划、质心算法、DV-hop算法。
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。
发明内容
本发明的目的是提供一种在只有两个参考节点的情况下,仍然能够进行定位的基于遗传算法的无线传感器网络节点定位方法。
本发明包括如下步骤:
步骤1.建立二维直角坐标系,将一个参考节点放置于原点,另一个参考节点放置于直线y=x处;直线y=x将整个区域分为关于y=x对称的两部分,分别记为区域一和区域二,其中区域一对应于y>x;区域二对应于y<x;在移动节点以及直线y=x上部署传感器设备,设置一个标志量aero以表示移动节点所在区域位置;
步骤2:设置标志量aero初值,将移动节点放置于区域一,并令aero=1;当移动节点每感测到一次经过直线y=x的信号,就将该标志量aero进行取反操作;
步骤3:为移动节点所在坐标进行编码,直接采用实数编码,形式为(x,y);
步骤4:生成初始种群,根据解的可能范围随机产生N个解;
步骤5:计算个体的适应度,种群中各个个体的适应度
,其中
为个体数量为N的种群中第j个个体
由于测距误差所引入的偏差和;
分别表示第i个参考节点的横坐标、第i个参考节点纵坐标、第i个参考节点与移动节点的距离,i=1或2;
步骤6:选择复制,计算每个个体被选择复制的概率
,然后以此概率复制产生2×N个个体;
步骤7:交叉;把选择复制产生的2×N个个体随机配成N对,以设定的交叉率选择交叉,交叉的过程为:首先随机产生0~1的随机数
和
,然后计算所得新个体横坐标
和纵坐标
,不需交叉的则从一对中的两个个体中随机挑选一个个体;
其中
分别表示一对中的两个个体的横坐标,
分别表示一对中的两个个体的纵坐标;
步骤8:变异,以设定的变异率进行变异,即随机变异成可能的值;
步骤9:进化,将新种群和旧种群中的个体按照适应度大小排列,选取前N个作为新的种群;
步骤10:判断是否终止遗传算法,具体是:判断是否进化了指定的进化代数;若没有达到指定的进化代数,转至步骤6,若已到指定的进化代数,则转至步骤10;
步骤11:选取种群中适应度函数值最大的个体,若鉴定移动节点在区域一且所得个体y>x,或鉴定在区域二且所得个体y<x,则表示区域匹配,定位完成;
步骤12:若区域不匹配,则交换x,y坐标,定位完成。本发明具有的有益效果是:
相对于现有技术,本发明具有以下优点:由于遗传算法直接对结构对象进行操作,不存在求导和函数连续性的限定,故当参考节点只有两个时,可以将定位结果确定在两个位置,再由区域匹配得到最终定位结果。故本发明对减少参考节点数量有极大的意义。
附图说明
图1为坐标系部署示意图;
图2为定位流程图。
具体实施方式
以下结合附图对本发明作进一步说明。
一种基于遗传算法的无线传感器网络节点定位方法,涉及无线传感器网络中的参考节点和移动节点,坐标位置已知的节点称之为参考节点,坐标位置未知的节点称之为移动节点。该定位方法的特别之处在于:部署坐标系如图1所示,将一个参考节点部署在原点,另一个部署在直线y=x处,直线y=x将整个区域分为关于y=x对称的两部分,分别称为区域1和区域2(区域1:y>x;区域2:y<x),使得利用遗传算法得到的定位结果为准确结果或是交换横纵坐标即得准确结果;引入标志量以标志移动节点所在区域,设置好初值并使该标志量在每次移动节点经过直线y=x时取反,使得当移动节点在区域1,则标志量aero为1,当移动节点在区域2,则标志量aero为0;遗传算法直接对结构对象进行操作,不存在求导和函数连续性的限定,故当参考节点只有两个时,依旧可以得到定位结果。定位方法的流程图如图2所示,包括以下步骤:
步骤1:建立直角坐标系,将其中一个参考节点放置于原点,另一个放置于(100,100)处。
步骤2:在移动节点以及区域对角线(y=x)上安置传感器设备,设置一个标志量aero以表示移动节点所在区域位置。设置好标志量aero初值:将移动节点放置于区域1,并令aero=1。当移动节点每感测得一次经过对角线的信号,就将该标志量aero进行取反操作。这样,当移动节点在区域1,则标志量aero为1;当移动节点在区域2,则标志量aero为0。
步骤3:采用实数编码,形式为(x,y)。生成初始种群,根据解的可能范围随机产生N(种群个数)个解。
步骤4:计算个体的适应度。对于个体,由于理论上由公式(1)可以解得定位坐标,但是,由于测距误差的存在,故通过公式(2)计算种群中各个个体的适应度。
(2)
其中式(1)中,
分别表示第i(1~2)个参考节点的横坐标、纵坐标、测得与移动节点的距离。
为个体数量为N的种群中的第j个个体
由于测距误差引入的偏差和。
由于偏差和
的值越小,表示个体适应度越大,故适应度函数取为公式(3)。
步骤5:选择复制。对于每个个体,根据公式(4)计算每个个体被选择复制的概率
。然后以此概率复制产生2×N个个体。
步骤6:交叉。把选择复制产生的2×N个个体随机配成N对,以一定的交叉率选择交叉,交叉具体过程为,首先随机产生0~1的随机数m,然后计算公式(5)即为所得新个体横坐标。不需交叉的则从两个个体中随机挑选一个个体。这样复制产生的2×N个个体交叉后就变成了新的N个个体
其中式(5)中,
表示两个个体的横坐标。同理可计算纵坐标。
步骤7:变异。将步骤6所得的种群个体以一定的变异率进行变异,即随机变异成可能的值。
步骤8:进化。将新种群和旧种群中的个体按照适应度大小排列,选取前N个作为新的种群。
步骤9:判断是否终止遗传算法,具体是:判断是否进化了指定的进化代数;若没有,继续转步骤6选择复制,若已到则执行步骤10。
步骤10:选取种群中适应度函数值最大的个体。若鉴定移动节点在区域1且所得个体y>x,或鉴定在区域2且所得个体y<x,则表示区域匹配,定位结束;
步骤11:若区域不匹配,则交换x,y坐标,定位结束。
Matlab仿真实验
在一个100m×100m的无线传感器网络中,两个参考节点分别在原点和(100,100)处,测距误差sigma=2,种群个数N=100,进化代数maxgen=100,交叉率crossrate=0.5,变异率muterate=0.08,移动节点随机分布时,当分别采用本发明方法所得到的一次定位结果如表1所示。
表1
误差 |
2.19 |
1.92 |
1.63 |
0.55 |
3.87 |
2.40 |
1.74 |
2.64 |
4.19 |
3.85 |
定位x |
58.49 |
46.83 |
90.28 |
78.92 |
38.37 |
37.64 |
13.45 |
22.12 |
25.35 |
5.14 |
定位y |
51.52 |
32.65 |
44.45 |
38.45 |
59.97 |
30.03 |
78.48 |
95.19 |
47.62 |
20.06 |
实际x |
60.68 |
48.60 |
89.13 |
79.19 |
40.57 |
35.29 |
13.89 |
20.28 |
27.22 |
1.53 |
实际y |
51.55 |
33.40 |
43.29 |
37.98 |
56.78 |
30.50 |
76.80 |
97.08 |
43.87 |
21.40 |
定位误差公式为:
,其中:(x,y)为移动节点的真实坐标,(a,b)为本实施例方法得到的定位坐标,Error为本实施例定位方法的定位误差。从表1可见,当参考节点个数为两个时,本算法依旧可以可靠地定位。