① 初始化粒子群,包括群体规模N,每个粒子的位置xi和速度Vi ② 计算每个粒子的适应度值Fit[i];
(i)③ 对每个粒子,用它的适应度值Fit[i]和个体极值pbest比较,如果Fit[i]?pbest(i) ,则用Fit[i]替换掉pbest(i);
④ 对每个粒子,用它的适应度值Fit[i]和全局极值gbest比较,如果
Fit[i]?pbest(i)则用Fit[i]替gbest;
⑤ 根据公式(1.1),(1.2)更新粒子的速度vi和位置xi ;
⑥ 如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回②。
2.3 算法的构成要素
对于构成粒子群算法的各个参数进行设定。本算法中主要的参数变量为惯性权值w,学习因子c1 ,c2,群体的大小 N,迭代次数 M,粒子维数 D。 (1)群体大小
通常,群体太小则不能提供足够的采样点,以致算法性能很差,容易陷入局部最优;群体太大尽管可以增加优化信息,阻止早熟收敛的发生,但无疑会增加计算量,造成收敛时间太长,表现为收敛速度缓慢。本文对函数的优化选择种群规模为500。
(2)最大迭代次数
迭代次数越多能保证解的收敛性,但是影响运算速度,本文对函数的优化选最大迭代次数为1000次。 (3)惯性权值
惯性权重w表示在多大程度上保留原来的速度。w较大,全局收敛能力强,局部收敛能力弱;w较小,局部收敛能力强,全局收敛能力弱。 (4)学习因子
加速常数c1和c2分别用于控制粒子指向自身或邻域最佳位置的运动。建议
??c1?c2?4.0,并通常取c1?c2?2。本文中取c1?c2?2。
6
(5)粒子维数
粒子维数取决于待优化函数的维数,例如本文主要有三个函数主要:第一个函数是2维的,第二个函数是10维的,第三个函数是30维的。
(6)粒子空间的初始化
较好的选择粒子初始化空间,将大大缩短收敛的时间。在本文中我们主要是选用随机对粒子进行初始化。
2.4 算法的改进
对于函数的优化我们主要选择的是对于惯性权重的优化。惯性权重是粒子优化算法的重要参数,算法的成败很大程度上就取决于参数的选取和调节,本文采用固定权重、时变权重和随机权重三种权重。 (1)固定权重
即赋予惯性权重以一个常数值,一般来说,该值在0和1之间。固定的惯性权重使粒子在飞行中始终具有相同的探索和开发能力。显然对于不同的问题,获得最好优化效果的常数是不同的,要找到这个值需要大量的实验。通过实验发现:种群规模越小,需要的惯性权重越大,因为此时种群需要更好的探索能力来弥补粒子数量的不足,否则粒子极易收敛;种群规模越大,需要的惯性权重越小,因为每个例子可以更专注于搜索自己附近的区域。 (2)时变权重
希望粒子群在飞行开始的时候具有较好的探索能力,随着迭代次数的增加,特别是在飞行后期,希望有较好的开发能力。所以使用动态调节惯性权重。可以通过时变的惯性权重来实现。设惯性权重的取值范围为:[?min,?max],最大迭代次数为Iter_max,则第i次迭代时的惯性权重可以为:
?i??max?(3)随机权重
?max??minIter_max?i
随机权重是在一定范围内随机取值,在本文中我们采用的是:
??0.5?7
Random 2其中Random为0-1之间的随机数。这样惯性指数将在0.5-1之间随机变化。均值为0.75。对于动态优化问题来说,不能够预测在给定的时间粒子群于要更好的探索能力还是更好的开发能力。所以,可以使惯性权重在一定范围内随机变化。 需要说明的是,本文的程序允许改变除惯性权重以外的其他参数,因为本文编写的程序参照MATLAB工具箱,留给用户解决这类问题一个接口函数,上述的各个参数正是接口函数的参数,因此允许改变。另外对于c也可采用变参数法,即随迭代次数增加,利用经验公式使它们动态调整,本文采用固定值。
三、算例设计
3.1 测试函数介绍
本文主要选取三个函数:一个2维连续函数、一个10离散函数、一个30维离散函数,利用MATLAB编写粒子群算法程序来优化它们。本文选取了三个函数,分别如下:
f1?0.5?10?sinx?x?1?0.001?x2122212?x2??0.5
2??2f2??(xi2?10cos(2?xi)?10)
i?11f3?4000?x??cos(2ii?1i?13030xii)?1
其中f1求最大值,f2和f3为求最小值。
3.2 优化函数特点
(1)Schaffer函数:f1?0.5??sinx?x?1?0.001?x2122212?x2??0.5求其最大值。
2??2目标函数的效果图如图3.1下:
8
10.80.60.40.20550-5-50
图3.1 Schaffer函数的效果图
由图知此函数是个二维函数,常用于测试粒子群算法性能的测试函数,全局在(0,0)处取得最大值,具有强烈震荡的状态,而在Xi (-3.14,3.14)范围内,有无限个次全局最大点。
(2)Rastrigrin函数:f2??(xi2?10cos(2?xi)?10)
i?110目标函数的效果图如图3.2所示:
100806040200550-5-50
图3.2 Rastrigrin函数的效果图
9
由图知此函数是10维多峰值函数,存在大量按正弦拐点排列的、很深的局部最优点。其在(0,0,…0)处取得全局最小值,在Xi?(-5.12,5.12)范围内大约有10个局部极小点,不难优化查找到全局最优值。
1(3)Girewank函数:f3?4000302i30
xii)?1
?x??cos(i?1i?1 目标函数的效果图如图3.3所示:
2.521.510.501050-5-10-10-55010
图3.3 Girewank函数的效果图
由图知此函数为一个多峰值函数,为30维函数,变量之间有相互关系,该函数有很多局部最优点,其全局最优点全局最小值在(X1,X2,……Xn)=(0,0,……0)取得,目标函数最优为0。
四、仿真实验设计
4.1 实验参数设计
(1)权重参数设计
本文对每个测试函数将使用三种不同的惯性权重策略进行实验,分别为固定
Random权重:??0.6;随机权重:??0.5?;时变权重:
2?i??max??max??minIter_max?i,其中?max?0.9,?min?0.2。
10
相关推荐: