基於PSO演算法的Rssi測距定位

2021-10-03 00:10:50 字數 2730 閱讀 2066

一:由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 ...