1 简介
磷虾群算法(Krill Herd Algorithm,KHA)是 Gandomi 等于2012年提出的一种新型优化算法 。具体原理如下:



2 部分代码
clcclearclose allglobal 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 00 dddd 0dd 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:Nfor j=1:(N+M)if i<jnoise(i,j)=noise_value;noise(j,i)=noise(i,j);endendendrandn('state',sum(100*clock)*randn(1))for i=(1):(N+M)for j=(1):(N+M)if(i<j) %%当节点之间距离在通信半径内,则测距有效,权重函数设为1undis1(i,j)=undis(i,j)+sqrt(noise(i,j))*randn;undis1(j,i)=undis1(i,j);endendendfor i=(N+1):(N+M)for j=(N+1):(N+M)if(i<j) %%当节点之间距离不在通信半径内,则测距无效,权重函数设为0undis1(i,j)=undis(i,j);undis1(j,i)=undis1(i,j);endendendrefnodecoor=nodecoor(N+1:N+M,:);node=[actualunknownnodecoor;refnodecoor];node1=actualunknownnodecoor;% calcoor=50*rand(N,2) ;[calcoor1,y,x_best]=KH(undis1,N,M,refnodecoor,dd) ;figureplot(refnodecoor(:,1),refnodecoor(:,2),'bo');hold onplot(actualunknownnodecoor(1,1),actualunknownnodecoor(1,2),'gs'); hold onplot(x_best(1,1),x_best(2,1),'r*'); hold onlegend('基站位置','目标真实位置','KH定位位置')figureplot(y)xlabel('迭代次数')ylabel('适应度值')
3 仿真结果


4 参考文献
[1]程庆, 张水锋, 陈帅. 基于混沌粒子群的WSN定位算法研究与matlab仿真[J]. 赤峰学院学报:自然科学版, 2018, 34(6):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
本文介绍了磷虾群算法的原理,通过代码演示了如何在MATLAB中实现该优化算法,并展示了其在无线传感器网络定位中的仿真结果。作者分享了相关技术细节和应用实例,适合对智能优化算法感兴趣的读者。
854

被折叠的 条评论
为什么被折叠?



