一种基于非线性共轭梯度的自适应微粒群算法

更新时间:2024-03-15 作者:用户投稿原创标记本站原创 点赞:21963 浏览:95994

【摘 要】针对微粒群算法在寻优后期出现早熟收敛、收敛速度慢的不足,在惯性权重中引入自适应机制以平衡算法的全局和局部收敛能力;在位置迭代公式中引入飞行时间策略,以减少粒子在最优解附近 “振荡”来提高算法收敛速度.最后将非线性共轭梯度算法寻优思想融合到微粒群算法中以提高算法的收敛精度,函数测试结果表明,基于非线性共轭梯度法的自适应微粒群算法提高了收敛速度和精度.

【关 键 词 】微粒群算法 非线性共轭梯度算法 函数优化

一、微粒群算法

微粒群算法(PSO) [1]是对鸟群觅食行为模拟而得到的,主要通过粒子间的竞争与协作来实现对最优化问题的求解.该算法具有易实现、需调控参数少等优点.在函数优化、智能控制领域有着广泛应用.其数学模型描述如下:

上式中,是惯性权重;和是随机数,其取值范围是;和是个体和群体的加速权值;粒子运行速度在之间、位置在之间.从式(1)和(2)看出:当时,,粒子停止寻优,算法陷入局部极值就出现了早熟收敛现象.式中惯性权重不变,不能平衡好算法的局部与全局收敛能力,因此会影响算法的收敛能力.

二、微粒群算法的改进

针对算法出现“振荡”而出现收敛速度慢,在算法的惯性权重中引入自适应机制并对位置迭代公式进行改进:

针对算法出现早熟收敛的现象,本文将非线性共轭梯度法[2]的求解思想引入到微粒群算法中即在Ptgd点附近进行超高精度寻优.充分利用非线性共轭梯度法收敛快、稳定性好和占空间不大的优点.该算法先依照给定点处的梯度生成一组共轭方向,再沿着该方向来搜索便可找到最优解.


基于非线性共轭梯度法的自适应微粒群算法(NCGPSO)算法步骤:

Step 1 算法的参数初始化;

Step 2 计算粒子个体的函数适应度值,根据(4)、(5)以找到当前状态下的全局最优值;

Step 3 在全局最优值点附近按以下步骤进行非线性共轭梯度法寻优,

(1) 生成初始的搜索方向,设,计算,k等于0.

(2) 根据进行相应的一维搜索,求出与

(3)判断,是则令,转(2);否则转到(4)

(4)判断算法是否达到算法最大的迭代次数,若达到算法的最大迭代次数则转step4,否则令,,k等于k+1,然后转到(2)继续寻优.

Step 4 判断算法是否达到算法的总迭代次数,是则停止搜索,否则转Step2.

三、测试函数

为验证本文算法的性能,对两个经典的测试函数测试.

四、测试结果

每个函数迭代200次,优化结果取平均值.函数F1和F2以平均值作为优化结果.

五、结论

对基本微粒群算法的迭代公式进行改进,提高算法收敛速度,当算法寻优后期出现早熟收敛,利用非线性共轭梯度法的精确寻优,从而提高算法的收敛精度.