粒子群优化算法(Particle Swarm Optimization)是一种进化计算机技术(evolutionary computation),源于对鸟类捕食行为的研究,是一种基于迭代的优化工具。事实上,像PSO这种同属于元启发式优化算法有很多,例如同样比较常用过的遗传算法,灰狼算法,鲸鱼算法等等,这些算法放在现在看并不新颖,近年来国外的一些期刊上有时还会出现一些新的优化算法,对于学者而言更倾向于用新的东西,不过在工程上,各种优化算法的效力往往是具备一定的通用性和针对性的,只消能解决特定的问题即可。元启发式的搜索算法因其简单便捷,至今仍在工程中广为受用。
本文首先介绍最基本的PSO粒子群算法,其原理简单来说即是在初始时刻随机生成一系列无质量的粒子,在迭代中更新每个粒子的速度和位置,通过比较每次带入到目标函数中得到的适应值,逐渐向得到目标函数最优解的方向搜索。
实际使用中,往往希望所使用的方法以函数的形式实现,例如对于本文的优化算,我们希望将算法写成MATLAB函数的形式,输入目标函数的格式以及算法的一些基本参数(粒子个数、迭代数目、自变量个数等等),输出为优化后的最优解和最优解对应的最优值,即:
function [xm,fv] = PSO(fitness,N,c1,c2,w,M,D)
我在大量应用后,觉得这种形式的PSO算法用起来最为便捷,它源自《精通MATLAB最优计算》(龚纯),这本书是我很推荐的一本书,很适合学习使用MATLAB做优化问题的初学者,有兴趣的读者可以找来看看(如果需要电子版可以私信哦)。
其中除去fitness共有五个参数(fitness为目标函数的表达式):
N:粒子数。粒子数的多少根据问题的复杂程度自行决定;
D:粒子的维度。因优化的问题而定,也就是目标函数自变量的个数;
M:最大

最低0.47元/天 解锁文章
747

被折叠的 条评论
为什么被折叠?



