④更新学习因子 (2-27)
⑤对每个微粒,将其适应值与其经历过的最好位置作比较如果较好,则将其作为当前的最好位置,比较当前所有的pbest和gbest的值,更新gbest;
⑥若满足停止条件,搜索停止,输出结果,否则返回③继续搜索
取值
N:粒子数目; 40
cmax:学习因子的最大值; 2.1
cmin:学习因子的最小值; 0.8
w:惯性权重; 0.9
M:最大迭代次数; 10000
D:问题的文数; 2
程序见附录6
输入[xm,fv] = LnCPSO(@fitness,40,2.1,0.8,0.9#10000, 2)
得出xm = 0.089842014325905 -0.712656402339923
fv = -1.031628453489878
和随机权重粒子群算法得出的结果相比,同步变化的学习因子算法精度稍差一点,当然可以通过不断调整学习因子的取值范围,从而获得不同的结果。
2.5.2异步变化的学习因子
两个学习因子在优化过程中随时间进行不同的变化称之为异步变化的学习因子,这样使得在优化的初始阶段,粒子具有较大的自我学习能力和较小的社会学习能力,加强全局搜索能力,而在优化的后期,粒子具有较大的社会学习能力和较小的自我学习能力,有利于收敛到全局最优解。学习因子的变化公式为:
, (2-27)
其中c1,ini,c2,ini分别代表c1和c2的初始值,c1,fin,c2,fin代表c1和c2的迭代终值。对于大多数情况下采用如下的参数设置效果较好:
(2-28)
异步学习因子粒子群算法的基本步骤如下:
①随机初始化种群中各微粒的位置和速度;
②评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;
③用下式更新粒子的速度和位移
④跟新学习因子
, (2-31)
⑤对每个微粒,将其适应值与其经历过的最好位置作比较如果较好,则将其作为当前的最好位置,比较当前所有的pbest和gbest的值,更新gbest;本文来自辣%文,论'文.网,
毕业论文 www.751com.cn 加7位QQ324~9114找原文
⑥若满足停止条件,搜索停止,输出结果,否则返回②继续搜索
取值
N:粒子数目; 40
C1max:学习因子1的最大值; 2.5
C1min:学习因子1的最小值; 0.5
C2max:学习因子2的最大值; 0.5
C2min:学习因子2的最小值; 2.5
w:惯性权重; 0.9
M:最大迭代次数; 10000
D:问题的文数; 2
程序见附录6
输入[xm,fv] = AsyLnCPSO(@fitness,40,2.5,0.5,0.5,2.5,0.9,10000,2)
得出 xm =-0.089758441704680 0.712652814833476
fv = -1.031628426455192
上面得出的结果精度稍差,但是可以调整惯性权重来获得满意的结果,接着在 MATLAB命令窗口中输入:
取值
N:粒子数目; 40
C1max:学习因子1的最大值; 2.5
C1min:学习因子1的最小值; 0.5
C2max:学习因子2的最大值; 0.5
C2min:学习因子2的最小值; 2.5
w:惯性权重; 0.7
M:最大迭代次数; 10000
D:问题的文数; 2
程序见附录 6
[xm,fv] = AsyLnCPS0(@fitness,40,2.5,0.5,0.5,2.5,0.7,10000,2)
所得结果为:
xm = 0.089842011984645
-0.712656402381973
fv =-1.031628453489878
因此,对于每种粒子群算法的变形,每个参数的选取都会影响结果的精度,只有通过不断调整参数的组合,才能求得满意的结果。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
matlab微粒群算法研究与仿真 第9页下载如图片无法显示或论文不完整,请联系qq752018766