自适应粒子群算法研究及其在多目标优化中应用 (7)

生人勿近 分享 2020-06-28 下载文档

要好的解,从而替代了全局最优解。此时,每个粒子将会飞向它自身最好位置和群体全局最好位置的权重中心。所以如果没有第一部分,粒子群算法的搜索空间将会随着进化而收缩。此时只有当全局最优解在初始搜索区间时,粒子群算法才可能找到解。所以求解结果非常依赖于初始群体。当没有第一部分时,此算法更像是局部最优算法。

对于不同的问题,局部最优能力和全局最优能力的权衡也不一样。考虑到这个问题,并结合以上的讨论,Shi和Eberhart添加了一个惯性权重?到速度更新公式,即式(3-2)。

vijt?1??tvijt?c1r1?(pbestijt?xijt)?c2r2?(gbestijt?xijt) (3-2)

位置更新公式与基本粒子群算法更新公式相同。惯性权重?起着权衡局部最优能力和全局最优能力的作用。为了研究惯性权重对粒子群算法性能的影响,Shi和Eberhart将此算法应用到Schaffer’s f6函数中,这是个著名的评价优化算法的基准函数。他们改变惯性权重的大小,通过大量的实验得到两个结论:

1)当惯性权重较小时(<0.8),如果粒子群算法能找到全局最优解的话,那么它所经历的搜索时间是很短的,即所有的粒子趋向于快速汇集在一起。如果最优解是在初始搜索空间内,粒子群算法将会很容易找到全局最优,否则它会找不到全局最优。

2)当惯性权重较大时(>1.2),粒子群算法更像全局最优解,且它总是在探索新区域。当然,这时的粒子群算法会需要更多的迭代来达到全局最优解,且更有可能找不到全局最优解。当惯性权重适中时,粒子群算法将会有更大的机会找到全局最优解,但迭代次数也会比第一种情况更多。

根据以上分析,他们不是把惯性权重设为定值,而是设为一个随时间线性减少的函数,惯性权重的函数形式通常如式(3-1)所示。

?t??max?其中

?max??mintmax?t (3-1)

?max为初始权重;?min为最终权重;tmax为最大迭代次数;t为当前迭代次数。

这个函数使得粒子群算法在刚开始时倾向于开掘,然后逐渐转向开拓,从而在局部区域调整解。这些改进使得粒子群算法的性能得到很大的提高。

3.3.2 测试函数与测试环境

为了考察标准粒子群算法的性能,对两个典型的测试函数进行优化。选定测试函数

如表3-1所示。

表3-1 两个测试函数

测试函数 f(x,y) x,y取值范围 [-30,30] [-5.12,5.12] 求最大/最最优值 小值 最小值 最大值 Ⅰ 100(x2?y)2?(1?x)2 Ⅱ (3 )2?(x2?y2)2220.05?(x?y)0 3600 对于测试函数Ⅰ,目标为求该函数的最小值,最优值为0,在(1,1)点取到。该函数为单峰函数,函数较为简单,不存在局部极值,但是函数的取值范围较大,在[-30,30]之间,在求解过程中应设置较大的粒子群数和迭代代数,才能较快地收敛到最优值。函数图象如图3-1所示。

图3-1 测试函数Ⅰ

对于测试函数Ⅱ,目标为求该函数的最大值,最优值为3600,在(0,0)点取到。该函数为多峰函数,在(?5.12,?5.12)处分别有四个局部极值,中间(0,0)是全局极值,非常狭长陡峭,容易陷入局部极值,是非常具有代表性的测试函数。函数图象如图3-2所示。

图3-2 测试函数Ⅱ

利用选取好的两个测试函数,测试标准粒子群算法的性能。由于测试环境不同对算法性能评估也不一样,故将本次实验测试环境列出,如表3-2所示。

CPU 硬盘 内存 工具 编程工具 表3-2 测试环境 lenovo笔记本 Pentium?Dual-Core CPU T4200 160G 2.0HZ Matlab 6.5 电脑型号 电脑配置 3.3.3 算法流程设置

粒子群算法无需像遗传算法采用二进制编码,而是采用实数编码直接进行优化计算。将测试函数本身设为适应度函数进行求解,求解步骤与基本粒子群算法类似,只是速度调整公式有所不同,具体见如下流程。

图3-3 标准粒子群算法简要流程

表3-3 参数初始化(以测试函数Ⅱ为例)

步骤 具体操作 最大惯性权重 最小惯性权重 算法基本参数初始化 参数初始化 是否调试参数 对应MATLAB代码 是 是 wmax=0.9; wmin=0.4; itmax=200; N=200; c1=2; c2=2; j=1; for iter=1:itmax W(iter)=wmax-((wmax-wmin)/itmax)*iter; end; D=2; a=-5.12;b=5.12; x=a+(b-a)*rand(N,D,1); V=wmin+(wmax-wmin)*rand(N,D,1); 最大迭代次数 是 粒子群大小 是 学习因子1 是 学习因子2 是 初始化迭代次数 否 否 循环迭代前初始化惯性权重 设置目标函数相关参数 粒子初始化 惯性权重按迭代次数线性递减 自变量解的维度 解的左边界a,右边界b 位置初始化 速度初始化 否 否 否 否 表3-4 计算第一代适应度值(以测试函数Ⅱ为例)

步骤 具体操作 对应MATLAB代码 for i=1:N x0(1)=x(i,1,1);x0(2)=x(i,2,1); 计算每个粒子的适应度值 F(i,1,1)=f4(x0); end; [C,I]=max(F(:,1,1)); 求第一代粒子的最大值 [C,I]=max(F(:,1,1)); 计算第一代适应度值 gbest(1,1,1)=x(I,1,1); gbest(1,2,1)=x(I,2,1); for p=1:N for r=1:D 对全局最优位置进行赋值 G(p,r,1)=gbest(1,r,1); end;end; x0(1)=G(1,1,1);x0(2)=G(1,2,1); Fbest(1,1,1)=f4(x0); 对粒子自身最优位置进行赋值 for i=1:N pbest(i,:,1)=x(i,:,1); end; x0(1)=gbest(1,1,1);x0(2)=gbest(1,2,1); Fb(1,1,1)=f4(x0); 表3-5 迭代求解(以测试函数Ⅱ为例)

步骤 具体操作 对应MATLAB代码 V(:,:,j)=W(j-1)*V(:,:,j-1) +c1*rand*(pbest(:,:,j-1)- x(:,:,j-1))+c2*rand* (G(:,:,j-1)-x(:,:,j-1)); x(:,:,j)=x(:,:,j-1)+V(:,:,j); for xx=1:N for yy=1:D if x(xx,yy,j)bx(xx,yy,j)=b; end;end;end; for i=1:N x0(1)=x(i,1,j);x0(2)=x(i,2,j); F(i,1,j)=f4(x0); end; [C,I]=max(F(:,:,j)); if C>Fb(1,1,j)%如果当代不是最大值,则修改第j代全局最优值的位置gbest(1,1,j)=gbest(1,1,I); gbest(1,2,j)=gbest(1,2,I);end; for i=1:N [C,I]=max(F(i,1,:)); if F(i,1,j)>=C pbest(i,:,j)=x(i,:,j); else pbest(i,:,j)=x(i,:,I); end;end; 速度调整 位置调整 边界控制 迭代求解 计算适应度值 调整全局最优值 调整粒子自身最优值 表3-6 终止迭代和结果输出(以测试函数Ⅱ为例)

步骤 终止迭代和具体操作 迭代代数 对应MATLAB代码 j=itmax


自适应粒子群算法研究及其在多目标优化中应用 (7).doc 将本文的Word文档下载到电脑

下一篇:最新人教版八年级英语上册(1-10)单元书面表达作文汇总 - 图文

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx