【定位優(yōu)化】基于麻雀搜索算法優(yōu)化無線傳感器非測距定位算法DVHop附matlab代碼
【定位優(yōu)化】基于麻雀搜索算法優(yōu)化無線傳感器非測距定位算法DVHop附matlab代碼
TT_Matlab
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,完整matlab代碼或者程序定制加qq1575304183。
1 簡介
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)技術(shù)在世界范圍內(nèi)一直是一個熱門的研究領(lǐng)域,有著重要的應(yīng)用前景,現(xiàn)已被廣泛應(yīng)用在軍事、環(huán)境監(jiān)測、工農(nóng)業(yè)等諸多領(lǐng)域。這些應(yīng)用都需要節(jié)點(diǎn)的位置信息,無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)定位為這些應(yīng)用提供了必要基礎(chǔ)。DV-Hop算法是節(jié)點(diǎn)定位算法中的一種重要方法,該算法能夠獲取目標(biāo)節(jié)點(diǎn)的位置信息。本文主要對DV-Hop算法進(jìn)行了理論研究同時對DVHop算法進(jìn)行了改進(jìn),研究主要內(nèi)容包括如下幾個方面:首先,本文介紹了無線傳感器網(wǎng)絡(luò)的基本理論,詳述了典型的測距定位算法和非測距定位算法以及未知節(jié)點(diǎn)位置計算方法,并且分析了定位算法的性能評價標(biāo)準(zhǔn)。其次,介紹了DV-Hop算法原理,具體分析了該算法的步驟并對該算法做了誤差分析。DV-Hop算法計算簡單,不要求額外的硬件設(shè)備,但是易受網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和未知節(jié)點(diǎn)位置估計算法的影響從而產(chǎn)生誤差。為了進(jìn)一步提高定位精度,通過使用麻雀搜索算法對其結(jié)果進(jìn)行優(yōu)化。仿真結(jié)果表明本文給出的麻雀搜索算法優(yōu)化DV-Hop算法能有效地提高定位覆蓋率和精度。
2 部分代碼
%_________________________________________________________________________%
%
麻雀優(yōu)化算法 %
%_________________________________________________________________________%
function
[Best_pos,Best_score,curve]=SSA(pop,Max_iter,lb,ub,dim,fobj)
ST
=
0.6;%預(yù)警值
PD
=
0.7;%發(fā)現(xiàn)者的比列,剩下的是加入者
SD
=
0.2;%意識到有危險麻雀的比重
PDNumber
=
round(pop*PD); %發(fā)現(xiàn)者數(shù)量
SDNumber
=
round(pop*SD);%意識到有危險麻雀數(shù)量
if(max(size(ub))
=
= 1)
ub
=
ub.*ones(1,dim);
lb
=
lb.*ones(1,dim);
end
%種群初始化
X0
=
initialization(pop,dim,ub,lb);
X
=
X0;
%計算初始適應(yīng)度值
fitness
=
zeros(1,pop);
for
i = 1:pop
fitness(i)
=
fobj(X(i,:));
end
[fitness,
index]= sort(fitness);%排序
BestF
=
fitness(1);
WorstF
=
fitness(end);
GBestF
=
fitness(1);%全局最優(yōu)適應(yīng)度值
for
i = 1:pop
X(i,
:
) = X0(index(i),:);
end
curve
=
zeros(1,Max_iter);
GBestX
=
X(1,:);%全局最優(yōu)位置
X_new
=
X;
for
i = 1: Max_iter
disp([’第’,num2str(i),’次迭代’])
BestF
=
fitness(1);
WorstF
=
fitness(end);
R2
=
rand(1);
for
j = 1:PDNumber
if(R2<ST)
X_new(j,
:
) = X(j,:).*exp(-j/(rand(1)*Max_iter));
else
X_new(j,
:
) = X(j,:) + randn()*ones(1,dim);
end
end
for
j = PDNumber+1:pop
%
if(j>(pop/2))
if(j>(pop
- PDNumber)/2 + PDNumber)
X_new(j,
:
)= randn().*exp((X(end,:) - X(j,:))/j^2);
else
%產(chǎn)生-1,1的隨機(jī)數(shù)
A
=
ones(1,dim);
for
a = 1:dim
if(rand()>0.5)
A(a)
=
-1;
end
end
AA
=
A’*inv(A*A’);
X_new(j,
:
)= X(1,:) + abs(X(j,:) - X(1,:)).*AA’;
end
end
Temp
=
randperm(pop);
SDchooseIndex
=
Temp(1:SDNumber);
for
j = 1:SDNumber
if(fitness(SDchooseIndex(j))>BestF)
X_new(SDchooseIndex(j),
:
) = X(1,:) + randn().*abs(X(SDchooseIndex(j),:) - X(1,:));
elseif(fitness(SDchooseIndex(j))
=
= BestF)
K
=
2*rand() -1;
X_new(SDchooseIndex(j),
:
) = X(SDchooseIndex(j),:) + K.*(abs( X(SDchooseIndex(j),:) - X(end,:))./(fitness(SDchooseIndex(j)) - fitness(end) + 10^-8));
end
end
%邊界控制
for
j = 1:pop
for
a = 1: dim
if(X_new(j,a)>ub)
X_new(j,a)
=
ub(a);
end
if(X_new(j,a)<lb)
X_new(j,a)
=
lb(a);
end
end
end
%更新位置
for
j=1:pop
fitness_new(j)
=
fobj(X_new(j,:));
end
for
j = 1:pop
if(fitness_new(j)
< GBestF)
GBestF
=
fitness_new(j);
GBestX
=
X_new(j,:);
end
end
X
=
X_new;
fitness
=
fitness_new;
%排序更新
[fitness,
index]= sort(fitness);%排序
BestF
=
fitness(1);
WorstF
=
fitness(end);
for
j = 1:pop
X(j,
:
) = X(index(j),:);
end
curve(i)
=
GBestF;
end
Best_pos
=
GBestX;
Best_score
=
curve(end);
end
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]印雷, 顧德, 劉飛. 基于改進(jìn)麻雀搜索算法優(yōu)化的DV-Hop定位算法[J]. 傳感技術(shù)學(xué)報, 2021, 34(5):6.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
-
2023年各省最新電價一覽!8省中午執(zhí)行谷段電價! 2023-01-03
-
PPT導(dǎo)出高分辨率圖片的四種方法 2022-09-22
-
全國消防救援總隊主官及簡歷(2023.2) 2023-02-10
-
盤點(diǎn) l 中國石油大慶油田現(xiàn)任領(lǐng)導(dǎo)班子 2023-02-28
-
我們的前輩!歷屆全國工程勘察設(shè)計大師完整名單! 2022-11-18
-
關(guān)于某送變電公司“4·22”人身死亡事故的快報 2022-04-26
