通過上面的論述,PSO 算法模型主要包括基本PSO 模型、帶慣性權重的PSO 模型及帶收縮因子的PSO 模型。這些模型中關鍵參數包括:種群大小m,加速常數c1 、c2 ,慣性權重
ω ,收縮因子χ 以及粒子最大速度Vmax 。
PSO算法中的參數選擇直接關系到優化算法的性能,PSO算法模型提出后,如何確定PSO算法的最優參數設定得到了國內外研究人員的密切關注與研究。然而實際優化問題是復雜多樣的,通過簡單的相關參數設置就能讓PSO算法適用于所有的優化問題是不可能也是不現實的。近些年來,國內外許多專家學者為了提高PSO算法的性能,深入分析了PSO算法中不同控制參數的實際作用,并通過大量實驗探究不同的參數控制策略,并為其確定了相應的參考取值[39]。
(1) 慣性權重ω
慣性權重是粒子群算法的一個重要參數,控制其取值的大小可以調節PSO 算法的全局和局部尋優能力。一般認為較大的ω能增強算法的全局搜索能力,而較小的ω 能增強算法的局部搜索能力[40]。目前,采用較多的慣性權重調整策略是Shi 提出的線性遞減權值策略(LDW)[41],根據公式(3.4),經典取值ωmax=0.9~1.4,ωmin=0.4。
(2) 收縮因子
帶收縮因子的PSO模型中引入收縮因子χ來保證PSO算法收斂。在使用帶收縮因子的PSO模型時,根據公式(3.6),通常取?=4.1,從而使收縮因子χ=0.729。慣性權重ω和收縮因子χ這兩個參數從數學上分析是等價的,都是為了有效地控制粒子的飛行速度。
(3) 加速因子
加速因子c1 和c2 的引入是為了使粒子具有向種群中最優個體學習以及自我認知的能力。根據標準粒子群算法的速度更新公式(3.3),分析加速因子c1和c2的取值對粒子速度更新的影響。如果c1 = 0 ,則表示粒子群體缺乏自我認知和自我總結的能力,成為“只有社會”模型。如果c2 = 0 ,則表示粒子群體缺乏向種群中其他優秀個體粒子學習的能力,各個粒子間沒有信息的交流,成為“只有認知”模型。如果c1 = c2 = 0 ,粒子群體將會完全缺失“社會經驗”和“自身經驗”,唯一影響其搜索方向只剩下粒子先前速度,粒子將會保持先前速度一直飛行,
直到飛出目標搜索區域。以上幾種情況,粒子種群最終都不能找到高質量的全局最優解。在粒子群算法早期的研究階段,Shi等認為c1 和c2這兩個參數的取值應該相同,并通過實
驗研究提出當c1= c2= 2時,粒子群算法有較好的搜索性能。隨著粒子群算法研究的深入,學
者Ozcan 和Mohan 提出了不同的建議,他們建議將c1 和c2 這兩個參數同時取為1.494。后來,學者Ratnaweera 等[42]在研究人員Venter 研究的基礎上提出了認知系數與社會系數隨時間動態調整的策略,建議在粒子迭代的過程中認知系數從2.5 線性遞減至0.5,而社會系數則從0.5 線性遞增至2.5。
(4) 種群規模
粒子種群規模的大小同樣也會影響粒子群算法的性能,也是其中的關鍵參數。粒子數太少,容易使粒子陷入局部最小值,但粒子數到達一定數量后,再增加粒子,算法的性能也不會有太大的改善,而且會增大算法的時間復雜度[43]。粒子種群規模m 的大小的選擇沒有明確的公式依據,一般采用經驗法取20~40 個,粒子數的選擇與實際問題有關,對于高維或特定類別的問題,粒子數可以相應的增加,可以取到100~200。
(5) 粒子最大速度
粒子最大速度Vmax 約束著粒子個體在目標搜索空間迭代飛行中的最大速度。通過粒子最大速度Vmax 能夠很好防止全局搜索導致的發散現象的產生,有了Vmax 的約束,粒子能夠很好控制其搜索的速度和范圍。如果Vmax 的值太大,粒子雖然能夠很快的分散到整個搜索空間,但是也容易飛過最優解的區域;如果Vmax 的值太小,雖然能夠保證粒子不會飛出搜索區域,但是會導致整個粒子群體的搜索速度太慢,極易陷入局部最優解。所以確定一個合適的粒子最大速度Vmax 關系到粒子群算法能否高效的運行。