百度文库-张曦元
4.参数设置
4.1 对参数的仿真研究
PSO的参数主要包括最大速度、两个加速常数和惯性常数或收缩因等。 a) 最大速度的选择:如式(2.1)所示的粒子速度是一个随机变量,由粒子位置更新公式(2.2)产生的运动轨迹是不可控的,使得粒子在问题空间循环跳动[3, 6]。为了抑制这种无规律的跳动,速度往往被限制在??vmax,vmax?内。vmax增大,有利于全局探索(global exploration);vmax减小,则有利于局部开发(local exploitation)[3]。但是vmax过高,粒子运动轨迹可能失去规律性,甚至越过最优解所在区域,导致算法难以收敛而陷入停滞状态;相反vmax太小,粒子运动步长太短,算法可能陷入局部极值[16]。vmax的选择通常凭经验给定,并一般设定为问题空间的10?20% [3]。此外,文献[17]提出了的动态调节方法以改善算法性能;而文献[48]提出了vmax自适应于群体最佳和最差适应度值vmax的选择方法。
b) 加速常数的选择:式(1)中的加速常数c2和c2分别用于控制粒子指向自身或邻域最佳位置的运动。文献[20]建议??c1?c2?4.0,并通常取c1?c2?2。Ratnaweera 等人[13]则提出自适应时变调整策略,即c1随着进化代数从2.5线性递减至0.5,与传统PSO取正数加速常数不同,Rigetc2随着进化代数从0.5线性递增至2.5。和Vesterstrom[11]提出一种增加种群多样性的粒子群算法,根据群体多样性指标调整加速常数的正负号,动态地改变―吸引‖(Attractive)和―扩散‖(Repulsive)状态,以改善算法过早收敛问题。
c) 惯性权值或收缩因子的选择:当PSO的速度更新公式采用式(1)时,即使vmax和两个加速因子选择合适,粒子仍然可能飞出问题空间,甚至趋于无穷大,发生群体“爆炸(explosion)”现象[12]。有两种方法控制这种现象:惯性常数(inertia constant)[3]和收缩因子(constriction factor)[12]。带惯性常数PSO的速度更新公式如下:
14
百度文库-张曦元
(4.1) vijt?wvijt?1?c1r(?c2r2(t()pij?xijt)1pij?xijt)其中为惯性常数。文献[8]建议随着更新代数的增加从0.9线性递减至0.4。近来,文献[15]通过采用随机近似理论(stochastic approximation theory)分析PSO的动态行为,提出了一种随更新代数递减至0的取值策略,以提高算法的搜索能力。带收缩因子PSO由Clerc 和 Kennedy[12]提出,其最简单形式[20]的速度更新 公式如下:
(4.2) vijt?xvijt?1?c1r(?c2r2(t()pij?xijt)1pij?xijt)其中x?22?????4?2,??c1?c2?4.0;通常??4.1从而x?0.729,
c1?c2?1.49445。
虽然惯性权值PSO和收缩因子PSO对典型测试函数表现出各自的优势[16],但由
于惯性常数方法通常采用惯性权值随更新代数增加而递减的策略,算法后期由于惯性权值过小,会失去探索新区域的能力,而收缩因子方法则不存在此不足[18]。
4.2 测试仿真函数
例1. 函数f(x)??xi对于适应度函数fitness对其参数w,c1,c3做出不同方
2i?110式的比较已测试其对函数结果影响。
(1)当c11?c21?2,c12?c22?1.5,w?1.2。 当惯性权值不变c1?c2的情况下对c取不同的值1.5和2。 程序(1)运行结果为:
15
百度文库-张曦元
图4.1 粒子群位置初始化
16
百度文库-张曦元
图4.2 粒子群速度初始化
17
百度文库-张曦元
图4.3 迭代结果对比
最优点坐标(1): [0.452429778718878 -0.037721251936116 0.059472309970162 0.840740574648050]
最优点坐标(2): [-0.295863893648182 0.475115714243873 -0.262874734324870 0.248526708588574]
适应度值(1)为:1.690633278729210 适应度值(2)为:0.769455496424646
(2)当c11?c21?2于c12?0,c22?2,w?1.2对比(加速因子c1?0与正常情况对比)且运行程序(2)得如下结果:
18
0.320640272233576 -0.587907547759961 -0.105031512919075
0.521629692208334 -0.197327841733574 -0.060192285082351
-0.228564770714395 -0.330571564292149 -0.134696331837768
0.244463764764120 -0.153811057636018 -0.249466572982610