【WSN定位】基于matlab磷虾群算法求解WSN定位优化问题【含Matlab源码 448期】
一、 磷虾群算法简介
通过研究南极磷虾觅食和生活习性的仿真模拟实验, 2012年Gandomi和Alavi提出了一种处理复杂优化问题的磷虾群算法。KH算法仍然属于粒子智能算法, 它采用实数编码随机产生初始种群。KH算法总是重复完成3种运动, 通过迭代搜索直至最佳位置。每一只磷虾的进化受3个运动分量的协同影响:邻居诱导、觅食活动和随机扩散。
KH算法采用拉格朗日模型:
其中Ni是邻居诱导, Fi是觅食活动, Di是随机扩散, i=1, 2, …NP, NP是种群数。
运动分量1:受周围磷虾“邻居”诱导的运动速度Ni
其中, Nmax为最大诱导速度, αi为诱导方向, ωn为诱导惯性权重。
运动分量2:磷虾个体的觅食运动速度Fi
其中, Vf是最大觅食速度, βi为觅食方向, ωf为觅食惯性权重, βifood和βibest分别为受“食物”和粒子本身历史最优个体诱导的方向。
运动分量3:磷虾个体的随机扩散运动速度Di
其中, Dmax为最大随机扩散速度, σ为随机扩散方向。
基于上述3种运动分量, 每一磷虾从时间t到t+Δt的更新后位置应该表示为
二、部分源代码
clc
clear
close all
global N M %%N是未知节点数目,M是已知节点数目
ll=10;
dd=10;
N=1;M=4;
Vmax=1;
Vmin=-1;
number=N+M;
rand('state',sum(100*clock)*rand(1))
nodecoor0 =[0 0
0 dd
dd 0
dd dd ];
nodecoor =[dd*rand(N,2)
nodecoor0];
% nodecoor =[dd*rand(N+M,2)];
actualunknownnodecoor=nodecoor(1:N,:) ; %取50个点为未知的,未知节点实际坐标随机分布在dd*dd的区域内
actualunknownnodecoor1=actualunknownnodecoor' ;
undis=L2_distance(nodecoor',nodecoor') ; %%计算节点两两之间的欧拉距离
noise=zeros((N+M),(N+M));
noise_value=1;
for i=1:N
for j=1:(N+M)
if i<j
noise(i,j)=noise_value;
noise(j,i)=noise(i,j);
end
end
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
[4]李玲纯,高来鑫.改进磷虾群算法在变电站选址中的应用[J].重庆工商大学学报(自然科学版). 2018,35(03)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/125106945
- 点赞
- 收藏
- 关注作者
评论(0)