粒子群算法的寻优算法

一 定义
粒子群算法(也称PSO算法),也是一种进化算法,模拟生物群体的觅食行为,是一种群体智能算法,常见的群体只能算法有:蚁群算法,粒子群优化算法,菌群优化算法,蛙跳算法,人工蜂群算法等。PSO是通过当前已知种群寻找到的所有解来决定新的解的寻找方向,也就是新解的生成方式依赖于这些种群历史上寻找的所有解。

二 算法步骤
(1)初始化粒子群个体;
(2)计算每个个体的适应度值(函数值)作为评判好坏的标准;
(3)找到每个个体自己在所有迭代过程中的最优解Pbest;
(4)找到所有个体在所有迭代过程中的最优解Zbest;
(5)根据速度公式更新速度;
(6)根据位置公式更新位置;
(7)重复步骤二直至迭代次数结束

流程图:

在这里插入图片描述


归结公式:
在这里插入图片描述
参数:
c1 c2:加速因子
w:惯性权重
sizepop:群体规模
dim:适应度函数维度
maxgen:进化次数

四 优缺点
优点:
(1)简单易行。
(2)收敛速度快。
(3)设置参数少。
缺点:
(1)在某些问题上性能并不是特别好。
(2)网络权重的编码而且遗传算子的选择有时比较麻烦。

五 与遗传算法的比较
共同点:
两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解。但是,PSO没有遗传操作如交叉(crossover)和变异(mutation),而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。
不同点:
与遗传算法比较,PSO的信息共享机制是很不同的。在遗传算法中,染色体(chromosomes)互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动。在PSO中, 只有gBest (orlBest) 给出信息给其他的粒子, 这是单向的信息流动。整个搜索更新过程是跟随当前最优解的过程。与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解。

六 实验过程
初始状态:
w=0.8 c1=1.49445 c2=1.49445 sizepop=100 dip=5
在这里插入图片描述
在这里插入图片描述
1.改变w
对w自定义一个线性方程:w=wmax-(wmax-wmin)/maxgen*i;
其中设wmax=0.9 wmin=0.6
在这里插入图片描述

在这里插入图片描述
初始迭代时,w较大,具有较好的全局搜索能力,随着迭代次数的增加,w逐渐减小,粒子的局部搜索能力增强,全局搜索能力较弱。
如果初始迭代时没有产生较好的点,那么随着迭代次数的增加容易陷入局部最优值。

2.改变c1,c2
(1)c1=1.8 c2=1.2
经过十次迭代,取平均值,结果为2.
(2)c1=1.5 c2=1.5
经过十次迭代,取平均值,结果为3.1838688
(3)c1=1.8 c2=1.2
经过十次迭代,取平均值,结果为4.5777567
(4)c1=2.0 c2=1.0
经过十次迭代,取平均值,结果为3.2836839

c1,c2的值都不宜过大,否则容易陷入局部最优。
c1较大,c2较小时,收敛速度很慢,甚至可能难以收敛
c1较小,c2较大时,收敛速度增快,但是具有盲目性,容易陷入局部最优。

3.改变sizepop,dip
(1)sizepop=50 dip=5
经过十次迭代,取平均值,结果为1.3929455
(2)sizepop=50 dip=10
经过十次迭代,取平均值,结果为5.8702294
(3)sizepop=50 dip=20
经过十次迭代,取平均值,结果为9.949614
(4)sizepop=100 dip=5
经过十次迭代,取平均值,结果为0.3979836
(5)sizepop=100 dip=10
经过十次迭代,取平均值,结果为5.6712644
(6)sizepop=200 dip=5
经过十次迭代,取平均值,结果为0.0994959
(7)sizepop=200 dip=10
经过十次迭代,取平均值,结果为5.2732523

在维度为5的情况下,种群规模越大最优适应度也越好。但当维度为10的情况下,最优适应度只有轻微的提高,说明当维度增大,增强种群规模对最优适应度的影响不大。并且维度越大,最优适应度越差。

七 附代码
POS.m

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了6 篇原创文章 · 获赞 1 · 访问量 566

猜你喜欢

转载自blog.csdn.net/zencci/article/details/103376800