導航:首頁 > 源碼編譯 > 粒子群演算法如何判斷最優解

粒子群演算法如何判斷最優解

發布時間:2023-09-22 00:16:07

㈠ 粒子群演算法(一):粒子群演算法概述

  本系列文章主要針對粒子群演算法進行介紹和運用,並給出粒子群演算法的經典案例,從而進一步加深對粒子群演算法的了解與運用(預計在一周內完成本系列文章)。主要包括四個部分:

  粒子群演算法也稱粒子群優化演算法(Particle Swarm Optimization, PSO),屬於群體智能優化演算法,是近年來發展起來的一種新的進化演算法(Evolutionary Algorithm, EA)。 群體智能優化演算法主要模擬了昆蟲、獸群、鳥群和魚群的群集行為,這些群體按照一種合作的方式尋找食物,群體中的每個成員通過學習它自身的經驗和其他成員的經驗來不斷地改變搜索的方向。 群體智能優化演算法的突出特點就是利用了種群的群體智慧進行協同搜索,從而在解空間內找到最優解。
  PSO 演算法和模擬退火演算法相比,也是 從隨機解出發,通過迭代尋找最優解 。它是通過適應度來評價解的品質,但比遺傳演算法規則更為簡單,沒有遺傳演算法的「交叉」和「變異」,它通過追隨當前搜索到的最大適應度來尋找全局最優。這種演算法以其 容易實現、精度高、收斂快 等優點引起了學術界的重視,並在解決實際問題中展示了其優越性。

  在粒子群演算法中,每個優化問題的解被看作搜索空間的一隻鳥,即「粒子」。演算法開始時首先生成初始解,即在可行解空間中隨機初始化 粒子組成的種群 ,其中每個粒子所處的位置 ,都表示問題的一個解,並依據目標函數計算搜索新解。在每次迭代時,粒子將跟蹤兩個「極值」來更新自己, 一個是粒子本身搜索到的最好解 ,另一個是整個種群目前搜索到的最優解 。 此外每個粒子都有一個速度 ,當兩個最優解都找到後,每個粒子根據如下迭代式更新:

  其中參數 稱為是 PSO 的 慣性權重(inertia weight) ,它的取值介於[0,1]區間;參數 和 稱為是 學習因子(learn factor) ;而 和 為介於[0,1]之間的隨機概率值。
  實踐證明沒有絕對最優的參數,針對不同的問題選取合適的參數才能獲得更好的收斂速度和魯棒性,一般情況下 , 取 1.4961 ,而 採用 自適應的取值方法 ,即一開始令 , 使得 PSO 全局優化能力較強 ;隨著迭代的深入,遞減至 , 從而使得PSO具有較強的局部優化能力

  參數 之所以被稱之為慣性權重,是因為 實際 反映了粒子過去的運動狀態對當前行為的影響,就像是我們物理中提到的慣性。 如果 ,從前的運動狀態很少能影響當前的行為,粒子的速度會很快的改變;相反, 較大,雖然會有很大的搜索空間,但是粒子很難改變其運動方向,很難向較優位置收斂,由於演算法速度的因素,在實際運用中很少這樣設置。也就是說, 較高的 設置促進全局搜索,較低的 設置促進快速的局部搜索。

㈡ 粒子群優化演算法

姓名:楊晶晶  學號:21011210420  學院:通信工程學院

【嵌牛導讀】

傳統的多目標優化方法是將多目標問題通過加權求和轉化為單目標問題來處理的,而粒子演算法主要是解決一些多目標優化問題的(例如機械零件的多目標設計優化),其優點是容易實現,精度高,收斂速度快。

【嵌牛鼻子】粒子群演算法的概念、公式、調參以及與遺傳演算法的比較。

【嵌牛提問】什麼是粒子群演算法?它的計算流程是什麼?與遺傳演算法相比呢?

【嵌牛正文】

1. 概念

        粒子群優化演算法(PSO:Particle swarm optimization) 是一種進化計算技術(evolutionary computation),源於對鳥群捕食的行為研究。

        粒子群優化演算法的基本思想:是通過群體中個體之間的協作和信息共享來尋找最優解。

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

2. 演算法

2.1 問題抽象

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

2.2 更新規則

      PSO初始化為一群隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個「極值」(pbest,gbest)來更新自己。在找到這兩個最優值後,粒子通過下面的公式來更新自己的速度和位置。

      公式(1)的第一部分稱為【記憶項】,表示上次速度大小和方向的影響;公式(1)的第二部分稱為【自身認知項】,是從當前點指向粒子自身最好點的一個矢量,表示粒子的動作來源於自己經驗的部分;公式(1)的第三部分稱為【群體認知項】,是一個從當前點指向種群最好點的矢量,反映了粒子間的協同合作和知識共享。粒子就是通過自己的經驗和同伴中最好的經驗來決定下一步的運動。

      以上面兩個公式為基礎,形成了PSO的標准形式。

      公式(2)和 公式(3)被視為標准PSO演算法。

2.3 標准PSO演算法流程

    標准PSO演算法的流程:

    1)初始化一群微粒(群體規模為N),包括隨機位置和速度;

    2)評價每個微粒的適應度;

    3)對每個微粒,將其適應值與其經過的最好位置pbest作比較,如果較好,則將其作為當前的最好位置pbest;

    4)對每個微粒,將其適應值與其經過的最好位置gbest作比較,如果較好,則將其作為當前的最好位置gbest;

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

    6)未達到結束條件則轉第2)步。

        迭代終止條件根據具體問題一般選為最大迭代次數Gk或(和)微粒群迄今為止搜索到的最優位置滿足預定最小適應閾值。

      公式(2)和(3)中pbest和gbest分別表示微粒群的局部和全局最優位置。

    當C1=0時,則粒子沒有了認知能力,變為只有社會的模型(social-only):

被稱為全局PSO演算法。粒子有擴展搜索空間的能力,具有較快的收斂速度,但由於缺少局部搜索,對於復雜問題

比標准PSO 更易陷入局部最優。

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

      被稱為局部PSO演算法。由於個體之間沒有信息的交流,整個群體相當於多個粒子進行盲目的隨機搜索,收斂速度慢,因而得到最優解的可能性小。

2.4 參數分析

        參數:群體規模N,慣性因子 ,學習因子c1和c2,最大速度Vmax,最大迭代次數Gk。

        群體規模N:一般取20~40,對較難或特定類別的問題可以取到100~200。

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

        權重因子:包括慣性因子和學習因子c1和c2。使粒子保持著運動慣性,使其具有擴展搜索空間的趨勢,有能力探索新的區域。c1和c2代表將每個粒子推向pbest和gbest位置的統計加速項的權值。較低的值允許粒子在被拉回之前可以在目標區域外徘徊,較高的值導致粒子突然地沖向或越過目標區域。

        參數設置:

        1)如果令c1=c2=0,粒子將一直以當前速度的飛行,直到邊界。很難找到最優解。

        2)如果=0,則速度只取決於當前位置和歷史最好位置,速度本身沒有記憶性。假設一個粒子處在全局最好位置,它將保持靜止,其他粒子則飛向它的最好位置和全局最好位置的加權中心。粒子將收縮到當前全局最好位置。在加上第一部分後,粒子有擴展搜索空間的趨勢,這也使得的作用表現為針對不同的搜索問題,調整演算法的全局和局部搜索能力的平衡。較大時,具有較強的全局搜索能力;較小時,具有較強的局部搜索能力。

        3)通常設c1=c2=2。Suganthan的實驗表明:c1和c2為常數時可以得到較好的解,但不一定必須等於2。Clerc引入收斂因子(constriction factor) K來保證收斂性。

      通常取為4.1,則K=0.729.實驗表明,與使用慣性權重的PSO演算法相比,使用收斂因子的PSO有更快的收斂速度。其實只要恰當的選取和c1、c2,兩種演算法是一樣的。因此使用收斂因子的PSO可以看作使用慣性權重PSO的特例。

        恰當的選取演算法的參數值可以改善演算法的性能。

3. PSO與其它演算法的比較

3.1 遺傳演算法和PSO的比較

  1)共性:

  (1)都屬於仿生演算法。

  (2)都屬於全局優化方法。

  (3)都屬於隨機搜索演算法。

  (4)都隱含並行性。

  (5)根據個體的適配信息進行搜索,因此不受函數約束條件的限制,如連續性、可導性等。

  (6)對高維復雜問題,往往會遇到早熟收斂和收斂 性能差的缺點,都無法保證收斂到最優點。

    2)差異:   

    (1)PSO有記憶,好的解的知識所有粒子都保 存,而GA(Genetic Algorithm),以前的知識隨著種群的改變被改變。

    (2)PSO中的粒子僅僅通過當前搜索到最優點進行共享信息,所以很大程度上這是一種單共享項信息機制。而GA中,染色體之間相互共享信息,使得整個種群都向最優區域移動。

    (3)GA的編碼技術和遺傳操作比較簡單,而PSO相對於GA,沒有交叉和變異操作,粒子只是通過內部速度進行更新,因此原理更簡單、參數更少、實現更容易。

    (4)應用於人工神經網路(ANN)

    GA可以用來研究NN的三個方面:網路連接權重、網路結構、學習演算法。優勢在於可處理傳統方法不能處理的問題,例如不可導的節點傳遞函數或沒有梯度信息。

    GA缺點:在某些問題上性能不是特別好;網路權重的編碼和遺傳運算元的選擇有時較麻煩。

    已有利用PSO來進行神經網路訓練。研究表明PSO是一種很有潛力的神經網路演算法。速度較快且有較好的結果。且沒有遺傳演算法碰到的問題。

㈢ 粒子群演算法原理

粒子群算悉銀法原理如下:

粒子群優化(Particle Swarm Optimization,PSO)演算法是1995年由美國學者Kennedy等人提出的,該演算法是模擬鳥類覓食等群體智能行為的智能優化演算法。在自然界中,鳥群在覓食的時候,一般存在個體和群體協同的行為。

每個粒子都旦薯會向兩個值學習,一個值是個體的歷史最優值 ;另一個值是群體的歷史最優值(全局最優值) 。粒子會根據這兩個值來調整自身的速度和位置,而每個位置的優劣都是根據適應度值來確定的。適應度函數是優化的目標函數。

㈣ 粒子群演算法

粒子群演算法(Particle Swarm Optimization),又稱鳥群覓食演算法,是由數學家J. Kennedy和R. C. Eberhart等開發出的一種新的進化演算法。它是從隨機解開始觸發,通過迭代尋找出其中的最優解。本演算法主要是通過適應度來評價解的分數,比傳統的遺傳演算法更加的簡單,它沒有傳統遺傳演算法中的「交叉」和「變異」等操作,它主要是追隨當前搜索到的最優值來尋找到全局最優值。這種演算法實現容易,精度高,收斂快等特點被廣泛運用在各個問題中。

粒子群演算法是模擬鳥群覓食的所建立起來的一種智能演算法,一開始所有的鳥都不知道食物在哪裡,它們通過找到離食物最近的鳥的周圍,再去尋找食物,這樣不斷的追蹤,大量的鳥都堆積在食物附近這樣找到食物的幾率就大大增加了。粒子群就是這樣一種模擬鳥群覓食的過程,粒子群把鳥看成一個個粒子,它們擁有兩個屬性——位置和速度,然後根據自己的這兩個屬性共享到整個集群中,其他粒子改變飛行方向去找到最近的區域,然後整個集群都聚集在最優解附近,最後最終找到最優解。

演算法中我們需要的數據結構,我們需要一個值來存儲每個粒子搜索到的最優解,用一個值來存儲整個群體在一次迭代中搜索到的最優解,這樣我們的粒子速度和位置的更新公式如下:

其中pbest是每個粒子搜索到的最優解,gbest是整個群體在一次迭代中搜索到的最優解,v[i]是代表第i個粒子的速度,w代表慣性系數是一個超參數,rang()表示的是在0到1的隨機數。Present[i]代表第i個粒子當前的位置。我們通過上面的公式不停的迭代粒子群的狀態,最終得到全局最優解

㈤ 粒子群演算法的演算法介紹

如前所述,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.
程序的偽代碼如下
For each particle
____Initialize particle
END
Do
____For each particle
________Calculate fitness value
________If the fitness value is better than the best fitness value (pBest) in history
____________set current value as the new pBest
____End
____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained
在每一維粒子的速度都會被限制在一個最大速度Vmax,如果某一維更新後的速度超過用戶設定的Vmax,那麼這一維的速度就被限定為Vmax

閱讀全文

與粒子群演算法如何判斷最優解相關的資料

熱點內容
伺服器如何確認有沒有裝系統 瀏覽:490
匯編語言debugg命令 瀏覽:491
買菜app的菜怎麼來的 瀏覽:174
51單片機如何自檢 瀏覽:80
單片機用延時來實現pwm 瀏覽:739
php在線問卷調查 瀏覽:2
java字元串填充 瀏覽:612
c嵌入式編程設計式pdf 瀏覽:791
如何讓安卓手機定時播放音樂 瀏覽:624
學霸教你學cpa什麼app 瀏覽:870
iso系統文件夾最多多大 瀏覽:441
java線程啟動方法是 瀏覽:571
亞洲文件夾 瀏覽:375
python執行linux命令 瀏覽:324
單片機消毒櫃 瀏覽:888
企業伺服器如何選 瀏覽:717
java選課管理 瀏覽:91
程序員疲勞圖片 瀏覽:40
曼哈頓距離和歐式距離python 瀏覽:274
程序員軟考高級哪個好考 瀏覽:309