理论教育 粒子群算法权重控制实现

粒子群算法权重控制实现

时间:2023-11-17 理论教育 版权反馈
【摘要】:常见的PSO算法有自适应权重法、随机权重法和线性递减权重法等。当粒子目标值分散时,减小惯性权重;当粒子目标值一致时,增加惯性权重。依据早熟收敛程度和适应值进行权重调整根据群里的早熟收敛程度和适应值,可以确定惯性权重的变化。依据fi、fm、favg将群体分为3个子群,分别进行不同的自适应操作。

粒子群算法权重控制实现

惯性权重控制前一变化量对当前变化量的影响,如果ω较大,能够搜索以前未能达到的区域,整个算法的全局搜索能力较强;若ω较小,则前一部分的影响较小,主要是在当前解的附近搜索,局部搜索能力较强。

常见的PSO算法有自适应权重法、随机权重法和线性递减权重法等。

1.线性递减权重法

针对PSO算法容易早熟及后期容易在全局最优解附近产生振荡的现象,提出了线性递减权重法,即使惯性权重依照线性从大到小递减,其变化公式为

其中,ωmax表示惯性权重最大值;ωmin表示惯性权重最小值;t表示当前迭代步数。

2.随机权重法

随机权重法的计算步骤如下:

①随机设置各个粒子的速度和位置。

②评价每个粒子的适应度,将粒子的位置和适应值存储在粒子的个体极值pbest中,将所有pbest中最优适应值的个体位置和适应值保存在全局极值gbest中。

③更新粒子位移和速度:

④更新权重:

⑤将每个粒子的适应值与粒子的最好位置进行比较,如果相近,则将当前值作为粒子最好的位置。比较当前所有的pbest和gbest,更新gbest

⑥当算法达到其停止条件时,则停止搜索并输出结果;否则,返回第③步继续搜索。

将实现自适应权重的优化函数命名为PSO_line,在MATLAB中编写实现以上步骤的代码如下:

例6.5 用随机权重法求解下列函数的最小值:

其中,粒子数为60,学习因子均为1.2,惯性权重取值[0.6,0.9],迭代步数为700。

解:目标函数的MATLAB代码如下:

编写如下代码:

运行后得到结果如下:

以上结果说明,用线性递减权重的方法得到了精确的最优点。需要注意的是,惯性权重并不是对所有的问题都有效,具体问题需要具体分析最合适的方法。

3.自适应法

本部分主要介绍两种自适应修改权重的方法。

(1)根据全局最优点的距离进行调整

一些学者认为惯性权重的大小还和其距全局最优点的距离有关,并提出了不同粒子惯性权重不仅随迭代次数的增加而递减,还随距全局最优点距离的增加而递增,即权重ω根据粒子的位置不同而动态变化。目前大多采用非线性动态惯性权重系数公式,该公式如下:(www.daowen.com)

其中,f表示粒子实时的目标函数值;favg和fmin分别表示当前所有粒子的平均值和最小目标值。从上面的公式可以看出,惯性权重随着粒子目标函数值的改变而改变。当粒子目标值分散时,减小惯性权重;当粒子目标值一致时,增加惯性权重。

根据全局最优点的距离调整算法的基本步骤如下:

①随机初始化种群中各个粒子的位置和速度。

②评价每个粒子的适应度,将粒子的位置和适应值存储在粒子的个体极值pbest中,将所有pbest中最优适应值的个体位置和适应值保存在全局极值gbest中。

③更新粒子位移和速度:

④更新权重:

⑤将每个粒子的适应值与粒子的最好位置进行比较,如果相近,则将当前值作为粒子最好的位置。比较当前所有的pbest和gbest,更新gbest

⑥当算法达到其停止条件时,则停止并输出结果;否则,返回第③步继续搜索。

(2)依据早熟收敛程度和适应值进行权重调整

根据群里的早熟收敛程度和适应值,可以确定惯性权重的变化。

设定粒子pi的适应值为fi,最优粒子适应度为fm,则粒子群的平均适应值,对优于平均适应值的粒子适应值求平均(记为),定义。

依据fi、fm、favg将群体分为3个子群,分别进行不同的自适应操作。其惯性权重的调整如下:

①如果fi优于,那么

②如果fi次于,且次于fm,则惯性权重不变。

③如果fi次于,则

其中,k1、k2为控制参数,k1用来控制ω的上限,k2主要用来控制ω=1.5-的调节能力。

当算法停止时,如果粒子的分布分散,则Δ比较大,ω变小,此时算法局部搜索能力加强,从而使群体趋于收敛;若粒子的分布聚集,则Δ比较小,ω变大,使粒子具有较强的探查能力,从而有效地跳出局部最优。

将实现自适应权重的优化函数命名为PSO_adp,在MATLAB中编写实现以上步骤的代码如下:

例6.6 用自适应权重法求解下列函数的最小值。

其中,粒子数为40;学习因子均为1.5;惯性权重取值为[0.7,0.7];迭代步数为200。

解:首先建立目标函数代码如下:

编写目标函数最小值计算代码如下:

运行后得到结果如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈