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

2021-07-08 15:37:27 字數 3475 閱讀 1682

一、引言

在講演算法之前,先看兩個例子:

例子一:揹包問題,乙個書包,一堆物品,每個物品都有自己的價值和體積,裝滿書包,使得裝的物品價值最大。

例子二:投資問題,n

個專案,第

i個專案投資為

ci 收益為

pi,總投資不得超過

c,如何選擇專案總收益最大。

如前所述,pso

模擬鳥群的捕食行為。設想這樣乙個場景:一群鳥在

隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。

二、演算法介紹

在計算智慧型(computational intelligence)

領域有兩種基於群智慧型的演算法

.蟻群演算法(ant colony optimization)和

pso粒子群演算法

(particle swarm optimization). 

粒子群優化演算法(pso)是一種進化計算技術

(evolutionary computation)

,1995 

年由eberhart 

博士和kennedy 

博士提出,源於對鳥群捕食的行為研究 。該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有序的演化過程,從而獲得最優解。

pso同遺傳演算法類似,是一種基於迭代的優化演算法。

系統初始化為一組隨機解,通過迭代搜尋最優值。但是它沒有遺傳演算法用的交叉(crossover)

以及變異

(mutation)

,而是粒子在

解空間追隨最優的粒子進行搜尋。同遺傳演算法比較,pso

的優勢在於簡單容易實現並且沒有許多引數需要調整。目前已廣泛應用於函式優化,神經網路訓練,模糊系統控制以及其他遺傳演算法的應用領域。

pso從這種模型中得到啟示並用於解決優化問題。

pso中,每個優化問題的解都是搜尋空間中的乙隻鳥。我們稱之為「粒子

」。所有的粒子都有乙個由被優化的函式決定的適應值

(fitness value)

,每個粒子還有乙個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在

解空間中搜尋。

pso 初始化為一群隨機粒子

(隨機解

)。然後通過迭代找到

最優解。在每一次迭代中,粒子通過跟蹤兩個"極值"

來更新自己。第乙個就是粒子本身所找到的最優解,這個解叫做個體極值

pbest

。另乙個極值是整個種群目前找到的最優解,這個極值是全域性極值

gbest

。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是區域性極值。

三、粒子公式

在找到這兩個最優值時,粒子根據如下的公式來更新自己的速度和新的位置:

v = w * v + c1 * rand() * (pbest - present) + c2 * rand() * (gbest - present) (a)

present = present + v (b)

v 是粒子的速度

, w是慣性權重

,present 

是當前粒子的位置

. pbest and gbest 

如前定義 

rand () 

是介於(0, 

1)之間的隨機數

. c1, c2 

是學習因子

. 通常 

c1 = c2 = 2.

四、實數編碼

不需要像遺傳演算法一樣是二進位制編碼(

或者採用針對實數的

遺傳操作.例如對於問題 

f(x) = x1^2 + x2^2+x3^2 

求解, 

粒子可以直接編碼為 

(x1, x2, x3), 

而適應度函式就是f(x). 

接著我們就可以利用前面的過程去尋優

.這個尋優過程是乙個疊代過程

, 中止條件一般為設定為達到最大迴圈數或者最小錯誤

pso中並沒有許多需要調節的引數

,下面列出了這些引數以及經驗設定

粒子數: 一般取 

20 – 40. 

其實對於大部分的問題

10個粒子已經足夠可以取得好的結果

, 不過對於比較難的問題或者特定類別的問題

, 粒子數可以取到

100 

或 200

粒子的長度: 

這是由優化問題決定

, 就是問題解的長度

粒子的範圍: 

由優化問題決定

,每一維可以設定不同的範圍

vmax: 最大速度

,決定粒子在乙個迴圈中最大的移動距離

,通常設定為粒子的範圍寬度

,例如上面的例子裡

,粒子 

(x1, x2, x3) x1 

屬於 [-10, 10], 

那麼 vmax 

的大小就是 20

學習因子: c1 

和 c2 

通常等於 

2. 不過在文獻中也有其他的取值

. 但是一般 

c1 等於 

c2 並且範圍在0和

4之間中止條件: 

最大迴圈數以及最小錯誤要求

. 例如

, 在上面的神經網路訓練例子中

, 最小錯誤可以設定為

1個錯誤分類

, 最大迴圈設定為

2000, 

這個中止條件由具體的問題確定.

全域性pso

和區域性pso: 

我們介紹了兩種版本的粒子群優化演算法

: 全域性版和區域性版

. 前者速度快不過有時會陷入區域性最優

. 後者收斂速度慢一點不過很難陷入區域性最優

. 在實際應用中

, 可以先用全域性

pso找到大致的結果

,再用區域性

pso進行搜尋.

五、慣性權重

另外的乙個引數是慣性權重, shi 

和eberhart

指出(a modified particle swarm optimizer,1998)

:當vmax

很小時(對

schaffer的f6

函式,vmax<=2),

使用接近於

1的慣性權重;當

vmax

不是很小時(對

schaffer的f6

函式,vmax>=3),

使用權重

w=0.8較好.

如果沒有

vmax

的資訊,

使用0.8

作為權重也是一種很好的選擇

.慣性權重

w很小時偏重於發揮粒子群演算法的區域性搜尋能力;慣性權重很大時將會偏重於發揮粒子群演算法的全域性搜尋能力。

粒子群(pso)演算法

一 粒子群演算法的概念 粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡...

粒子群演算法 PSO

1995年美國社會心理學家kennedy和電氣工程師eberhart共同提出粒子群優化演算法 particle swarm optimization,pso pso演算法的基本思想利用生物學家heppner的生物群體模型,模擬鳥類覓食過程。鳥類飛行過程相互交流,當乙個鳥飛向棲息地時,其他鳥兒也會跟著...

優化演算法 四 粒子群優化演算法 PSO

粒子群演算法 particle swarm optimization,pso 是一種模仿鳥群 魚群覓食行為發展起來的一種進化演算法。其概念簡單易於程式設計實現且執行效率高 引數相對較少,應用非常廣泛。粒子群演算法於1995年提出。粒子群演算法是優化演算法中最簡單,最沒有心機的演算法了,也是入門優化演...