粒子群演算法

2021-08-18 22:55:40 字數 3020 閱讀 4385

**:

一、粒子群演算法的歷史

粒子群演算法源於複雜適應系統(complex adaptive system,cas)。cas理論於2023年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程「學習」或「積累經驗」改變自身結構與行為。整個系統的演變或進化包括:新層次的產生(小鳥的出生);分化和多樣性的出現(鳥群中的鳥分成許多小的群);新的主題的出現(鳥尋找食物過程中,不斷發現新的食物)。

所以cas系統中的主體具有4個基本特點(這些特點是粒子群演算法發展變化的依據):

粒子群演算法就是對乙個cas系統---鳥群社會系統的研究得出的。

粒子群演算法( particle swarm optimization, pso)最早是由eberhart和kennedy於2023年提出,它的基本概念源於對鳥群覓食行為的研究。設想這樣乙個場景:一群鳥在隨機搜尋食物,在這個區域裡只有一塊食物,所有的鳥都不知道食物在**,但是它們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢?最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。   

pso演算法就從這種生物種群行為特性中得到啟發並用於求解優化問題。在pso中,每個優化問題的潛在解都可以想象成d維搜尋空間上的乙個點,我們稱之為「粒子」(particle),所有的粒子都有乙個被目標函式決定的適應值(fitness value ),每個粒子還有乙個速度決定他們飛翔的方向和距離,然後粒子們就追隨當前的最優粒子在解空間中搜尋。reynolds對鳥群飛行的研究發現。鳥僅僅是追蹤它有限數量的鄰居但最終的整體結果是整個鳥群好像在乙個中心的控制之下.即複雜的全域性行為是由簡單規則的相互作用引起的。

二、粒子群演算法的具體表述

上面羅嗦了半天,那些都是科研工作者寫**的語氣,不過,pso的歷史就像上面說的那樣。下面通俗的解釋pso演算法。

pso演算法就是模擬一群鳥尋找食物的過程,每個鳥就是pso中的粒子,也就是我們需要求解問題的可能解,這些鳥在尋找食物的過程中,不停改變自己在空中飛行的位置與速度。大家也可以觀察一下,鳥群在尋找食物的過程中,開始鳥群比較分散,逐漸這些鳥就會聚成一群,這個群忽高忽低、忽左忽右,直到最後找到食物。這個過程我們轉化為乙個數學問題。尋找函式  y=1-cos(3*x)*exp(-x)

的在[0,4]最大值。

該函式的圖形如下:

當x=0.9350-0.9450

,達到最大值y=1.3706。為了得到該函式的最大值,我們在[0,4]之間隨機的灑一些點,為了演示,我們放置兩個點,並且計算這兩個點的函式值,同時給這兩個點設定在[0,4]之間的乙個速度。下面這些點就會按照一定的公式更改自己的位置,到達新位置後,再計算這兩個點的值,然後再按照一定的公式更新自己的位置。直到最後在y=1.3706這個點停止自己的更新。這個過程與粒子群演算法作為對照如下:

下面演示一下這個演算法執行一次的大概過程:

第一次初始化

第一次更新位置

第二次更新位置

第21次更新

最後的結果(30次迭代)

最後所有的點都集中在最大值的地方。

呵呵,現在粒子群演算法的大概思想就說到這裡。下節介紹標準的粒子群演算法。

標準的粒子群演算法

在上一節的敘述中,唯一沒有給大家介紹的就是函式的這些隨機的點(粒子)是如何運動的,只是說按照一定的公式更新。這個公式就是粒子群演算法中的位置速度更新公式。下面就介紹這個公式是什麼。在上一節中我們求取函式y=1-cos(3*x)*exp(-x)

的在[0,4]最大值。並在[0,4]之間放置了兩個隨機的點,這些點的座標假設為x1=1.5; x2=2.5;這裡的點是乙個標量,但是我們經常遇到的問題可能是更一般的情況--x為乙個向量的情況,比如二維的情況 z=2*x1+3*x22的情況。這個時候我們的每個粒子為二維,記粒子p1=(x11,x12),p2=(x21,x22),p3=(x31,x32),......pn=(xn1,xn2)。這裡n為粒子群群體的規模,也就是這個群中粒子的個數,每個粒子的維數為2。更一般的是粒子的維數為q,這樣在這個種群中有n個粒子,每個粒子為q 維。

由n個粒子組成的群體對q維(就是每個粒子的維數)空間進行搜尋。每個粒子表示為:xi=(xi1,xi2,xi3,...,xiq),每個粒子對應的速度可以表示為vi=(vi1,vi2,vi3,....,viq),每個粒子在搜尋時要考慮兩個因素:

1。自己搜尋到的歷史最優值 pi ,pi=(pi1,pi2,....,piq),i=1,2,3,....,n。

2。全部粒子搜尋到的最優值pg,pg=(pg1,pg2,....,pgq),注意這裡的pg只有乙個。

下面給出粒子群演算法的位置速度更新公式:

這裡有幾個重要的引數需要大家記憶,因為在以後的講解中將會經常用到:

它們是:

這樣乙個標準的粒子群演算法就結束了。

下面對整個基本的粒子群的過程給乙個簡單的圖形表示:

判斷終止條件可是設定適應值到達一定的數值或者迴圈一定的次數。

注意:這裡的粒子是同時跟蹤自己的歷史最優值與全域性(群體)最優值來改變自己的位置預速度的,所以又叫做全域性版本的標準粒子群優化演算法。

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

粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...

粒子群演算法

如前所述,pso模擬鳥群的捕食行為。設想這樣乙個場景 一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。pso從這種模型中得到啟示並用於解決優化問題。ps...

粒子群演算法

粒子群演算法也稱粒子群優化演算法 鳥群覓食演算法pso 屬於進化演算法的一種,和模擬退火演算法相似,它從隨機解出發通過迭代尋找最優解,通過適應度來評價解的品質,比遺傳演算法規則更為簡單。通過追隨當前搜尋到的最優值來尋找全域性最優。實現容易 精度高 收斂快是一種並行演算法。一 演算法介紹 1 每個尋優...