粒子群優化演算法(pso:particle swarm optimization) 是一種進化計算技術(evolutionary computation)。源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想:是通過群體中個體之間的協作和資訊共享來尋找最優解.
通過模擬鳥群覓食過程中的遷徙和群聚行為而提出的一種基於群體智慧型的全域性隨機搜尋演算法
pso的優勢:在於簡單容易實現並且沒有許多引數的調節。目前已被廣泛應用於函式優化、神經網路訓練、模糊系統控制以及其他遺傳演算法的應用領域。
遺傳演算法的有趣應用很多,諸如尋路問題,8數碼問題,囚犯困境,動作控制,找圓心問題(在乙個不規則的多邊形中,尋找乙個包含在該多邊形內的最大圓圈的圓心),tsp問題,生產排程問題,人工生命模擬等。下面我以袋鼠為例子講講遺傳演算法。(因為袋鼠會跳)
遺傳演算法中每一條染色體,對應著遺傳演算法的乙個解決方案,一般我們用適應性函式(fitness function)來衡量這個解決方案的優劣。所以從乙個基因組到其解的適應度形成乙個對映。可以把遺傳演算法的過程看作是乙個在多元函式裡面求最優解的過程。可以這樣想象,這個多維曲面裡面有數不清的「山峰」,而這些山峰所對應的就是區域性最優解。而其中也會有乙個「山峰」的海拔最高的,那麼這個就是全域性最優解。而遺傳演算法的任務就是盡量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遺傳演算法不一定要找「最高的山峰」,如果問題的適應度評價越小越好的話,那麼全域性最優解就是函式的最小值,對應的,遺傳演算法所要找的就是「最深的谷底」)
退火演算法
爬山演算法也是乙個用來求解最優化問題的演算法,每次都向著當前上公升最快的方向往上爬,但是初始化不同可能
會得到不同的區域性最優值,模擬退火演算法就可能跳出這種區域性最優解的限制
若f( y(i+1) ) <= f( y(i) ) (即移動後得到更優解),則總是接受該移動;
若f( y(i+1) ) > f( y(i) ) (即移動後的解比當前解要差),則以一定的概率接受移動,而且這個概率隨著時間推移逐漸降低(逐漸降低才能趨向穩定)相當於上圖中,從b移向bc之間的小波峰時,每次右移(即接受乙個更糟糕值)的概率在逐漸降低。如果這個坡特別長,那麼很有可能最終我們並不會翻過這個坡。如果它不太長,這很有可能會翻過它,這取決於衰減 t 值的設定。
pso和ga的相同點:
(1)都屬於仿生演算法。pso主要模擬鳥類覓食、人類認知等社會行為而提出;ga主要借用生物進化中「適者生存」的規律。
(2)都屬於全域性優化方法。兩種演算法都是在解空間隨機產生初始種群,因而演算法在全域性的解空間進行搜尋,且將搜尋重點集中在效能高的部分。
(3)都屬於隨機搜尋演算法。都是通過隨機優化方法更新種群和搜尋最優點。pso中認知項和社會項前都加有隨機數;而ga的遺傳操作均屬隨機操作。 (4)都隱含並行性。搜尋過程是從問題解的乙個集合開始的,而不是從單個個體開始,具有隱含並行搜尋特性,從而減小了陷入區域性極小的可能性。並且由於這種並行性,易在並行計算機上實現,以提高演算法效能和效率。
(5)根據個體的適配資訊進行搜尋,因此不受函式約束條件的限制,如連續性、可導性等。
(6)對高維複雜問題,往往會遇到早熟收斂和收斂效能差的缺點,都無法保證收斂到最優點。
pso和ga不同點
(1)pso有記憶,好的解的知識所有粒子都儲存,而ga沒有記憶,以前的知識隨著種群的改變被破壞。
(2)在ga演算法中,染色體之間相互共享資訊,所以整個種群的移動是比較均勻地向最優區域移動。pso中的粒子僅僅通過當前搜尋到最優點進行共享資訊,所以很大程度上這是一種單項資訊共享機制,整個搜尋更新過程是跟隨當前最優解的過程。在大多數情況下,所有粒子可能比遺傳演算法中的進化個體以更快速度收斂於最優解。
(3)ga的編碼技術和遺傳操作比較簡單,而pso相對於ga,不需要編碼,沒有交叉和變異操作,粒子只是通過內部速度進行更新,因此原理更簡單、引數更少、實現更容易。
(4)在收斂性方面,ga己經有了較成熟的收斂性分析方法,並且可對收斂速度進行估計;而pso這方面的研究還比較薄弱。儘管已經有簡化確定性版本的收斂性分析,但將確定性向隨機性的轉化尚需進一步研究。
(5)在應用方面,pso演算法主要應用於連續問題,包括神經網路訓練和函式優化等,而ga除了連續問題之外,還可應用於離散問題,比如tsp問題、貨郎擔問題、工作車間排程等。
進化演算法 遺傳演算法與粒子群演算法之間的比較
遺傳演算法 ga 作為一種經典的進化演算法,自 holland提出之後在國際上已經形成了乙個比較活躍的研究領域.人們對 ga 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性.遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.經典遺傳演算法首先對引數進行編碼,生成一定數...
進化演算法 遺傳演算法與粒子群演算法之間的比較
遺傳演算法 ga 作為一種經典的進化演算法,自 holland提出之後在國際上已經形成了乙個比較活躍的研究領域.人們對 ga 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性.遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.經典遺傳演算法首先對引數進行編碼,生成一定數...
粒子群演算法和遺傳演算法在陣列天線綜合中的對比
我前面的部落格已經介紹了通過遺傳演算法綜合陣列天線的方向圖,這次通過粒子群演算法綜合陣列天線,並比較兩種演算法在綜合陣列天線時的差異。粒子群演算法是通過python的演算法工具箱scikit opt實現的,對演算法進行了些修改,包括整數編碼,每個變數進行單獨的區間限制等。遺傳演算法同樣是基於演算法工...