基本粒子群算法步骤,粒子群算法的流程图

  基本粒子群算法步骤,粒子群算法的流程图

  粒子群优化算法概述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扩展一般情况下,我们可以使用粒子群优化和神经网络。具体的研究和参考可以在相关论文中找到。

基本粒子群算法步骤,粒子群算法的流程图