matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
參考資料
《精通MATLAB最優化計算(第二版)》
編程工具
Matlab 2019a
目錄
石中居士:最優化計算與Matlab實現——目錄?zhuanlan.zhihu.com權重改進的粒子群算法
在微粒群算法的可調整參數中,慣性權重
是最重要的參數,較大的 有利于提高算法的全局搜索能力,而較小的 會增強算法的局部搜索能力,根據不同的權重變化公式,可得到不同的PSO算法,常見的有線性遞減權重法、自適應權重法、隨機權重法。線性遞減權重法
- 原理
由于較大的慣性因子有利于跳出局部極小點,便于全局搜索,而較小的慣性因子則有利于對當前的搜索區域進行精確局部搜索,以利于算法收斂,因此針對PSO算法容易早熟以及算法后期易在全局最優解附近產生振蕩現象,可以采用線性變化的權重,讓慣性權重從最大值
線性減小到最小值 , 隨算法迭代次數的變化公式為:其中,
、 分別表示 的最大值和最小值, 表示當前迭代步數, 表示最大迭代步數,通常取 。- 算法步驟
線性遞減粒子群算法的基本步驟如下:
【1】隨機初始化種群中各微粒的位置和速度;
【2】評價每個微粒的適應度,將當前各微粒的位置和適應值存儲在各微粒的pbest中,將所有pbest中適應值最優個體的位置和適應值存儲于gbest中;
【3】用下式更新粒子的速度和位移:
【4】更新權重
;【5】對每個微粒,將其適應值與其經歷過的最好位置作比較,如果較好,則將其作為當前的最好位置;比較當前所有pbest和gbest的值,更新gbest;
【6】若滿足停止條件(通常為預設的運算精度或迭代次數),搜索停止,輸出結果,否則返回【3】繼續搜索。
- Matlab代碼與試算
用線性遞減權重的粒子群算法求函數
的最小值。其中粒子數取40,學習因子都取2,最大權重取0.9,最小權重取0.4,迭代步數取10000。解:此函數的最小點為
,最小值為 。建立目標函數文件fitness.m
fitness.m
functiontest.m
[LDW_PSO.m
function命令行窗口
x_optimization對于本例題中的函數而言,用線性遞減權重的粒子群算法求得了非常精確的最優點。但是在實際問題中,對于不同問題,其每次迭代所需的比例關系并不相同,所以
的線性遞減只對某些問題很有效。此外,如果在進化初期搜索不到最優點,隨著
的逐漸減小,算法局部收斂能力加強,容易陷入局部最優;如果在進化初期探測到次好點,這時 的相對取小就可使算法很快搜索到最優點,而 的線性遞減降低了算法的收斂速度。自適應權重法
- 原理
為了平衡PSO算法的全局搜索能力和局部改良能力,還可采用非線性的動態慣性權重系數公式,其表達式如下:
其中
分別表示 的最大值和最小值, 表示粒子當前的目標函數值, 和 分別表示當前所有微粒的平均目標值和最小目標值。在上式中,慣性權重隨著微粒的目標函數值而自動改變,因此稱為自適應權重。當各微粒的目標值趨于一致或者趨于局部最優時,將使慣性權重增加,而各微粒的目標值比較分散時,將使慣性權重減小,同時對于目標函數值優于平均目標值的微粒,其對應的慣性權重因子較小,從而保護了該微粒,反之對于目標函數值差于平均目標值的微粒,其對應的慣性權重因子較大,使得該微粒向較好的搜索區域靠攏。
- 算法步驟
自適應權重粒子群算法的基本步驟如下:
【1】隨機初始化種群中各微粒的位置和速度;
【2】評價每個微粒的適應度,將當前各微粒的位置和適應值存儲在各微粒的pbest中,將所有pbest中適應值最優個體的位置和適應值存儲于gbest中;
【3】用下式更新粒子的速度和位移:
【4】更新權重
【5】對每個微粒,將其適應值與其經歷過的最好位置作比較,如果較好,則將其作為當前的最好位置;比較當前所有pbest和gbest的值,更新gbest;
【6】若滿足停止條件(通常為預設的運算精度或迭代次數),搜索停止,輸出結果,否則返回【3】繼續搜索。
- Matlab代碼與試算
用自適應權重的粒子群算法求函數
的最小值。取粒子數為40,學習因子都取2,最大慣性權重取0.9,最小慣性權重取0.6,迭代步數取10000。解:建立fitness.m文件
fitness.m
functiontest.m
[AW_PSO.m
function命令行窗口
x_optimization =1.0e-06 *0.172784775909731-0.008767853535804f_optimization =0本例題中的函數的最小點為
,最小值為0,自適應權重的粒子群算法求得的結果的精度還是可以的。隨機權重法
- 原理
將PSO算法中設定
為服從某種隨機分布的隨機數,這樣一定程度上可從兩方面來克服 的線性遞減所帶來的不足。首先,如果在進化初期接近最好點,隨機
可能產生相對小的 值,加快算法的收斂速度,另外,如果在算法初期找不到最好點, 的線性遞減,使得算法最終收斂不到此最好點,而 的隨機生成可以克服這種局限。計算公式如下:其中
表示標準正態分布的隨機數, 表示0到1之間的隨機數。- 算法步驟
隨機權重粒子群算法的基本步驟如下:
【1】隨機初始化種群中各微粒的位置和速度;
【2】評價每個微粒的適應度,將當前各微粒的位置和適應值存儲在各微粒的pbest中,將所有pbest中適應值最優個體的位置和適應值存儲于gbest中;
【3】用下式更新粒子的速度和位移:
【4】更新權重
【5】對每個微粒,將其適應值與其經歷過的最好位置作比較,如果較好,則將其作為當前的最好位置;比較當前所有pbest和gbest的值,更新gbest;
【6】若滿足停止條件(通常為預設的運算精度或迭代次數),搜索停止,輸出結果,否則返回【3】繼續搜索。
- Matlab代碼與試算
求下面函數的最小值
取粒子數為40,學習因子都取2,隨機權重平均值的最大值取0.8,隨機權重平均值的最小值取0.5,隨機權重平均值的方差取0.2,迭代步數取10000。
解:首先建立目標函數文件fitness.m文件
fitness.m
functiontest.m
[RW_PSO.m
function命令行窗口
x_optimization =-0.0898420111454120.712656402204421f_optimization =-1.031628453489878本題中的函數的理論最小點有兩個,分別為
和 ,最小值為 ,隨機權重的粒子群算法求得的結果精度還可以。目錄
石中居士:最優化計算與Matlab實現——目錄?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 奥迪全新一代国产“A4L”内饰图曝光,首
- 下一篇: 比亚迪获新加坡迄今最大电动巴士订单:24
