for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
2.评价每个微粒的适应度,将当前各微粒的位置和适应值储存在各微粒的pbest中,将所有的pbest中适应值最优个体的位置和适应值存储于gbest中;
pg=x(N,:); %Pg为全局最优
for i=1:N
if fitness4(x(i,:))<fitness4(pg)
pg=x(i,:);
end
3.用下列式子更新粒子的速度和位置:
j=1,2…,d
for i=1:N %速度、位置更新
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
4.对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置。
5比较当前所有pbest和gbest的值,更新gbest;
6若满足停止条件,搜索停止,输出结果,否则返回3继续搜索。
(2) 带压缩因子的粒子群优化算法(YSPSO)
为有效地控制粒子的飞行速度使算法达到全局探测与局部开采两者间的平衡,Clerc构造了引入收缩因子的PSO算法,其速度更新公式为:
为保证算法的顺利求解, 必须大于4。(MATLAB程序代码见附录2)
带压缩因子粒子群算法的基本步骤如下:
1.随机初始化种群中各微粒的位置和速度;
2.评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中; 基于MATLAB的粒子群优化算法研究(3):http://www.youerw.com/jisuanji/lunwen_39759.html