基本粒子群算法步骤,粒子群算法的流程图
粒子群优化算法概述1.1 Wiki粒子群优化(PSO)或粒子群优化是一种人工智能算法。1995年,Kennedy和Eberhart (1995)两位学者提出,这两位学者是观察鸟类觅食信息传递的启发之一。粒子群优化算法的理论基础是将单个粒子视为鸟群中的单个个体,在算法中赋予该粒子(个体)记忆,通过与粒子群中其他粒子的相互作用来获得最优解。因此,粒子群优化算法的基本理论表明,任何物体(粒子)在运动过程中都可以利用自身的记忆和经验,在运动的同时根据自身的经验和记忆学习来调整运动方向。因为在粒子群优化中,多个粒子同时运动,同时将自己的经验与其他粒子提供的经验进行比较来寻找最优解,使自己成为最优解。根据粒子群优化算法的特点,粒子不仅受自身进化的影响,而且对群体间的进化具有学习和记忆能力,可以对粒子自身进行优化和调整。
1.2简单行为准则
冲突避免
群体在一定空间内活动。个体有自己的运动意愿,但一定不能影响其他个体的运动。避免冲突和纠纷。
速度匹配
:个体必须适应中心的移动速度,无论方向、距离、速度都要相互配合。
群体中心
:个体向群体中心移动,瞄准群体中心,向目标移动。1.3粒子群优化算法的基本理论公式是基于鸟类觅食提出的,是一种优化决策过程。与人的决策过程类似,它往往基于两条重要的信息:他们的经验和他们自己的经验。
因此,在一群鸟觅食的过程中,在一个D维空间中,M只鸟组成一个群体,第I只鸟的位置如下所示
当这个位置代入
目标函数
,可以得到适应值
,3358www.Sina.com/决定位置的好坏。适应值越小,位置越好,每只鸟经历的最佳位置是从010到59000取最小适应值的最佳位置是
第一只鸟的速度是
适应值的大小
其中I=1,2,m代表第I个粒子(鸟)的d=1,2,d代表d维;w叫惯性因子而不是负数。R1和r2是在[0,1]范围内变换的随机数。称为约束因子,其目的是控制速度的权重。
1.4参数的选择。粒子数m
一般是20~40,特殊问题需要100-200个颗粒。粒子越多,搜索范围越广,越容易找到全局最优解,算法运行时间越长。
2.惯性常数w
惯性因子W对粒子群算法的收敛性有很大影响。w可以是在[0,1]范围内的随机数。如果W为常数,建议取0.6~0.75范围内的值。
3.加速度常数c1和c2
加速度常数c1和c2是调整自身经验和社会经验在这项运动中的作用的权重。一般C1=C2=2;
4.最大飞行速度
粒子的最大飞行速度通常不超过最大速度的10%-20%。
2算法流程2.1具体步骤1。算法结束时初始化粒子群(速度和位置)、惯性因子、加速度常数、最大重叠次数和最小误差。
2.评估每个粒子的初始适应值。
3.将初始适应值作为每个粒子的最佳值,将每个适应值对应的位置作为每个粒子的最佳位置。
4.将粒子中的最佳匹配值作为全局最佳匹配值,将每个匹配值对应的位置作为粒子的全局最佳位置。
5.用上面的公式更新粒子速度。
6.限制飞行速度,不要超过最大飞行速度。
7.用上面的公式更新质点位置。
8.比较每个粒子的自适应值是否优于历史最好值,如果是,则替换。
9.计算粒子的全局最优适应值是否优于历史最优值,如果是,则替换它。
10.重复5-9,直到达到设定的最小误差或达到最大重叠次数。
11.输出全局最优值和相应的p
2.2伪代码for each particle _ _ initialize particle enddo _ _ foreach particle _ _ calculate fitness ebest finness in history _ _ _ _ _ _ _ _ _ set current value as new pbest _ _ end _ _ select the particle with th _ _ foreach
当不考虑最大迭代或最小误差标准时,根据等式(b)更新粒子位置。建议使用MATLAB和Python,以及相关的函数或库。
3.1 MATLAB
整个鸟群
x=particleswarm(fun,nvars)
x=particleswarm(fun,nvars,lb,ub)
x=particles swarm(fun,nvars,lb,ub,options)
x=粒子群(问题)
[x,fval,exitflag,output]=particleswarm(___)
句法规则
X=particleswarm(fun,nvars)试图找到一个X达到局部最小值的向量fun。Nvars是大小(设计变量的数量)的乐趣。
注意
传递额外参数(优化工具箱)描述了如何在必要时向目标函数传递额外参数。
X=particles warm (fun,nvars,lb,ub)在设计变量的上下界定义了一组,x,这样就可以在解的范围内找到lb x ub。
X=particleswarm (fun,nvars,lb,ub,options)最小化,默认优化参数替换为中的options值。如果没有限制,则设置lb=[],ub=[]。
x=particle swarm(问题)找到的最小值问题,其中问题是一个结构。
[x,fval,exit flag,output]=particleswarm (_ _ _),对于上述任何一个输入参数,返回:
标量fval是目标函数值fun(x)
exitflag描述了退出条件的值。
输出包含优化过程信息的结构
3.2 Python我们用的是常用的scikit-opt库,可以在GitHub上下载。
具体例子如下
1.准备要优化的目标函数。
DEF DEMO _ FUNC (x): x1,x2,x3=x return x1 * * 2(x2-0.05)* * 2 x3 * * 2。实现PSO算法并打印结果。
从sko . PSO importpsopsoso=PSO(func=demo _ func,dim=3)fitness=PSO . fit()print( best _ x is ,pso.gb est _ x, best _ y is ,pso.gb est _ y) 4扩展一般情况下,我们可以使用粒子群优化和神经网络。具体的研究和参考可以在相关论文中找到。