粒子群算法(PSO)
1.粒子群算法(PSO)是一種基於群體的隨機優化技術; 初始化為一組隨機解,通過迭代搜尋最優解。
PSO算法流程如圖所示(此圖是從PPT做好,復制過來的,有些模糊)
2.PSO模擬社會的三條規則:
①飛離最近的個體,以避免碰撞
②飛向目標(認知行為)——Pbest
③飛向群體的中心(社會行為)——Gbest
3.迭代公式:
舉一個粒子。。。在一維中,利用MATLAB中自帶的函數求極值
搜索起始點位置
注:fmincon(有約束的非線性最小化) fminbnd(有邊界的標量非線性最小化) GlobalSearch(全局搜索)
左圖為用fminbnd函數求解情況;右圖為用GlobalSearch 在[0,20]內求解情況。
由右圖所示結果可以看出,采用fmincon進行有約束的非線性最小化求解,容易進入局部最優解;fminbnd在進行非線性最小化求解也容易掉進局部最優,導致在非連續函數下,使得求解結果不收斂。GlobalSearch在[0,20]內進行非線性最小化求解能夠很精確地尋最優值。
但是由於基本的粒子群算法不滿足 因此它不是全局收斂。
對於一些較為復雜的二維,高維函數,它們具有廣泛的搜索空間,也存在很多局部最優解(極小值點),因此我們用PSO算法較難找到全局最優值。
因此,我們需要對基本粒子群算法進行改進, 以達到更快的收斂速度及盡量跳出局部最優的陷阱, 從而達到全局最優。(圖見上面可知)
PSO算法是一種很基礎的全局搜索算法,可以很好的達到搜索最小值的效果;但是由於算法原理的一些缺陷,也存在一些問題,對PSO算法的改進方法,在下次博客中再分享。
謝謝大家!!!