粒子群算法
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。
源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。
鸟(粒子)根据自身经验(自己经过的最高点)、以及所有鸟经验(所有粒子中的最高点)进行探索,每次飞的时间是1(迭代1次),速度是v,这一次飞过的路程 s=v*1(x的变化量),假如有奖励就过去,没有就停留在原地,再结合自身经验以及别人的经验思考,下一秒我要怎么飞比较好。 由于每次飞行时间是固定的,因此 位移=速度。
标准PSO算法的流程
鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。
每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。
除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。
粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
1)初始化一群微粒(群体规模为N),包括随机位置和速度;
2)评价每个微粒的适应度;
3)对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;
4)对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;
5)根据公式(2)、(3)调整微粒速度和位置;
6)未达到结束条件则转第2)步。
迭代终止条件根据具体问题一般选为最大迭代次数Gk或(和)微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。
参考资料:
https://blog.youkuaiyun.com/myarrow/article/details/51507671
http://lib.youkuaiyun.com/article/ai/62101
主要的参数
1)群体规模N,惯性因子 ,学习因子c1和c2,最大速度Vmax,最大迭代次数Gk。
2)群体规模N:一般取20~40,对较难或特定类别的问题可以取到100~200。
3)最大速度Vmax:决定当前位置与最好位置之间的区域的分辨率(或精度)。如果太快,则粒子有可能越过极小点;如果太慢,则粒子不能在局部极小点之外进行足够的探索,会陷入到局部极值区域内。这种限制可以达到防止计算溢出、决定问题空间搜索的粒度的目的。
4)权重因子:包括惯性因子和学习因子c1和c2。使粒子保持着运动惯性,使其具有扩展搜索空间的趋势,有能力探索新的区域。c1和c2代表将每个粒子推向pbest和gbest位置的统计加速项的权值。
与遗传算法的对比
优点:粒子群算法相比于遗传算法更加的简单易懂,其调节参数较少。在大多数情况下,所有粒子可能比遗传算法中的进化个体以更快速度收敛于最优解。
不同点:PSO由于不需要编码,没有GA算法中由于编码带来的求解精度限制.在GA算法中,染色体之间共享信息,所以整个种群的移动是比较均匀地向最优区域移动。