好好學數學。
一.問題來源
經朋友介紹,接了一份工作,就是做PSO及其優化,恰好我導師也研究這個,剛開學也有接觸,那我就接了.......賺點生活費。
歡迎大家和我聯系做算法類項目,QQ:1198552514
二.背景介紹
2.1 人工生命
人工生命:研究具有某些生命基本特征的人 工系統。包括兩方面的內容:
1、研究如何利用計算技術研究生物現象;
2、 研究如何利用生物技術研究計算問題。
我們關注的是第二點。已有很多源於生物現象的計算技巧,例如神經網絡和遺傳算法。現在討論另一種生物系統---社會系統:由簡單個體組成的群落和環境及個體之間的相互行為。
2.2 群智能
模擬系統利用局部信息從而可以產生不可預測的群行為。我們經常能夠看到成群的鳥、魚或者浮游生物。這些生物的聚集行為有利於它們覓食和逃避捕食者。它們的群落動輒以十、百、千甚至萬計,並且經常不存在一個統一的指揮者。它們是如何完成聚集、移動這些功能呢?
Millonas在開發人工生命算法時(1994年),提出群體智能概念並提出五點原則:
1、接近性原則:群體應能夠實現簡單的時空計算;
2、優質性原則:群體能夠響應環境要素;
3、變化相應原則:群體不應把自己的活動限制在一狹小范圍;
4、穩定性原則:群體不應每次隨環境改變自己的模式;
5、適應性原則:群體的模式應在計算代價值得的時候改變。
2.3 模擬群
對鳥群行為的模擬: Reynolds、Heppner和Grenader提出鳥群行為的 模擬。他們發現,鳥群在行進中會突然同步的改 變方向,散開或者聚集等。那么一定有某種潛在 的能力或規則保證了這些同步的行為。這些科學 家都認為上述行為是基於不可預知的鳥類社會行 為中的群體動態學。 在這些早期的模型中僅僅依賴個體間距的操作, 也就是說,這中同步是鳥群中個體之間努力保持 最優的距離的結果。
對魚群行為的研究:生物社會學家E.O.Wilson對魚群進行了研究。提出:“至少在理論上,魚群的個體成員能夠受益於群體中其他個體在尋找食物的過程中的發現和以前的經驗,這種受益超過了個體之間的競爭所帶來的利益消耗,不管任何時候食物資源不可預知的分散。”這說明,同種生物之間信息的社會共享能夠帶來好處。這是PSO的基礎。
三.算法介紹
粒子群優化算法的基本思想是通過群體中個體之間的協作和信息共享來尋找最優解.
PSO的優勢在於簡單容易實現並且沒有許多參數的調節。目前已被廣泛應用於函數優化、神經網絡訓練、模糊系統控制以及其他遺傳算法的應用領域。
3.1 問題提出
設想這樣一個場景:一群鳥在隨機的搜索食物。 在這個區域里只有一塊食物,所有的鳥都不知 道食物在那。但是它們知道自己當前的位置距 離食物還有多遠。 那么找到食物的最優策略是什么? 最簡單有效的就是搜尋目前離食物最近的鳥的 周圍區域。
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有更快的收斂速度。其實只要恰當的選取 和c1、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算法,絕對能用)。
參考文獻:西電姚新正老師課件
作者:張朋飛
出處:http://www.cnblogs.com/hxsyl/
本文版權歸作者張朋飛所有,歡迎轉載和商用,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.