一:由rssi定位(平面)建立模型
matlab作圖如下:
附**:node_num為錨節點數,node(i).x,node(i).y為各個錨節點座標,zd(i)為rssi測量距離
[x,y]
=meshgrid(1
:0.5
:100,1
:0.5
:100);
z=0;for i=
1:node_num
z=z+
(sqrt
((x-
node
(i).x).^
2+(y-node
(i).y).^
2)-zd
(i)).^
2;end
%**
****
****
****
****
****
****
****
****
****
***%pso演算法
%%引數初始化
c1=1.45445
;c2=
1.45445
;maxgen=
100;
%迭代次數
sizeop=
100;
%種群大小
vmax=1;
vmin=-1
;%速度限制
popmax=
100;
popmin=0;
%邊界限定
%%初始化粒子位置和速度
for i=
1:sizeop
pop(i,:)=
(100
*rands(1
,2)+
100)/2
;%初始化位置,由於是二元函式,所以是兩組
v(i,:)=
rands(1
,2);
%初始化速度,2組
%計算適應度
fitness
(i)=
fun(
pop(i,:)
,node_num,node,zd)
;end
%%個體極值和群體極值
[bestfitness,bestindex]
=min
(fitness)
;zbest=
pop(bestindex,:)
;%群體最佳
gbest=
pop();
%個體最佳
fitnessgbest=fitness;
%個體最佳適應度值
fitnesszbest=bestfitness;
%群體最佳適應度值
%%迭代尋優
for i=
1:maxgen
for j=
1:sizeop
%速度更新
v(j,:)=
v(j,:)
+c1*rand*
(gbest
(j,:)-
pop(j,:)
)+c2*rand*
(zbest-
pop(j,:)
);v(j,
find(v
(j,:
)>vmax)
)=vmax;
v(j,
find(v
(j,:
))=vmin;
%種群位置更新
pop(j,:)=
pop(j,:)
+v(j,:);
pop(j,
find
(pop
(j,:
)>popmax)
)=popmax;
pop(j,
find
(pop
(j,:
))=popmin;
%適應度值更新
fitness
(j)=
fun(
pop(j,:)
,node_num,node,zd)
; end
for j=
1:sizeop
%個體最優更新
iffitness
(j)<
fitnessgbest
(j)gbest
(j,:)=
pop(j,:)
;fitnessgbest
(j)=
fitness
(j);
end%群體最優更新
iffitness
(j)zbest=
pop(j,:)
; fitnesszbest=
fitness
(j);
endend
yy(i)=fitnesszbest;
end
[fitnesszbest,zbest]
其中fun()為最上面rssi適應方程的平方
**結果
PSO演算法及其對函式優化問題的處理 PSO演算法改進
速度和位置的更新 每個粒子的速度和位置都以隨機方式進行初始化。而後粒子就朝著全域性最優和個體最優的方向靠近。引數解釋 有關c1,c2的補充 1 低的值允許粒子在被拉回前可以在目標區域外徘徊,高的值則導致粒子突然衝向或超越目標區域 2 若c1 0,則粒子沒有認知能力,在粒子的相互作用下,容易陷入區域性...
基於FPGA的雙目測距工程
先寫點,後面準備把自己做了半年的東西拿出來寫寫,今天先寫個預告,後面詳細寫出來,包括演算法,rtl,後面再zedboard上進行了測試,不過由於資源的問題還暫時放不下,後面還沒找到時間進一步優化 後面有時間把這些過程全寫出來 趁著有時間開始寫一寫,自己一直從事傳統fpga影象處理方面,主要是編譯碼,...
最基本PSO演算法的C 實現
按照james kennedy russell eberhart 1995 的版本,演算法過程如下 x pso p particle initialization for i 1 to it max for each particle p in p do fp f p if fp isbetter ...