粒子羣優化算法簡介

  好好學數學。算法

一.問題來源

  經朋友介紹,幫一個夥計作了下PSO的優化.......賺點生活費而已。網絡

  歡迎你們和我聯繫作算法類項目,QQ:1198552514異步

二.背景介紹

2.1 人工生命

  人工生命:研究具備某些生命基本特徵的人 工系統。包括兩方面的內容:
  一、研究如何利用計算技術研究生物現象;
  二、 研究如何利用生物技術研究計算問題。
  咱們關注的是第二點。已有不少源於生物現象的計算技巧,例如神經網絡和遺傳算法。如今討論另外一種生物系統---社會系統:由簡單個體組成的羣落和環境及個體之間的相互行爲。函數

2.2 羣智能

  模擬系統利用局部信息從而能夠產生不可預測的羣行爲。咱們常常可以看到成羣的鳥、魚或者浮游生物。這些生物的彙集行爲有利於它們覓食和逃避捕食者。它們的羣落動輒以10、百、千甚至萬計,而且常常不存在一個統一的指揮者。它們是如何完成彙集、移動這些功能呢?性能

  Millonas在開發人工生命算法時(1994年),提出羣體智能概念並提出五點原則:
  一、接近性原則:羣體應可以實現簡單的時空計算;
  二、優質性原則:羣體可以響應環境要素;
  三、變化相應原則:羣體不該把本身的活動限制在一狹小範圍;
  四、穩定性原則:羣體不該每次隨環境改變本身的模式;
  五、適應性原則:羣體的模式應在計算代價值得的時候改變。學習

2.3 模擬羣

  對鳥羣行爲的模擬: Reynolds、Heppner和Grenader提出鳥羣行爲的 模擬。他們發現,鳥羣在行進中會忽然同步的改 變方向,散開或者彙集等。那麼必定有某種潛在 的能力或規則保證了這些同步的行爲。這些科學 家都認爲上述行爲是基於不可預知的鳥類社會行 爲中的羣體動態學。 在這些早期的模型中僅僅依賴個體間距的操做, 也就是說,這中同步是鳥羣中個體之間努力保持 最優的距離的結果。優化

  對魚羣行爲的研究:生物社會學家E.O.Wilson對魚羣進行了研究。提出:「至少在理論上,魚羣的個體成員可以受益於羣體中其餘個體在尋找食物的過程當中的發現和之前的經驗,這種受益超過了個體之間的競爭所帶來的利益消耗,無論任什麼時候候食物資源不可預知的分散。」這說明,同種生物之間信息的社會共享可以帶來好處。這是PSO的基礎。 編碼

三.算法介紹

  粒子羣優化算法的基本思想是經過羣體中個體之間的協做和信息共享來尋找最優解.
  PSO的優點在於簡單容易實現而且沒有許多參數的調節。目前已被普遍應用於函數優化、神經網絡訓練、模糊系統控制以及其餘遺傳算法的應用領域。spa

3.1 問題提出

  設想這樣一個場景:一羣鳥在隨機的搜索食物。 在這個區域裏只有一塊食物,全部的鳥都不知 道食物在那。可是它們知道本身當前的位置距 離食物還有多遠。 那麼找到食物的最優策略是什麼? 最簡單有效的就是搜尋目前離食物最近的鳥的 周圍區域。.net

3.2 問題抽象

  鳥被抽象爲沒有質量和體積的微粒(點),並延伸到N維空間,粒子I 在N維空間的位置表示爲矢量Xi=(x1,x2,…,xN),飛行速度表示爲矢量Vi=(v1,v2,…,vN).每一個粒子都有一個由目標函數決定的適應值(fitness value),而且知道本身到目前爲止發現的最好位置(pbest)和如今的位置Xi.這個能夠看做是粒子本身的飛行經驗.除此以外,每一個粒子還知道到目前爲止整個羣體中全部粒子發現的最好位置(gbest)(gbest是pbest中的最好值).這個能夠看做是粒子同伴的經驗.粒子就是經過本身的經驗和同伴中最好的經驗來決定下一步的運動。  

3.3 算法描述

  PSO初始化爲一羣隨機粒子(隨機解)。而後經過迭代找到最優解。在每一次的迭代中,粒子經過跟蹤兩個「極值」(pbest,gbest)來更新本身。

  在找到這兩個最優值後,粒子經過下面的公式來更新本身的速度和位置。

  (我記得Vi須要乘以慣性權重)。

  i=1,2,…,M,M是該羣體中粒子的總數;Vi 是粒子的速度; pbest和gbest如前定義; rand()是介於(0、1)之間的隨機數; Xi 是粒子的當前位置。 c1和c2是學習因子,一般取c1= c2=2 在每一維,粒子都有一個最大限制速度Vmax,若是 某一維的速度超過設定的Vmax ,那麼這一維的速度 就被限定爲Vmax 。( Vmax >0) 以上面兩個公式爲基礎,造成了後來PSO 的標準形式。

3.4 算法優化

  1998年shi等人在進化計算的國際會議上 發表了一篇論文《A modified particle swarm optimizer》對前面的公式進行了修正。引入 慣性權重因子。值較大,全局尋優能力強,局部尋優能力弱; 值較小反之。

  初始時,shi將 取爲常數,後來實驗發現,動 態 可以得到比固定值更好的尋優結果。動態 能夠在PSO搜索過程當中線性變化,也可根據PSO 性能的某個測度函數動態改變。 目前,採用較多的是shi建議的線性遞減權值 (linearly decreasing weight, LDW)策略。

3.4 標準PSO算法流程

  標準PSO算法的流程:

  Step1:初始化一羣微粒(羣體規模爲m),包括隨機位置和 速度;

  Step2:評價每一個微粒的適應度;

  Step3:對每一個微粒,將其適應值與其通過的最好位置 pbest做比較,若是較好,則將其做爲當前的 最好位置pbest;

  Step4:對每一個微粒,將其適應值與其通過的最好位置 gbest做比較,若是較好,則將其做爲當前的 最好位置gbest;

  Step5:根據(2)、(3)式調整微粒速度和位置;

  Step6:未達到結束條件則轉Step2。

  迭代終止條件根據具體問題通常選爲最大迭代次數Gk或(和)微粒羣迄今爲止搜索到的最優位置知足預約最小適應閾值。

3.5 參數分析

  方程中pbest和gbest分別表示微粒羣的局部和 全局最優位置,當C1=0時,則粒子沒有了認知能力, 變爲只有社會的模型(social-only):

  被稱爲全局PSO算法.粒子有擴展搜索空間的能力,具備 較快的收斂速度,但因爲缺乏局部搜索,對於複雜問題 比標準PSO 更易陷入局部最優。

  當C2=0時,則粒子之間沒有社會信息,模型變爲 只有認知(cognition-only)模型:

  被稱爲局部PSO算法。因爲個體之間沒有信息的 交流,整個羣體至關於多個粒子進行盲目的隨機 搜索,收斂速度慢,於是獲得最優解的可能性小。

  羣體規模m 通常取20~40,對較難或特定類別的問題 能夠取到100~200。

  最大速度Vmax決定當前位置與最好位置之間的區域的 分辨率(或精度)。若是太快,則粒子有可能越過極小 點;若是太慢,則粒子不能在局部極小點以外進行足 夠的探索,會陷入到局部極值區域內。這種限制能夠 達到防止計算溢出、決定問題空間搜索的粒度的目的。

  權重因子 包括慣性因子 和學習因子c1和c2。 使粒子 保持着運動慣性,使其具備擴展搜索空間的趨勢,有 能力探索新的區域。C1和c2表明將每一個粒子推向Pbest 和gbest位置的統計加速項的權值。較低的值容許粒子 在被拉回以前能夠在目標區域外徘徊,較高的值致使粒 子忽然地衝向或越過目標區域。

四.優化PSO

4.1 引入收斂因子,不要慣性權重

  一般設c1=c2=2。Suganthan的實驗代表:c1和c2 爲常數時能夠獲得較好的解,但不必定必須等於2。 Clerc引入收斂因子(constriction factor) K來保證 收斂性。

  一般取 爲4.1,則K=0.729.實驗代表,與使 用慣性權重的PSO算法相比,使用收斂因子的 PSO有更快的收斂速度。其實只要恰當的選取 和c一、c2,兩種算法是同樣的。所以使用收 斂因子的PSO能夠看做使用慣性權重PSO的特 例。 恰當的選取算法的參數值能夠改善算法的性能。

4.2 離散二進制粒子羣

  基本PSO是用於實值連續空間,然而許多實際問題是組合 優化問題,於是提出離散形式的PSO。 速度和位置更新式爲:

4.3 PSO和GA比較

  共性: (1)都屬於仿生算法。 (2) 都屬於全局優化方法。 (3) 都屬於隨機搜索算法。 (4) 都隱含並行性。 (5) 根據個體的適配信息進行搜索,所以不受函數 約束條件的限制,如連續性、可導性等。 (6) 對高維複雜問題,每每會遇到早熟收斂和收斂 性能差的缺點,都沒法保證收斂到最優勢。

  差別: (1) PSO有記憶,好的解的知識全部粒子都保 存,而GA,之前的知識隨着種羣的改變被改變。 (2) PSO中的粒子僅僅經過當前搜索到最優勢進行共享信息,因此很大程度上這是一種單共享項信息機制。而GA中,染色體之間相互共享信息,使得整個種羣都向最優區域移動。 (3) GA的編碼技術和遺傳操做比較簡單,而PSO 相對於GA,沒有交叉和變異操做,粒子只是經過內部速度進行更新,所以原理更簡單、參數更少、實現更容易。

  GA能夠用來研究NN的三個方面:網絡鏈接權重、網絡 結構、學習算法。優點在於可處理傳統方法不能處理的 問題,例如不可導的節點傳遞函數或沒有梯度信息。 缺點:在某些問題上性能不是特別好;網絡權重的編碼和 遺傳算子的選擇有時較麻煩。 已有利用PSO來進行神經網絡訓練。研究代表PSO是一 種頗有潛力的神經網絡算法。速度較快且有較好的結果。 且沒有遺傳算法碰到的問題。

五.PSO實現

 

  各算法對應的問題以下:

  PSO 用基本粒子羣算法求解無約束優化問題
  YSPSO 用帶壓縮因子的粒子羣算法求解無約束優化問題
  LinWPSO 用線性遞減權重粒子羣優化算法求解無約束優化問題
  SAPSO 用自適應權重粒子羣優化算法求解無約束優化問題
  RandWPSO 用隨機權重粒子羣優化算法求解無約束優化問題
  LnCPSO 用學習因子同步變化的粒子羣優化算法求解無約束優化問題
  AsyLnCPSO 用學習因子異步變化的粒子羣優化算法求解無約束優化問題
  SecPSO 用二階粒子羣優化算法求解無約束優化問題
  SecVibratPSO 用二階振盪粒子羣優化算法求解無約束優化問題
  CLSPSO 用混沌粒子羣優化算法求解無約束優化問題
  SelPSO 用基於選擇的粒子羣優化算法求解無約束優化問
  BreedPSO 用基於交叉遺傳的粒子羣優化算法求解無約束優化問
  SimuAPSO 用基於模擬退火的粒子羣優化算法求解無約束優化問題

csdn連接(包含了基本PSO和12種優化PSO算法,絕對能用)。

參考文獻:西電姚新正老師課件

csdn連接

  再此聲明一下,若是您加我,不要再問我懂不懂優化、會不會粒子羣,有問題您直接說就行了,天天加個人人太多了,筆者不勝其擾。

相關文章
相關標籤/搜索