主要内容GydF4y2Ba

粒子群期权GydF4y2Ba

指定particleswarm的选项GydF4y2Ba

创造GydF4y2Ba选择权GydF4y2Ba使用GydF4y2Ba最佳选择GydF4y2Ba函数如下。GydF4y2Ba

选择= optimoptions (GydF4y2Ba“particleswarm”GydF4y2Ba,GydF4y2Ba...GydF4y2Ba“Param1”GydF4y2Ba,值1,GydF4y2Ba“Param2”GydF4y2Ba,价值2,GydF4y2Ba...GydF4y2Ba);GydF4y2Ba

有关示例,请参见GydF4y2Ba粒子群优化GydF4y2Ba.GydF4y2Ba

本节中的每个选项都按其字段名在中列出GydF4y2Ba选择权GydF4y2Ba. 例如GydF4y2Ba陈列GydF4y2Ba表示对应的字段GydF4y2Ba选择权GydF4y2Ba.GydF4y2Ba

群体创造GydF4y2Ba

默认情况下,GydF4y2Ba粒子热GydF4y2Ba呼叫GydF4y2Ba“pswcreationuniform”GydF4y2Ba群集创建函数。此函数的工作原理如下。GydF4y2Ba

  1. 如果GydF4y2Ba初始SwarmMatrixGydF4y2Ba选项存在,GydF4y2Ba“pswcreationuniform”GydF4y2Ba第一个GydF4y2Ba群集GydF4y2Ba一排GydF4y2Ba初始SwarmMatrixGydF4y2Ba矩阵作为群。如果GydF4y2Ba初始SwarmMatrixGydF4y2Ba矩阵小于GydF4y2Ba群集GydF4y2Ba然后GydF4y2Ba“pswcreationuniform”GydF4y2Ba继续执行下一步。GydF4y2Ba

  2. “pswcreationuniform”GydF4y2Ba创建足够的粒子,以便GydF4y2Ba群集GydF4y2Ba总计GydF4y2Ba“pswcreationuniform”GydF4y2Ba创建随机、均匀分布的粒子。任何群组件的范围为GydF4y2Ba-初始化Swarmspan/2,初始化Swarmspan/2GydF4y2Ba,如有必要,移动和缩放以匹配任何边界。GydF4y2Ba

创造之后,,GydF4y2Ba粒子热GydF4y2Ba检查所有粒子是否满足任何边界,并在必要时截断组件。如果GydF4y2Ba陈列GydF4y2Ba选择是GydF4y2Ba“国际热核实验堆”GydF4y2Ba然后一个粒子需要截断GydF4y2Ba粒子热GydF4y2Ba通知你。GydF4y2Ba

自定义创建函数GydF4y2Ba

使用设置自定义创建函数GydF4y2Ba最佳选择GydF4y2Ba设定GydF4y2Ba创作GydF4y2Ba选项GydF4y2Ba@GydF4y2Ba定制GydF4y2Ba哪里GydF4y2Ba定制GydF4y2Ba是创建函数文件的名称。自定义创建函数具有此语法。GydF4y2Ba

swarm=客户创建(问题)GydF4y2Ba

创建函数应返回大小为的矩阵GydF4y2Ba群集GydF4y2Ba——- - - - - -GydF4y2BanvarsGydF4y2Ba,其中每行表示一个粒子的位置。看见GydF4y2Ba问题GydF4y2Ba有关问题结构的详细资料。特别是,你可以得到GydF4y2Ba群集GydF4y2Ba从GydF4y2Baproblem.options.swarmizeGydF4y2Ba和GydF4y2BanvarsGydF4y2Ba从GydF4y2Ba问题.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

这个GydF4y2Ba显示间隔GydF4y2Ba选项设置迭代显示更新之前执行的迭代次数。给出一个正整数。GydF4y2Ba

算法设置GydF4y2Ba

详情GydF4y2Ba粒子热GydF4y2Ba算法出现在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,GydF4y2Bay1=自调整重量GydF4y2Ba和GydF4y2Bay2=社会调整权重GydF4y2Ba.GydF4y2Ba

此更新使用的加权和为:GydF4y2Ba

  • 前面的速度GydF4y2BavGydF4y2Ba

  • x-pGydF4y2Ba,当前位置之间的差异GydF4y2BaxGydF4y2Ba最好的位置是什么GydF4y2BaPGydF4y2Ba粒子已经看到了GydF4y2Ba

  • x-gGydF4y2Ba,当前位置之间的差异GydF4y2BaxGydF4y2Ba最好的位置是什么GydF4y2BaGGydF4y2Ba在目前的社区GydF4y2Ba

基于此公式,选项具有以下效果:GydF4y2Ba

  • 较大的惯性绝对值GydF4y2BaWGydF4y2Ba导致新速度与旧速度更为一致,且具有更大的绝对量值GydF4y2BaWGydF4y2Ba可以破坏蜂群的稳定。的价值GydF4y2BaWGydF4y2Ba保持在两个元素向量的范围内GydF4y2Ba惰性范围GydF4y2Ba.GydF4y2Ba

  • 较大值的GydF4y2Bay1=自调整重量GydF4y2Ba使粒子头更靠近它访问过的最佳位置。GydF4y2Ba

  • 较大值的GydF4y2Bay2=社会调整权重GydF4y2Ba使粒子头更靠近当前邻居中的最佳位置。GydF4y2Ba

惯性值大,GydF4y2BaSelfAdjustmentWeightGydF4y2Ba或GydF4y2BaSocialAdjustmentWeightGydF4y2Ba会破坏蜂群的稳定。GydF4y2Ba

这个GydF4y2Ba明尼堡分离GydF4y2Ba选项设置每个粒子的初始邻域大小和最小邻域大小;看见GydF4y2Ba粒子群优化算法GydF4y2Ba背景GydF4y2Ba明尼堡分离GydF4y2Ba到GydF4y2Ba1.GydF4y2Ba使群体中的所有成员都使用全局最小值点作为他们的社会调整目标。GydF4y2Ba

看见GydF4y2Ba粒子群优化GydF4y2Ba例如,设置了一些调整选项。GydF4y2Ba

混合函数GydF4y2Ba

混合函数是粒子群算法终止后运行的另一个最小化函数GydF4y2Ba杂交GydF4y2Ba选项选择是GydF4y2Ba

  • []GydF4y2Ba-没有混合功能。GydF4y2Ba

  • “fminsearch”GydF4y2Ba-使用MATLABGydF4y2Ba®GydF4y2Ba作用GydF4y2BafminsearchGydF4y2Ba执行无约束最小化。GydF4y2Ba

  • “模式搜索”GydF4y2Ba-使用模式搜索来执行有约束或无约束的最小化。GydF4y2Ba

  • “fminunc”GydF4y2Ba-使用优化工具箱™功能GydF4y2BafminuncGydF4y2Ba执行无约束最小化。GydF4y2Ba

  • “fmincon”GydF4y2Ba-使用优化工具箱函数GydF4y2Ba铁铬镍铁合金GydF4y2Ba执行约束最小化。GydF4y2Ba

笔记GydF4y2Ba

确保混合函数接受问题约束。否则,GydF4y2Ba粒子热GydF4y2Ba抛出一个错误。GydF4y2Ba

您可以为混合功能设置单独的选项。使用GydF4y2Ba优化集GydF4y2Ba对于GydF4y2BafminsearchGydF4y2Ba或GydF4y2Ba最佳选择GydF4y2Ba对于GydF4y2Ba铁铬镍铁合金GydF4y2Ba,GydF4y2BapatternsearchGydF4y2Ba或GydF4y2BafminuncGydF4y2Ba. 例如:GydF4y2Ba

hybridopts=options(GydF4y2Ba“fminunc”GydF4y2Ba,GydF4y2Ba...GydF4y2Ba“显示”GydF4y2Ba,GydF4y2Ba“国际热核实验堆”GydF4y2Ba,GydF4y2Ba“算法”GydF4y2Ba,GydF4y2Ba“拟牛顿”GydF4y2Ba);GydF4y2Ba
的混合选项GydF4y2Ba粒子热GydF4y2Ba 选择权GydF4y2Ba如下:GydF4y2Ba
选项=最佳选项(选项,GydF4y2Ba“HybridFcn”GydF4y2Ba,{@fminunc,hybridopts});GydF4y2Ba
杂交种GydF4y2Ba在设置之前必须存在GydF4y2Ba选择权GydF4y2Ba.GydF4y2Ba

有关使用混合函数的示例,请参见GydF4y2Ba粒子群优化GydF4y2Ba.看见GydF4y2Ba何时使用混合功能GydF4y2Ba.GydF4y2Ba

输出函数和绘图函数GydF4y2Ba

输出函数是GydF4y2Ba粒子热GydF4y2Ba每次迭代时调用。输出函数可以停止GydF4y2Ba粒子热GydF4y2Ba,或可以执行其他任务。若要指定输出函数,GydF4y2Ba

options=options(@particleswarm,GydF4y2Ba“OutputFcn”GydF4y2Ba,@outfun)GydF4y2Ba

哪里GydF4y2BaoutfunGydF4y2Ba是具有中指定语法的函数GydF4y2Ba输出函数或绘图函数的结构GydF4y2Ba.如果你有几个输出函数,将它们作为函数句柄的单元格数组传递:GydF4y2Ba

options=options(@particleswarm,GydF4y2Ba...GydF4y2Ba“OutputFcn”GydF4y2Ba,{@outpun1,@outpun2,@outpun3})GydF4y2Ba

类似地,绘图函数也是GydF4y2Ba粒子热GydF4y2Ba在每次迭代中调用。输出函数和打印函数之间的区别在于打印函数具有内置打印增强功能,例如打印窗口上显示的暂停或停止按钮GydF4y2Ba粒子热GydF4y2Ba. 内置的绘图函数GydF4y2Ba“pswplotbestf”GydF4y2Ba根据迭代绘制最佳目标函数值。具体来说,,GydF4y2Ba

options=options(@particleswarm,GydF4y2Ba“PlotFcn”GydF4y2Ba,GydF4y2Ba“pswplotbestf”GydF4y2Ba)GydF4y2Ba

要创建自定义绘图函数,请使用中指定的语法编写函数GydF4y2Ba输出函数或绘图函数的结构GydF4y2Ba. 要指定自定义打印函数,请使用函数句柄。如果有多个打印函数,请将它们作为函数句柄的单元格数组传递:GydF4y2Ba

options=options(@particleswarm,GydF4y2Ba...GydF4y2Ba“PlotFcn”GydF4y2Ba, {@plotfun1、@plotfun2 @plotfun3})GydF4y2Ba

有关自定义输出函数的示例,请参见GydF4y2Ba粒子群输出函数GydF4y2Ba.GydF4y2Ba

输出函数或绘图函数的结构GydF4y2Ba

输出函数具有以下调用语法:GydF4y2Ba

stop=myfun(优化值、状态)GydF4y2Ba

如果函数设置为GydF4y2Ba停止GydF4y2Ba到GydF4y2Ba符合事实的GydF4y2Ba,迭代结束。设置GydF4y2Ba停止GydF4y2Ba到GydF4y2Ba错误的GydF4y2Ba拥有GydF4y2Ba粒子热GydF4y2Ba继续计算。GydF4y2Ba

该函数具有以下输入参数:GydF4y2Ba

  • 最优值GydF4y2Ba-包含当前迭代中群信息的结构。细节是在GydF4y2BaoptimValues结构GydF4y2Ba.GydF4y2Ba

  • 状态GydF4y2Ba-给出当前迭代状态的字符串。GydF4y2Ba

    • “初始化”GydF4y2Ba-解算器尚未开始迭代。输出函数或绘图函数可以使用此状态打开文件,或为后续迭代设置数据结构或绘图。GydF4y2Ba

    • “国际热核实验堆”GydF4y2Ba-解算器正在进行迭代。通常,这是输出函数或绘图函数执行其工作的地方。GydF4y2Ba

    • “完成”GydF4y2Ba-解算器达到停止条件。输出函数或绘图函数可以使用此状态进行清理,例如关闭它打开的任何文件。GydF4y2Ba

传递额外参数GydF4y2Ba说明如何为输出函数或绘图函数提供附加参数。GydF4y2Ba

optimValues结构GydF4y2Ba

粒子热GydF4y2Ba通过了GydF4y2Ba最优值GydF4y2Ba结构到输出函数或绘图函数。这个GydF4y2Ba最优值GydF4y2Ba结构具有以下字段。GydF4y2Ba

领域GydF4y2Ba 目录GydF4y2Ba
功能计数GydF4y2Ba 目标函数评估的总数。GydF4y2Ba
最佳GydF4y2Ba 找到最佳解点,对应于最佳目标函数值GydF4y2Ba兽性GydF4y2Ba.GydF4y2Ba
兽性GydF4y2Ba 找到最佳(最低)目标函数值。GydF4y2Ba
迭代GydF4y2Ba 迭代次数。GydF4y2Ba
meanfvalGydF4y2Ba 当前迭代中所有粒子的平均目标函数。GydF4y2Ba
失速迭代GydF4y2Ba 自上次更改以来的迭代次数GydF4y2Ba兽性GydF4y2Ba.GydF4y2Ba
群GydF4y2Ba 包含粒子位置的矩阵。每行包含一个粒子的位置,行数等于粒子群的大小。GydF4y2Ba
草丛GydF4y2Ba 向量包含群中粒子的目标函数值。为粒子GydF4y2Ba我GydF4y2Ba,GydF4y2Ba蜂群(i)=乐趣(蜂群(i,:)GydF4y2Ba哪里GydF4y2Ba享乐GydF4y2Ba是目标函数。GydF4y2Ba

并行或矢量化函数求值GydF4y2Ba

为了提高速度,您可以设置选项,以便GydF4y2Ba粒子热GydF4y2Ba评估中swarm的目标函数GydF4y2Ba平行GydF4y2Ba或者在一个GydF4y2Ba矢量化GydF4y2Ba时尚。您只能使用这些选项中的一个。如果你设置GydF4y2Ba使用并行GydF4y2Ba到GydF4y2Ba符合事实的GydF4y2Ba和GydF4y2Ba使用矢量化GydF4y2Ba到GydF4y2Ba符合事实的GydF4y2Ba,则计算以矢量化方式进行,而不是并行进行。GydF4y2Ba

平行粒子GydF4y2Ba

如果你有一个并行计算工具箱™ 许可证,您可以将目标函数的评估分发给处理器或内核中的swarm。设定GydF4y2Ba使用并行GydF4y2Ba选项GydF4y2Ba符合事实的GydF4y2Ba.GydF4y2Ba

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

有关详细信息,请参阅GydF4y2Ba并行计算GydF4y2Ba.GydF4y2Ba

矢量化粒子GydF4y2Ba

如果目标函数可以一次计算所有粒子,通常可以通过设置GydF4y2Ba使用矢量化GydF4y2Ba选项GydF4y2Ba符合事实的GydF4y2Ba.您的目标函数应接受GydF4y2BaMGydF4y2Ba——- - - - - -GydF4y2BaNGydF4y2Ba矩阵,其中每行代表一个粒子,并返回一个GydF4y2BaMGydF4y2Ba——- - - - - -GydF4y2Ba1.GydF4y2Ba目标函数值的向量。此选项的工作方式与GydF4y2BapatternsearchGydF4y2Ba和GydF4y2BagaGydF4y2Ba使用矢量化GydF4y2Ba选项。用于GydF4y2BapatternsearchGydF4y2Ba详细信息,请参阅GydF4y2Ba将目标函数和约束函数矢量化GydF4y2Ba.GydF4y2Ba

停止条件GydF4y2Ba

粒子热GydF4y2Ba当发生以下任一情况时,停止迭代。GydF4y2Ba

停止选项GydF4y2Ba 停车试验GydF4y2Ba 出口标志GydF4y2Ba
MaxStallIterationsGydF4y2Ba和GydF4y2Ba功能公差GydF4y2Ba 最佳目标函数值的相对变化GydF4y2BaGGydF4y2Ba过去GydF4y2BaMaxStallIterationsGydF4y2Ba迭代次数小于GydF4y2Ba功能公差GydF4y2Ba.GydF4y2Ba 1.GydF4y2Ba
最大迭代次数GydF4y2Ba 迭代次数达到GydF4y2Ba最大迭代次数GydF4y2Ba.GydF4y2Ba 0GydF4y2Ba
OutputFcnGydF4y2Ba或GydF4y2Ba绘图仪GydF4y2Ba OutputFcnGydF4y2Ba或GydF4y2Ba绘图仪GydF4y2Ba可以停止迭代。GydF4y2Ba -1GydF4y2Ba
ObjectiveLimitGydF4y2Ba 最佳目标函数值GydF4y2BaGGydF4y2Ba一个可行点的值小于GydF4y2BaObjectiveLimitGydF4y2Ba.GydF4y2Ba -3GydF4y2Ba
最大失速时间GydF4y2Ba 最佳目标函数值GydF4y2BaGGydF4y2Ba在过去没有改变吗GydF4y2Ba最大失速时间GydF4y2Ba秒。GydF4y2Ba -4GydF4y2Ba
MaxTimeGydF4y2Ba 函数运行时间超过GydF4y2BaMaxTimeGydF4y2Ba秒。GydF4y2Ba -5GydF4y2Ba

另外,如果设置GydF4y2Ba欢乐支票GydF4y2Ba选项GydF4y2Ba“开”GydF4y2Ba,而蜂群中的粒子GydF4y2Ba楠GydF4y2Ba,GydF4y2Ba正GydF4y2Ba,或复目标函数值,GydF4y2Ba粒子热GydF4y2Ba停止并发出错误。GydF4y2Ba