一種簡單的粒子群演算法(PSO)的R語言實現

2021-07-13 18:05:42 字數 1124 閱讀 7971

粒子群演算法(pso)是一種重要的進化演算法,各種不同的粒子群演算法有是多種之多。r語言是一種被廣泛使用的統計語言,本文首先以r語言來實現乙個最簡單的粒子群演算法,然後再舉乙個例子,說明粒子群演算法(pso)迭代過程。

程式實現主要有三個步驟

步驟一:各種引數初始化;

步驟二:單個粒子歷史最優經驗

步驟三:所有粒子歷史最優經驗

程式實現的兩個關鍵點

關鍵一:在進行單個粒子歷史最優位置的時候,我們不需要儲存該粒子從開始到目前的所有位置,只需要在每次儲存最優的那個位置即可

關鍵二:注意每乙個w和v必須在(wmin,wmax)與(vmin,vmax)之中

################pso演算法實現################

##初始化pso演算法引數

#收斂因子k(類似於慣性係數的作用)

#學習因子初始化k*phi_1,k*phi_2,phi<-phi_1+phi_2

#粒子群位置初始化w,以及wmin,wmax

#粒子群速度初始化v,以及vmin,vmax

k<-0.729

phi_1<-2.05

phi_2<-2.05

#以上引數為參照前人的經驗

#初始化函式

inifunc<-function(dim,wmin,wmax,vmin,vmax,n)

##所有粒子歷史最優搜尋(gbest)

gbestfunc<-function(x,dim,n)

##pso 核心 function

psoafunc<-function(x,dim,wmin,wmax,vmin,vmax,n){

a<-x[-(n+1),1:dim]

b<-x[-(n+1),(dim+1):(2*dim)]

c<-x[-(n+1),2*dim+1]

for(i in 1:n){

neww<-a[i,]+b[i,]

for(j in 1:dim){

if(neww[j]>wmax || neww[j]

vmax || b[i,k]

vmax || b[i,k]

如有錯誤,歡迎指正!

原 粒子群演算法 PSO 的簡單應用

目錄 1.3 流程圖 2.簡單的pso例子 python 實現 參考資料 之前寫到優化的基本思想,裡面提到了智慧型演算法。目前有些學者對這些演算法並不認可,但是實際使用中,在維度比較低的情況下,群智慧型演算法確實能以很高的找到近似解。這篇以我最熟悉的pso開始,以demo的方式來 群智慧型演算法的使...

PSO粒子群演算法的python簡單實現備忘錄

粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 學習 或 積累經驗 改變自身結構與行為。整...

演算法(三)粒子群演算法PSO的介紹

一 引言 在講演算法之前,先看兩個例子 例子一 揹包問題,乙個書包,一堆物品,每個物品都有自己的價值和體積,裝滿書包,使得裝的物品價值最大。例子二 投資問題,n 個專案,第 i個專案投資為 ci 收益為 pi,總投資不得超過 c,如何選擇專案總收益最大。如前所述,pso 模擬鳥群的捕食行為。設想這樣...