粒子群演算法(三)區域性版本

2021-07-07 10:22:50 字數 1294 閱讀 5930

在全域性的標準粒子群演算法中,每個粒子速度的更新是根據兩個因素變化的。

這兩個因素是:

1.粒子自己歷史最優值 pi。

2.粒子群體的全域性最優值 pg。

如果改變粒子速度更新公式,讓每個粒子速度的更新根據以下兩個因素進行:a.粒子自己歷史最優值p

i。b.粒子

鄰域內粒子的最優值pn

k。其餘保持跟全

局的標準粒子群演算法一樣,這個演算法就變為區域性的粒子群演算法。

一般乙個粒子i的鄰域隨著迭代次數的增加而逐漸增加,開始第一次迭代,它的鄰域為0,隨著迭代次數鄰域線性變大,最後鄰域擴充套件到整個粒子群,這時就變成全域性的粒子群演算法了。經過實踐證明:全域性的粒子群演算法收斂速度快,但是容易陷入區域性最優。區域性的粒子群演算法收斂速度慢,但是很難陷入區域性最優。現在的粒子群演算法大都在收斂速度與擺脫區域性最優這兩個方面下功夫。其實這兩個方面是矛盾的,這就要看如何更好的折中了。

根據選取鄰域的方式不同,區域性的粒子群演算法有很多不同的實現方法。

第一種方法:按照粒子的編號取粒子的鄰域,取法有四種:1,環形取法 2,隨機環形取法 3,輪形取法 4,隨機輪形取法。

1  環形

3 輪形

對環形取法的一點說明:以粒子1為例,當鄰域是0的時候,鄰域是它本身,當鄰域是1時,鄰域為2,8;當鄰域是2時,鄰域是2,3,7,8;......,以此類推,一直到鄰域為4,這個時候鄰域擴充套件到整個粒子群體。

據文獻介紹(國外的文獻),採用輪形拓撲結構,pso的效果很好。

第二種方法:按照粒子的歐式距離取粒子的鄰域

在第一種方法中,按照粒子的編號來得到粒子的鄰域,但是這些粒子其實可能在實際位置上並不相鄰,於是suganthan提出基於空間距離的劃分方案,在迭代中計算每乙個粒子與群中其他粒子的距離。記錄任何2個粒子間的最大距離為dm。對每一粒子按照||xa-xb||/dm計算乙個比值。其中||xa-xb||是當前粒子a到b的距離。而選擇閾值frac根據迭代次數而變化。當另一粒子b滿足||xa-xb||/dm

這種辦法經過實驗,取得較好的應用效果,但是由於要計算所有粒子之間的距離,計算量大,且需要很大的儲存空間,所以該方法一般不經常使用。

人智導(三) 區域性搜尋

搜尋的目的 系統地探查狀態空間,去發現從初始狀態到目標的途徑 放寬約束條件 一些現實問題的解決 現實應用中很多問題 發現目標,而非達到目標的路徑 如何描述目標狀態?需要完全狀態 complete state 表示 舉例 八皇后問題 問題形式化表示 搜尋過程 應用問題 發現目標,而不是達到目標的途徑 ...

演算法(三)粒子群演算法之區域性粒子

在全域性版的標準粒子群演算法中,每個粒子的速度的更新是根據兩個因素來變化的,這兩個因素是 1.粒子自己歷史最優值pi。2.粒子群體的全域性最優值 pg。如果改變粒子速度更新公式,讓每個粒子的速度的更新根據以下兩個因素更新,a.粒子自己歷史最優值pi。b.粒子鄰域內粒子的最優值 pnk。其餘保持跟全域...

Vue基礎語法(三)區域性元件和全域性元件

1.根元件 new vue 建立的元件,一般不明確自身的模板,模板就採用掛載點 2.區域性元件 local component 2.全域性元件 vue.component 1.乙個元件就是乙個vue例項 2.元件具有自身的template 3.元件的模板只能有乙個根標籤 4.子元件的data具有作用...