粒子 当前位置设为 ,粒子 的当前速度设为 。在进化过程中, 中记录30个结构中粒子本身结构最优位置, 中记录了30个结构中所有粒子的结构最优位置。PSO算法的迭代方程为:
以下为基本的粒子群算法的流程[2]:(1)根据结构对称性约束,给粒子模型的初始位置和初始速度赋值;(2)根据能量公式,计算每个结构的能量值;(3)每个结构都需要比较本身的能量值与该结构历史最好位置的能量值,求结构的历史最优位置pbest;(4)比较全局最优位置的能量值与每个结构的历史最优位置的能量值,求解粒子群的全局最优结构gbest,这个过程也叫局域优化;(5)根据迭代方程每个粒子的速度和位置得到进化;(6)判断是否满足结束条件,即结构是否收敛,如果不满足,重新执行(2),循环直至算法结束。
1.1.2PSO算法的参数设置
PSO算法的参数设置对收敛速度和解的质量有着重要的影响[9],其中,(1)式中 为惯性权重,是用来实现全局内搜索与局部开发能力之间保持平衡的重要参数[4]。Y Shi和R C Eberhart通过试验表明, 的取值应当随着代数增加线性减少,这样可以得到较好的试验结果。
当 。 设置为最高值0.9有利于全局搜索,设置为最低值0.4有利于局部的快速搜索。 动态地改变根据(3)式迭代线性地从0.9减小到0.4。
其中 和 分别等于0.9和0.4, 为迭代次数。
之间服从均匀分布的两个随机数,是使算法可以模拟自然界中群体行为中的轻微扰动的参数; 和 是正的加速系数, 是个体学习因子,表达粒子对飞行经验的依赖程度,而 为全局学习因子,表明粒子对整个种群的信赖程度。它们使每个粒子分别向 和 的位置靠近,早期研究表明 时,可以给出较好的优化结果;粒子速度的上限 对于算法的性能极为重要,一般局限在 。
1.2MATLAB程序编程介绍
MATLAB是学习过的一种数学计算软件,并且具有高效的数值计算及符号计算功能,完备的图形处理功能,计算结果和编程的可视化等优点;本实验使用MATLAB编程来实现粒子群算法。