粒子群_Matlab程序代码
粒子群优化算法pa
icleswarmoptimizatio
,PSO是ke
edy和Eberhart在研究鸟类和鱼类的群体行为基础上于1995年提出的一种群智能算法,其思想米源予人工生命和演化计算理论,模仿鸟群飞行觅食行为,通过鸟集体协作使群体达到最优。1粒子群算法的原理
PSO中,每个优化问题的解看作搜索空间中的一只鸟即粒子,所有的粒子都有一个被优化的函数决定的适应值,并且有一个速度决定它们飞翔的方向和速率,粒子们追随当前的最优粒子在解空间中搜索。算法首先初始化一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”即个体极值和全局极值来更新自己的速度与位置。在D维目标搜索空间中,由种群数为m的粒子组成粒子群,其中第f个粒子在第d维的位置为Xid,其飞行速度为Vid,该粒子当前搜索到的最优位置为Pidgoodvalue和整个粒子群当前的最优位置Pgdbestvalue。
每维的速度与位置更新公式如下
vid1vidc1ra
d1pidxidc2ra
d1gidxid1
xid1xidvid12
W为惯性权重,C1和C2为学习因子,ra
d()01范围内变化的随机数。2参数介绍与设置(1)w
w是保持粒子运动惯性的参数,能使种群扩展搜索空间,获得较好的求解效果。较大的w有利于群体在更大的范围内进行搜索。而较小的w能够保证群体收敛到最优位置,所以w的选择及在迭代中的变化对搜索能力和跳出局优能力具有重要影响。一般将w设定为08左右。(1)加速因子c1和c2
c1和c2用于调整粒子自身经验和社会经验在其运动中的作用,表示将每个粒子拉向pbest和gbest位置的随机加速项的权重,低的值允许粒子在被拉回前可以在目标区域外徘徊而高的值则导致粒子突然冲向或越过目标区域。如果c10则粒子没有认知能力。在粒子的相互作用下能到达新的搜索空间但容易陷入局部极值点如果c20粒子间没有社会信息共享其算法变成一个多起点的随机搜索如果c1c20粒子将一直以当前的速度飞行直到到达边界。恰当地选择c1与c2能较好的得到最优解,一般都设定为2。(2)最大速度vmax
vmax决定当前位置与最好位置之间的区域的分辨率(或精度)。如果vmax太高微粒可能会飞跃最优解如果vmax太小则微粒易陷入局部最优。引入惯性权重w可消除对vmax的需要因为两者的作用都是维护全局和局部搜索能力的平衡。当vmax增加时可通过减小w来平衡搜索而w的减小可使得所需的迭代次数变小。但常常将设定一个最大的vmax。
较好地选择和调整参数能够加大搜索能力,r