粒子群演算法(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 模擬鳥群的捕食行為。設想這樣...