粒子群演算法流程
A. 粒子群優化演算法
粒子群演算法 的思想源於對鳥/魚群捕食行為的研究,模擬鳥集群飛行覓食的行為,鳥之間通過集體的協作使群體達到最優目的,是一種基於Swarm Intelligence的優化方法。它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。粒子群演算法與其他現代優化方法相比的一個明顯特色就是所 需要調整的參數很少、簡單易行 ,收斂速度快,已成為現代優化方法領域研究的熱點。
設想這樣一個場景:一群鳥在隨機搜索食物。已知在這塊區域里只有一塊食物;所有的鳥都不知道食物在哪裡;但它們能感受到當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢?
1. 搜尋目前離食物最近的鳥的周圍區域
2. 根據自己飛行的經驗判斷食物的所在。
PSO正是從這種模型中得到了啟發,PSO的基礎是 信息的社會共享
每個尋優的問題解都被想像成一隻鳥,稱為「粒子」。所有粒子都在一個D維空間進行搜索。
所有的粒子都由一個fitness function 確定適應值以判斷目前的位置好壞。
每一個粒子必須賦予記憶功能,能記住所搜尋到的最佳位置。
每一個粒子還有一個速度以決定飛行的距離和方向。這個速度根據它本身的飛行經驗以及同伴的飛行經驗進行動態調整。
粒子速度更新公式包含三部分: 第一部分為「慣性部分」,即對粒子先前速度的記憶;第二部分為「自我認知」部分,可理解為粒子i當前位置與自己最好位置之間的距離;第三部分為「社會經驗」部分,表示粒子間的信息共享與合作,可理解為粒子i當前位置與群體最好位置之間的距離。
第1步 在初始化范圍內,對粒子群進行隨機初始化,包括隨機位置和速度
第2步 根據fitness function,計算每個粒子的適應值
第3步 對每個粒子,將其當前適應值與其個體歷史最佳位置(pbest)對應的適應值作比較,如果當前的適應值更高,則用當前位置更新粒子個體的歷史最優位置pbest
第4步 對每個粒子,將其當前適應值與全局最佳位置(gbest)對應的適應值作比較,如果當前的適應值更高,則用當前位置更新粒子群體的歷史最優位置gbest
第5步 更新粒子的速度和位置
第6步 若未達到終止條件,則轉第2步
【通常演算法達到最大迭代次數或者最佳適應度值得增量小於某個給定的閾值時演算法停止】
粒子群演算法流程圖如下:
以Ras函數(Rastrigin's Function)為目標函數,求其在x1,x2∈[-5,5]上的最小值。這個函數對模擬退火、進化計算等演算法具有很強的欺騙性,因為它有非常多的局部最小值點和局部最大值點,很容易使演算法陷入局部最優,而不能得到全局最優解。如下圖所示,該函數只在(0,0)處存在全局最小值0。