粒子群的选项gydF4y2Ba

指定particleswarm选项gydF4y2Ba

创建gydF4y2Ba选项gydF4y2Ba使用gydF4y2BaoptimoptionsgydF4y2Ba功能如下。gydF4y2Ba

选项= optimoptions(gydF4y2Ba“particleswarm”gydF4y2Ba,gydF4y2Ba“参数1”gydF4y2Bavalue1,gydF4y2Ba“参数2”gydF4y2Bavalue2,gydF4y2Ba...gydF4y2Ba);gydF4y2Ba

对于一个示例,请参见gydF4y2Ba优化利用粒子群gydF4y2Ba。gydF4y2Ba

在本节中每个选项是由它的字段名称中列出gydF4y2Ba选项gydF4y2Ba。例如,gydF4y2Ba显示gydF4y2Ba指的是对应的场gydF4y2Ba选项gydF4y2Ba。gydF4y2Ba

群创gydF4y2Ba

默认,gydF4y2BaparticleswarmgydF4y2Ba调用gydF4y2Ba“pswcreationuniform”gydF4y2Ba群创建功能。该功能的工作原理如下。gydF4y2Ba

  1. 如果gydF4y2BaInitialSwarmMatrixgydF4y2Ba选项存在,gydF4y2Ba“pswcreationuniform”gydF4y2Ba需要第一gydF4y2BaSwarmSizegydF4y2Ba的行gydF4y2BaInitialSwarmMatrixgydF4y2Ba矩阵作为群。如果的行数gydF4y2BaInitialSwarmMatrixgydF4y2Ba矩阵是小于gydF4y2BaSwarmSizegydF4y2Ba,然后gydF4y2Ba“pswcreationuniform”gydF4y2Ba继续下一步。gydF4y2Ba

  2. “pswcreationuniform”gydF4y2Ba产生足够的粒子,以便有gydF4y2BaSwarmSizegydF4y2Ba总共。gydF4y2Ba“pswcreationuniform”gydF4y2Ba创建随机,均匀分布的颗粒。的范围内对于任何群组成部分是gydF4y2Ba-InitialSwarmSpan / 2,InitialSwarmSpan / 2gydF4y2Ba如果需要匹配任何边界,则进行移位和缩放。gydF4y2Ba

创建完成后,gydF4y2BaparticleswarmgydF4y2Ba检查所有粒子是否满足任何边界,并在必要时截断分量。如果gydF4y2Ba显示gydF4y2Ba选择是gydF4y2Ba“通路”gydF4y2Ba和粒子需要截断,然后gydF4y2BaparticleswarmgydF4y2Ba通知你。gydF4y2Ba

创建自定义函数gydF4y2Ba

使用以下命令设置自定义创建函数gydF4y2BaoptimoptionsgydF4y2Ba设置gydF4y2BaCreationFcngydF4y2Ba选项gydF4y2Ba@gydF4y2BacustomcreationgydF4y2Ba,其中gydF4y2BacustomcreationgydF4y2Ba是您创建功能文件的名称。自定义创建函数的语法如下。gydF4y2Ba

群= customcreation(问题)gydF4y2Ba

创建函数将返回大小的矩阵gydF4y2BaSwarmSizegydF4y2Ba-通过-gydF4y2BanvarsgydF4y2Ba,其中每一行表示一个粒子的位置。看到gydF4y2Ba问题gydF4y2Ba对这个问题的结构细节。特别是,你可以得到gydF4y2BaSwarmSizegydF4y2Ba从gydF4y2Baproblem.options.SwarmSizegydF4y2Ba和gydF4y2BanvarsgydF4y2Ba从gydF4y2Baproblem.nvarsgydF4y2Ba。gydF4y2Ba

用于创建功能的一个例子,请参见代码gydF4y2BapswcreationuniformgydF4y2Ba。gydF4y2Ba

编辑gydF4y2BapswcreationuniformgydF4y2Ba

显示设置gydF4y2Ba

的gydF4y2Ba显示gydF4y2Ba选项指定在算法运行时在命令行显示多少信息。gydF4y2Ba

  • “关”gydF4y2Ba要么gydF4y2Ba“没有”gydF4y2Ba- 不显示输出。gydF4y2Ba

  • “通路”gydF4y2Ba- 信息在每次迭代显示。gydF4y2Ba

  • '最后'gydF4y2Ba(默认) - 显示原因停止。gydF4y2Ba

ITERgydF4y2Ba显示:gydF4y2Ba

  • 迭代gydF4y2Ba- 迭代次数gydF4y2Ba

  • F-数gydF4y2Ba-目标函数评价的累积次数gydF4y2Ba

  • 最好F(X)gydF4y2Ba- 最佳目标函数值gydF4y2Ba

  • 平均数F(X)gydF4y2Ba-所有粒子的平均目标函数值gydF4y2Ba

  • 失速迭代gydF4y2Ba- 因为在过去的变化迭代次数gydF4y2Ba最好F(X)gydF4y2Ba

的gydF4y2BaDisplayIntervalgydF4y2Ba选项设置的反复显示更新之前执行的迭代次数。举一个正整数。gydF4y2Ba

算法设置gydF4y2Ba

的细节gydF4y2BaparticleswarmgydF4y2Ba算法出现在gydF4y2Ba粒子群优化算法gydF4y2Ba。本节描述调优参数。gydF4y2Ba

粒子群算法的主要步骤是生成新的粒子群速度:gydF4y2Ba

为gydF4y2BaU1gydF4y2Ba和gydF4y2BaU2gydF4y2Ba长度的均匀(0,1)分布的随机矢量gydF4y2BanvarsgydF4y2Ba,更新速度gydF4y2Ba

v = W*v + y1*u1.*(p-x) + y2*u2.*(g-x)gydF4y2Ba。gydF4y2Ba

变量gydF4y2BaW =惯性gydF4y2Ba,gydF4y2Ba日元= SelfAdjustmentWeightgydF4y2Ba和gydF4y2BaY2 = SocialAdjustmentWeightgydF4y2Ba。gydF4y2Ba

此更新使用加权和:gydF4y2Ba

  • 以前的速度gydF4y2BavgydF4y2Ba

  • xpgydF4y2Ba,当前位置的差值gydF4y2BaxgydF4y2Ba和最好的位置gydF4y2BapgydF4y2Ba颗粒已经看到gydF4y2Ba

  • x-ggydF4y2Ba,当前位置的差值gydF4y2BaxgydF4y2Ba和最好的位置gydF4y2BaggydF4y2Ba在目前附近gydF4y2Ba

根据这个公式,期权具有以下效果:gydF4y2Ba

  • 更大的惯量绝对值gydF4y2BaWgydF4y2Ba导致新的速度更是在同一行如旧,并具有较大的绝对幅度。的绝对值大gydF4y2BaWgydF4y2Ba可以动摇群。的价值gydF4y2BaWgydF4y2Ba两个元素向量的范围内停留gydF4y2BaInertiaRangegydF4y2Ba。gydF4y2Ba

  • 更大的值gydF4y2Ba日元= SelfAdjustmentWeightgydF4y2Ba让粒子朝着它曾经到达的最佳位置移动。gydF4y2Ba

  • 更大的值gydF4y2BaY2 = SocialAdjustmentWeightgydF4y2Ba使颗粒头更朝向最好的地方在目前附近。gydF4y2Ba

惯性大的值,gydF4y2BaSelfAdjustmentWeightgydF4y2Ba, 要么gydF4y2BaSocialAdjustmentWeightgydF4y2Ba可以动摇群。gydF4y2Ba

的gydF4y2BaMinNeighborsFractiongydF4y2Ba选项设置每个粒子的初始邻域大小和最小邻域大小;看到gydF4y2Ba粒子群优化算法gydF4y2Ba。设置gydF4y2BaMinNeighborsFractiongydF4y2Ba至gydF4y2Ba1gydF4y2Ba有群中的所有成员使用全球最小的点作为自己的社会调整目标。gydF4y2Ba

看到gydF4y2Ba优化利用粒子群gydF4y2Ba作为设置这些调优选项中的一些选项的示例。gydF4y2Ba

混合函数gydF4y2Ba

一种混合功能是另一种最小化函数,该粒子群算法终止后运行。你可以指定一个混合功能gydF4y2BaHybridFcngydF4y2Ba选择。的选择是gydF4y2Ba

  • []gydF4y2Ba-无混合函数。gydF4y2Ba

  • 'fminsearch'gydF4y2Ba-使用MATLABgydF4y2Ba®gydF4y2Ba功能gydF4y2BafminsearchgydF4y2Ba执行无约束极小化。gydF4y2Ba

  • “patternsearch”gydF4y2Ba- 使用模式搜索来进行约束或无约束最小化。gydF4y2Ba

  • 'fminunc'gydF4y2Ba- 使用优化工具箱™功能gydF4y2BafminuncgydF4y2Ba执行无约束极小化。gydF4y2Ba

  • 'fmincon'gydF4y2Ba- 使用优化工具箱功能gydF4y2BafmincongydF4y2Ba执行约束最小化。gydF4y2Ba

请注意gydF4y2Ba

确保您的混合功能接受你的问题的制约。除此以外,gydF4y2BaparticleswarmgydF4y2Ba抛出一个错误。gydF4y2Ba

您可以设置为混合功能不同的选项。采用gydF4y2BaoptimsetgydF4y2Ba为gydF4y2BafminsearchgydF4y2Ba, 要么gydF4y2BaoptimoptionsgydF4y2Ba为gydF4y2BafmincongydF4y2Ba,gydF4y2BapatternsearchgydF4y2Ba, 要么gydF4y2BafminuncgydF4y2Ba。例如:gydF4y2Ba

hybridopts = optimoptions( 'fminunc', '显示', 'ITER', '算法', '准牛顿');gydF4y2Ba
包括在混合选项gydF4y2BaparticleswarmgydF4y2Ba 选项gydF4y2Ba如下:gydF4y2Ba
选项= optimoptions(选项 'HybridFcn',{@ fminunc,hybridopts});gydF4y2Ba
hybridoptsgydF4y2Ba必须在设置之前存在gydF4y2Ba选项gydF4y2Ba。gydF4y2Ba

对于使用混合函数示例,请参见gydF4y2Ba优化利用粒子群gydF4y2Ba。看到gydF4y2Ba何时使用混合函数gydF4y2Ba。gydF4y2Ba

输出函数和绘图函数gydF4y2Ba

输出功能函数gydF4y2BaparticleswarmgydF4y2Ba在每次迭代中调用。输出功能可以阻止gydF4y2BaparticleswarmgydF4y2Ba或者可以执行其他任务。要指定输出功能,gydF4y2Ba

选择= optimoptions (@particleswarm,gydF4y2Ba'OutputFcn'gydF4y2Ba@outfun)gydF4y2Ba

哪里gydF4y2BaoutfungydF4y2Ba是否指定了具有语法的函数gydF4y2Ba输出函数或绘图功能的结构gydF4y2Ba。如果你有几个输出功能,将它们作为函数处理的单元阵列:gydF4y2Ba

选择= optimoptions (@particleswarm,gydF4y2Ba'OutputFcn'gydF4y2Ba{@ outfun1,@ outfun2,@ outfun3})gydF4y2Ba

同样,积函数是函数gydF4y2BaparticleswarmgydF4y2Ba在每次迭代中调用。输出函数和plot函数的区别在于,plot函数具有内置的绘图增强功能,例如出现在plot窗口上的暂停或停止按钮gydF4y2BaparticleswarmgydF4y2Ba。唯一的内置绘图功能gydF4y2Ba“pswplotbestf”gydF4y2Ba根据迭代绘制最佳目标函数值。指定,gydF4y2Ba

选择= optimoptions (@particleswarm,gydF4y2Ba“PlotFcn”gydF4y2Ba,gydF4y2Ba“pswplotbestf”gydF4y2Ba)gydF4y2Ba

要创建自定义绘图功能,具有语法中规定编写一个函数gydF4y2Ba输出函数或绘图功能的结构gydF4y2Ba。要指定自定义绘图函数,请使用函数句柄。如果你有几个plot函数,将它们作为函数句柄的单元格数组传递:gydF4y2Ba

选择= optimoptions (@particleswarm,gydF4y2Ba“PlotFcn”gydF4y2Ba{@ plotfun1,@ plotfun2,@ plotfun3})gydF4y2Ba

对于自定义输出功能的一个例子,请参见gydF4y2Ba粒子群输出功能gydF4y2Ba。gydF4y2Ba

输出函数或绘图功能的结构gydF4y2Ba

一个输出函数有以下调用语法:gydF4y2Ba

停止= myfun(optimValues,状态)gydF4y2Ba

如果你的函数集gydF4y2Ba停止gydF4y2Ba至gydF4y2Ba真正gydF4y2Ba,迭代结束。集gydF4y2Ba停止gydF4y2Ba至gydF4y2Ba假gydF4y2Ba有gydF4y2BaparticleswarmgydF4y2Ba继续计算。gydF4y2Ba

该功能具有以下输入参数:gydF4y2Ba

  • optimValuesgydF4y2Ba- 包含有关当前迭代的群的信息结构。详细信息可在gydF4y2BaoptimValues结构gydF4y2Ba。gydF4y2Ba

  • 州gydF4y2Ba- String,给出当前迭代的状态。gydF4y2Ba

    • '在里面'gydF4y2Ba- 求解器还没有开始进行迭代。你的输出功能和绘图功能可以使用此状态下打开文件,或者建立数据结构或地块后续的迭代。gydF4y2Ba

    • “通路”gydF4y2Ba- 求解器以其迭代进行。通常情况下,这是你的输出功能和绘图功能进行工作。gydF4y2Ba

    • “完成”gydF4y2Ba- 求解器达到停止准则。你的输出功能和绘图功能可以使用这种状态下进行清理,如关闭它打开的任何文件。gydF4y2Ba

传递额外的参数gydF4y2Ba(优化工具箱)解释了如何以输出功能或情节函数提供附加参数。gydF4y2Ba

optimValues结构gydF4y2Ba

particleswarmgydF4y2Ba通gydF4y2BaoptimValuesgydF4y2Ba结构的输出功能或情节功能。的gydF4y2BaoptimValuesgydF4y2Ba结构具有以下字段。gydF4y2Ba

场gydF4y2Ba 内容gydF4y2Ba
funccountgydF4y2Ba 总数目标函数评价。gydF4y2Ba
bestxgydF4y2Ba 找到最佳解点,对应最佳目标函数值gydF4y2BabestfvalgydF4y2Ba。gydF4y2Ba
bestfvalgydF4y2Ba 最佳(最低)的目标函数值找到。gydF4y2Ba
迭代gydF4y2Ba 迭代数。gydF4y2Ba
meanfvalgydF4y2Ba 当前迭代中所有粒子的平均目标函数。gydF4y2Ba
stalliterationsgydF4y2Ba 因为在过去的变化迭代次数gydF4y2BabestfvalgydF4y2Ba。gydF4y2Ba
一群gydF4y2Ba 包含粒子位置的矩阵。每行包含一个粒子的位置,行数等于粒子群的大小。gydF4y2Ba
swarmfvalsgydF4y2Ba 矢量包含在群颗粒的目标函数值。对于粒子gydF4y2Ba我gydF4y2Ba,gydF4y2Baswarmfvals (i) =乐趣(群(我:))gydF4y2Ba,其中gydF4y2Ba有趣的gydF4y2Ba是目标函数。gydF4y2Ba

平行或矢量化功能评价gydF4y2Ba

为了提高速度,你可以设置你的选项gydF4y2BaparticleswarmgydF4y2Ba评估群的目标函数gydF4y2Ba平行gydF4y2Ba或在一个gydF4y2Ba矢量化gydF4y2Ba时尚。您可以使用这些选项中只有一个。如果设置gydF4y2BaUseParallelgydF4y2Ba至gydF4y2Ba真正gydF4y2Ba和gydF4y2BaUseVectorizedgydF4y2Ba至gydF4y2Ba真正gydF4y2Ba,然后以向量化的方式进行计算,而不是并行计算。gydF4y2Ba

并行particleswarmgydF4y2Ba

如果您拥有并行计算工具箱许可证,则可以将目标函数的评估分发到处理器或内核之间的集群中。设置gydF4y2BaUseParallelgydF4y2Ba选项gydF4y2Ba真正gydF4y2Ba。gydF4y2Ba

当目标函数的计算开销很大,或者有很多粒子和处理器时,并行计算可能比串行计算快。否则,通信开销会导致并行计算比串行计算慢。gydF4y2Ba

有关详细信息,请参见gydF4y2Ba并行计算gydF4y2Ba。gydF4y2Ba

矢量particleswarmgydF4y2Ba

如果你的目标函数可以一次评估所有的粒子,你通常可以通过设置gydF4y2BaUseVectorizedgydF4y2Ba选项gydF4y2Ba真正gydF4y2Ba。你的目标函数应该接受的gydF4y2Ba米gydF4y2Ba-通过-gydF4y2BaNgydF4y2Ba矩阵,其中每一行代表一个颗粒,并返回一个gydF4y2Ba米gydF4y2Ba-通过-gydF4y2Ba1gydF4y2Ba目标函数值的向量。此选项的工作方式与gydF4y2BapatternsearchgydF4y2Ba和gydF4y2Ba遗传算法gydF4y2BaUseVectorizedgydF4y2Ba选项。为gydF4y2BapatternsearchgydF4y2Ba详细信息,请参阅gydF4y2Ba向量化目标和约束函数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

同样,如果你设置gydF4y2BaFunValCheckgydF4y2Ba选项gydF4y2Ba“上”gydF4y2Ba和群具有颗粒gydF4y2Ba南gydF4y2Ba,gydF4y2Ba天道酬勤gydF4y2Ba或复杂的目标函数值,gydF4y2BaparticleswarmgydF4y2Ba停止并发出错误。gydF4y2Ba