标准粒子群算法(PSO)及其Matlab程序和常见改进算法
一、 粒子群算法概述
粒子群優化算法(PSO)是一種進化計算技術(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于對鳥群捕食的行為研究 。該算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智能建立的一個簡化模型。粒子群算法在對動物集群活動行為觀察基礎上,利用群體中的個體對信息的共享使整個群體的運動在問題求解空間中產生從無序到有序的演化過程,從而獲得最優解。
PSO中,每個優化問題的解都是搜索空間中的一只鳥。我們稱之為“粒子”。所有的粒子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然后粒子們就追隨當前的最優粒子在解空間中搜索。
PSO 初始化為一群隨機粒子(隨機解)。然后通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個”極值”來更新自己。第一個就是粒子本身所找到的最優解,這個解叫做個體極值pBest。另一個極值是整個種群目前找到的最優解,這個極值是全局極值gBest。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那么在所有鄰居中的極值就是局部極值。
二、 算法原理
粒子群算法采用常數學習因子,及慣性權重,粒子根據如下的公式更新自己的速度和位置。
三、 算法步驟
1、 隨機初始化種群中各微粒的位置和速度;
2、 評價個粒子的適應度,將各粒子的位置和適應度儲存在各微粒的pbest(Qbi)中,將所有pbest中適應度最優的個體的位置和適應度存儲在gbest(Qbg)中。
3、 更新粒子的速度和位移。
4、 對每個微粒,與其前一個最優位置比較,如果較好,則將其作為當前的最優位置。
5、 比較當前所有的pbest和上一迭代周期的gbest,更新gbest。
6、 若滿足停止條件(達到要求精度或迭代次數),搜索停止,輸出結果,否則,返回2。
四、 算法改進
1、 帶壓縮因子的粒子群算法。
主要是限定學習因子,粒子的更新公式變為為:
其中, ?=22?C?C2?4C√,其中C=c1+c2
2、 權重改進的粒子群算法。
隨著迭代次數的增加,慣性權重從最大變化到最小。變化的公式是:
3、 自適應權重法。主要是為了平衡全局搜索和局部搜索能力。權重的表達式為:
ω=???ωmin?(ωmax?ωmin)?(f?fmin)favg?fminωmax,f≤favg,f>favg
4、 隨機權重法。
{ω=μ+σ?N(0,1)μ=μmin+(μmax?μmin)?rang(0,1)
5、 變學習因子的粒子群算法。
(1)、 c1=c2=cmax?t?(cmax?cmin)tmax
(2)、 {c1=c1,ini+c1,fin?c1,initmax?c2=c2,ini+c2,fin?c2,initmax
6、二階粒子群算法。
Vki=?[Vi?1i+c1r1(Qbi?2Qki+Qk?1i)+c2r2(Qbg?2Qki+Qk?1i)]Qki=Qk?1i+Vki
五、 粒子群算法參數介紹
標準粒子群算法中,有以下幾個參數:
1、fitness,待優化的目標函數
2、粒子數目:N
3、學習因子1:c1
4、學習因子2:c2
5、慣性權重:w
6、最大迭代系數:M
7、自變量的個數:D
1、finess 是待優化的目標函數,如何構造函數是用粒子群算法的前提,構造函數的結構直接決定了計算結果的好壞,特別是在多目標優化的問題中。
2、學習因子一般取2,c1決定著其局部搜尋能力,c2決定著其全局搜尋能力。
3、慣性權重大,便于全局搜索,慣性權重小,便于局部搜索。
4、最大迭代系數一般取1000—10000,具體看精度要求。
5、自變量的個數有目標函數決定。
學習因子、慣性權重是改進粒子群算法的關鍵
更新函數決定了粒子群算法的本質能力。
總結
以上是生活随笔為你收集整理的标准粒子群算法(PSO)及其Matlab程序和常见改进算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运动学与雅可比矩阵举例
- 下一篇: 多变异位自适应遗传算法(MMAdapGA