1. 程式人生 > >MATLAB R2018a 全域性優化工具箱學習(三)粒子群演算法

MATLAB R2018a 全域性優化工具箱學習(三)粒子群演算法

MATLAB R2018a全域性優化工具箱學習(三)粒子群演算法
 

粒子群演算法是無導數的一種演算法.PSO從這種模型中得到啟示並用於解決優化問題。在粒子群演算法中,每個優化問題的潛在解都是搜尋空間中的一隻鳥,稱之為粒子。所有的粒子都有一個由被優化的函式決定的適值(適應值),每個粒子還有一個速度決定它們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜索。

PSO初始化為一群隨機粒子(隨機解),然後通過迭代找到最優解在每一次迭代中,粒子通過跟蹤兩個極值來更新自己;第一個就是粒子本身所找到的最優解,這個解稱為個體極值;另一個極值是整個種群目前找到的最優解,這個極值是全域性極值另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是區域性極值。

此外,筆者認為,在粒子群演算法中,粒子位置和速度的更新公式特別重要圖解(來源網上):

其中,p(i,d)表示當前各微粒的位置,而p(g,d)表示適應值最優的個體。

MATLAB命令:

[x,fval] = particleswarm(fun,nvars)
[x,fval] = particleswarm(fun,nvars,lb,ub)

引數解釋:

%x為所求得的最小值點,而不是最小值

%fval為對應最小值點x處的最小值

%fun為目標函式。注:若有趣為m檔案,要用通過控制代碼@進行引用

%nvars fun函式中未知數的維度

%lb x的下界

%ub x的上界