粒子群算法GydF4y2Ba

算法大纲GydF4y2Ba

particleswarmGydF4y2Ba基于在Kennedy和Eberhart描述的算法GydF4y2Ba[1]GydF4y2Ba使用修改在Mezura蒙达斯和科埃略科埃略建议GydF4y2Ba[2]GydF4y2Ba和佩德森GydF4y2Ba[3]GydF4y2Ba。GydF4y2Ba

粒子群算法开始于创建初始颗粒,并赋予它们的初始速度。GydF4y2Ba

它评估在每个粒子的位置的目标函数,并且确定最佳(最低)函数值和最佳位置。GydF4y2Ba

它选择新的速度,根据目前的速度,颗粒的个人最好的位置,以及他们的邻居的最佳地点。GydF4y2Ba

然后它迭代更新粒子的位置(新位置是旧的加速度,修改,以保持范围内的颗粒),速度,和邻居。GydF4y2Ba

迭代过程,直到算法达到停止准则。GydF4y2Ba

这里有步骤的细节。GydF4y2Ba

初始化GydF4y2Ba

默认,GydF4y2BaparticleswarmGydF4y2Ba创建在界限内随机均匀颗粒。如果有一个无界的分量,GydF4y2BaparticleswarmGydF4y2Ba创建具有-1000随机均匀分布的颗粒1000。如果你只有一个约束,GydF4y2BaparticleswarmGydF4y2Ba转移到已结合的作为终点的创建,和间隔2000宽一个创造。粒子GydF4y2Ba一世GydF4y2Ba有位置GydF4y2BaX(ⅰ)GydF4y2Ba,这与一个行向量GydF4y2BanvarsGydF4y2Ba元素。使用控制的初始群的跨度GydF4y2BaInitialSwarmSpanGydF4y2Ba选项。GydF4y2Ba

同样的,GydF4y2BaparticleswarmGydF4y2Ba创建初始粒子速度GydF4y2BavGydF4y2Ba在该范围内随机均匀地GydF4y2Ba[-r,R]GydF4y2Ba,其中GydF4y2Ba[RGydF4y2Ba是初始向量GydF4y2Ba范围GydF4y2Ba。组件的范围GydF4y2BaķGydF4y2Ba是GydF4y2Ba分钟(UB(K) - 磅(K),InitialSwarmSpan(k))的GydF4y2Ba。GydF4y2Ba

particleswarmGydF4y2Ba在评估所有粒子的目标函数。它记录当前位置GydF4y2BaP(I)GydF4y2Ba每个粒子的GydF4y2Ba一世GydF4y2Ba。在随后的迭代,GydF4y2BaP(I)GydF4y2Ba将是最好的目标函数粒子的位置GydF4y2Ba一世GydF4y2Ba找到了。和GydF4y2BabGydF4y2Ba是最好的在所有颗粒:GydF4y2BaB =分钟(乐趣(P(I)))GydF4y2Ba。GydF4y2BadGydF4y2Ba是位置,使得GydF4y2BaB =乐趣(d)GydF4y2Ba。GydF4y2Ba

particleswarmGydF4y2Ba初始化邻域大小GydF4y2BañGydF4y2Ba至GydF4y2BaminNeighborhoodSize = MAX(2,地板(SwarmSize * MinNeighborsFraction))GydF4y2Ba。GydF4y2Ba

particleswarmGydF4y2Ba初始化惯性GydF4y2BaW = MAX(InertiaRange)GydF4y2Ba, 或者如果GydF4y2BaInertiaRangeGydF4y2Ba是负的,它集GydF4y2BaW =分钟(InertiaRange)GydF4y2Ba。GydF4y2Ba

particleswarmGydF4y2Ba初始化制动计数器GydF4y2BaC = 0GydF4y2Ba。GydF4y2Ba

为了标记方便,设置变量GydF4y2BaY1 = SelfAdjustmentWeightGydF4y2Ba和GydF4y2BaY2 = SocialAdjustmentWeightGydF4y2Ba,其中GydF4y2BaSelfAdjustmentWeightGydF4y2Ba和GydF4y2BaSocialAdjustmentWeightGydF4y2Ba是选项。GydF4y2Ba

迭代步骤GydF4y2Ba

该算法更新群如下。对于粒子GydF4y2Ba一世GydF4y2Ba,这是在位置GydF4y2BaX(ⅰ)GydF4y2Ba:GydF4y2Ba

  1. 选择一个随机子集GydF4y2Ba小号GydF4y2Ba的GydF4y2BañGydF4y2Ba颗粒比其他GydF4y2Ba一世GydF4y2Ba。GydF4y2Ba

  2. 找GydF4y2Bafbest(S)GydF4y2Ba,邻居之间的最佳目标函数,GydF4y2Ba克(S)GydF4y2Ba,邻居的最好的目标函数的位置。GydF4y2Ba

  3. 对于GydF4y2BaU1GydF4y2Ba和GydF4y2BaU2GydF4y2Ba长度的均匀(0,1)分布的随机矢量GydF4y2BanvarsGydF4y2Ba,更新速度GydF4y2Ba

    V = W * V + Y1 * U1。*(P-X)+ Y 2 * U2。*(G-X)GydF4y2Ba。GydF4y2Ba

    此更新采用的加权和:GydF4y2Ba

    • 以前的速度GydF4y2BavGydF4y2Ba

    • 的当前位置和最佳的位置上的粒子之间的差已经看到GydF4y2BaP-XGydF4y2Ba

    • 当前位置和当前附近最好的位置之间的差异GydF4y2BaG-XGydF4y2Ba

  4. 更新位置GydF4y2BaX = X + VGydF4y2Ba。GydF4y2Ba

  5. 强制执行的范围。如果任何组件GydF4y2BaXGydF4y2Ba是外部的结合,将其设置等于约束。对于刚刚设置为绑定,如果速度这些组件GydF4y2BavGydF4y2Ba的结合,组速度分量零之外的分量的点。GydF4y2Ba

  6. 评估目标函数GydF4y2BaF =乐趣(x)的GydF4y2Ba。GydF4y2Ba

  7. 如果GydF4y2Ba˚F<乐趣(p)的GydF4y2Ba,然后设置GydF4y2BaP = XGydF4y2Ba。此步骤可确保GydF4y2BapGydF4y2Ba具有颗粒已经看到了最佳位置。GydF4y2Ba

  8. 该算法的下一个步骤适用于整个群的参数,而不是个别的颗粒。考虑最小GydF4y2BaF =分钟(F(j)的)GydF4y2Ba颗粒间GydF4y2BaĴGydF4y2Ba在群。GydF4y2Ba

    如果GydF4y2Ba˚F,然后设置GydF4y2BaB =˚FGydF4y2Ba和GydF4y2Bad = XGydF4y2Ba。此步骤可确保GydF4y2BabGydF4y2Ba已在群最好的目标函数,GydF4y2BadGydF4y2Ba拥有最好的位置。GydF4y2Ba

  9. 如果在前面的步骤中,最好函数值降低,然后组GydF4y2Ba标志=真GydF4y2Ba。除此以外,GydF4y2Ba标志=假GydF4y2Ba。的价值GydF4y2Ba旗GydF4y2Ba在下一步骤中被使用。GydF4y2Ba

  10. 更新附近。如果GydF4y2Ba标志=真GydF4y2Ba:GydF4y2Ba

    1. 组GydF4y2BaC = MAX(0,C-1)GydF4y2Ba。GydF4y2Ba

    2. 组GydF4y2BañGydF4y2Ba至GydF4y2BaminNeighborhoodSizeGydF4y2Ba。GydF4y2Ba

    3. 如果GydF4y2Baç<2GydF4y2Ba,然后设置GydF4y2BaW = 2 *宽GydF4y2Ba。GydF4y2Ba

    4. 如果GydF4y2BaC> 5GydF4y2Ba,然后设置GydF4y2BaW = W / 2GydF4y2Ba。GydF4y2Ba

    5. 确保这件事GydF4y2Baw ^GydF4y2Ba是的边界GydF4y2BaInertiaRangeGydF4y2Ba选项。GydF4y2Ba

    如果GydF4y2Ba标志=假GydF4y2Ba:GydF4y2Ba

    1. 组GydF4y2BaC = C + 1GydF4y2Ba。GydF4y2Ba

    2. 组GydF4y2BaN =分钟(N + minNeighborhoodSize,SwarmSize)GydF4y2Ba。GydF4y2Ba

停止标准GydF4y2Ba

particleswarmGydF4y2Ba重复,直到达到停止标准。GydF4y2Ba

停止选项GydF4y2Ba 停止测试GydF4y2Ba 出口标志GydF4y2Ba
MaxStallIterationsGydF4y2Ba和GydF4y2BaFunctionToleranceGydF4y2Ba 在当前的最优目标函数值的相对变化GydF4y2BaGGydF4y2Ba在过去GydF4y2BaMaxStallIterationsGydF4y2Ba迭代次数小于GydF4y2BaFunctionToleranceGydF4y2Ba。GydF4y2Ba 1GydF4y2Ba
MaxIterationsGydF4y2Ba 迭代达到数GydF4y2BaMaxIterationsGydF4y2Ba。GydF4y2Ba 0GydF4y2Ba
OutputFcnGydF4y2Ba要么GydF4y2BaPlotFcnGydF4y2Ba OutputFcnGydF4y2Ba要么GydF4y2BaPlotFcnGydF4y2Ba可以停止迭代。GydF4y2Ba -1GydF4y2Ba
ObjectiveLimitGydF4y2Ba 最佳目标函数值GydF4y2BaGGydF4y2Ba小于GydF4y2BaObjectiveLimitGydF4y2Ba。GydF4y2Ba -3GydF4y2Ba
MaxStallTimeGydF4y2Ba 最佳目标函数值GydF4y2BaGGydF4y2Ba在过去并没有改变GydF4y2BaMaxStallTimeGydF4y2Ba秒。GydF4y2Ba -4GydF4y2Ba
MAXTIMEGydF4y2Ba 功能运行时间超过GydF4y2BaMAXTIMEGydF4y2Ba秒。GydF4y2Ba -5GydF4y2Ba

如果GydF4y2BaparticleswarmGydF4y2Ba与出口标志停止GydF4y2Ba1GydF4y2Ba它退出后,它任选调用的混合功能。GydF4y2Ba

参考GydF4y2Ba

[1]肯尼迪,J.,和R.埃伯哈特。“粒子群算法”。GydF4y2Ba神经网络的IEEE国际会议论文集。GydF4y2Ba澳大利亚珀斯,1995年,第1942-1945。GydF4y2Ba

[2] Mezura蒙达斯,E.,和C. A.科埃略科埃略。“约束处理的灵感来自大自然的数值优化:过去,现在和未来。”GydF4y2Ba群和进化计算。GydF4y2Ba2011年,第173-194。GydF4y2Ba

[3] Pedersen的,M. E. “好参数粒子群优化”。卢森堡:Hvass实验室,2010。GydF4y2Ba

相关话题GydF4y2Ba