奉中華 李志剛 湖南環境生物職業技術學院
粒子群算法(Particle Swarm Optimization, PSO)是美國的學者Kennedy和Eberhart提出的一種群智能優化算法,該算法主要是模擬鳥兒覓食行為,粒子間相互學習、相互交換信息從而達到尋優的目的。該算法模型中種群規模為M,xi則表示第i個粒子個體的所在位置,vi表示粒子的速度,粒子群粒子個體最好位置為Pi,微粒群的全局最好位置為Pg。粒子個體通過式(1)和式(2)來調整自己的速度和位置:
其中,·1和·2表示為學習因子。
Step 1:算法的初始化(位置x、速度v、最大迭代次數N等賦初值)。
Step 2:根據迭代公式(1)、(2)計算適應度函數值。
Step 4:判斷是否達到迭代最大迭代次數,是則輸出最優值,否則進行尋優。
算法運行環境: MATLAB 7.1,主頻 1.9GHZ。函數 F1 和函數F2數學表達式如下所示:
表 1 各個函數的表達式
函數F1共有4個全局的極大值點,其全局最大值位于(-2.81,3.13), (3.0, 2.0),(3.58,-1.85),(-3.78,-3.28),其函數最優值均為是660.0。函數F2 共有4 個全局極大值點, 全局最大值分別是(0.635,0.635),(0.635,-0.635),(-0.635,0.635),(-0.635,-0.635), 其 函數值為 3.260。
表2 函數1計算結果
表3 函數2計算結果
實驗結果表明,基于變步長的粒子群算法可以有效克服早熟收斂現象,能夠避免陷入局部極值,引入變步長尋優機制提高了算法的尋優精度,同時也收到了較好的搜索效果。