主要内容GydF4y2Ba

粒子群选项GydF4y2Ba

指定incollulswarm的选项GydF4y2Ba

创造GydF4y2Ba选择GydF4y2Ba使用GydF4y2Ba优化选择GydF4y2Ba函数如下。GydF4y2Ba

选项= Optimoptions(GydF4y2Ba'particleswarm'GydF4y2Ba那GydF4y2Ba'param1'GydF4y2Ba,value1,GydF4y2Ba'param2'GydF4y2Ba,value2,GydF4y2Ba......GydF4y2Ba);GydF4y2Ba

例如,看到GydF4y2Ba优化使用粒子群GydF4y2Ba。GydF4y2Ba

本节中的每个选项都由其字段名称列出GydF4y2Ba选择GydF4y2Ba。例如,GydF4y2Ba显示GydF4y2Ba指的是相应的领域GydF4y2Ba选择GydF4y2Ba。GydF4y2Ba

群体创作GydF4y2Ba

默认,GydF4y2Bapartminleswarm.GydF4y2Ba打电话给GydF4y2Ba'pswreationuniform'GydF4y2Ba群创建功能。此函数工作如下。GydF4y2Ba

  1. 如果GydF4y2Bainitialswarmmatrix.GydF4y2Ba选项存在,GydF4y2Ba'pswreationuniform'GydF4y2Ba拿一个GydF4y2Ba群体化GydF4y2Ba行的行GydF4y2Bainitialswarmmatrix.GydF4y2Ba矩阵作为群体。如果是行的行数GydF4y2Bainitialswarmmatrix.GydF4y2Ba矩阵小于GydF4y2Ba群体化GydF4y2Ba, 然后GydF4y2Ba'pswreationuniform'GydF4y2Ba继续到下一步。GydF4y2Ba

  2. 'pswreationuniform'GydF4y2Ba产生足够的粒子,以便有足够的颗粒GydF4y2Ba群体化GydF4y2Ba总共。GydF4y2Ba'pswreationuniform'GydF4y2Ba创建随机,均匀分布的粒子。任何群组件的范围是GydF4y2Ba-initialswarmspan / 2,initialswarmspan / 2GydF4y2Ba如有必要,如果需要匹配任何界限。GydF4y2Ba

创作后,GydF4y2Bapartminleswarm.GydF4y2Ba检查所有粒子是否满足任何界限,并在必要时截断组件。如果是GydF4y2Ba显示GydF4y2Ba选项是GydF4y2Ba'iter'GydF4y2Ba然后粒子需要截断,然后GydF4y2Bapartminleswarm.GydF4y2Ba通知你。GydF4y2Ba

自定义创建功能GydF4y2Ba

使用自定义创建功能使用GydF4y2Ba优化选择GydF4y2Ba设置GydF4y2BaCreationfcn.GydF4y2Ba选择GydF4y2Ba@GydF4y2Ba定制GydF4y2Ba,在哪里GydF4y2Ba定制GydF4y2Ba是您的创建功能文件的名称。自定义创建函数具有此语法。GydF4y2Ba

swarm = customcreation(问题)GydF4y2Ba

创建功能应返回大小的矩阵GydF4y2Ba群体化GydF4y2Ba-通过-GydF4y2BaNVARS.GydF4y2Ba,其中每行代表一个粒子的位置。看到GydF4y2Ba问题GydF4y2Ba有关问题结构的详细信息。特别是,你可以获得GydF4y2Ba群体化GydF4y2Ba从GydF4y2Ba问题.Options.swarmsize.GydF4y2Ba,和GydF4y2BaNVARS.GydF4y2Ba从GydF4y2Ba问题.Nvars.GydF4y2Ba。GydF4y2Ba

有关创建功能的示例,请参阅代码GydF4y2BapswreationuniformGydF4y2Ba。GydF4y2Ba

编辑GydF4y2BapswreationuniformGydF4y2Ba

显示设置GydF4y2Ba

该GydF4y2Ba显示GydF4y2Ba选项指定算法运行时在命令行中显示多少信息。GydF4y2Ba

  • 'off'GydF4y2Ba要么GydF4y2Ba'没有'GydF4y2Ba- 没有显示输出。GydF4y2Ba

  • 'iter'GydF4y2Ba- 每个迭代都会显示信息。GydF4y2Ba

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

itGydF4y2Ba显示:GydF4y2Ba

  • 迭代GydF4y2Ba- 迭代号码GydF4y2Ba

  • F计数GydF4y2Ba- 累计目标函数评估数GydF4y2Ba

  • 最好的f(x)GydF4y2Ba- 最佳客观函数值GydF4y2Ba

  • 意思是f(x)GydF4y2Ba- 所有粒子的平均目标函数值GydF4y2Ba

  • 摊位迭代GydF4y2Ba- 自上次变更以来的迭代次数GydF4y2Ba最好的f(x)GydF4y2Ba

该GydF4y2Badisplayinterval.GydF4y2Ba选项设置迭代显示更新之前执行的迭代次数。给一个积极的整数。GydF4y2Ba

算法设置GydF4y2Ba

细节GydF4y2Bapartminleswarm.GydF4y2Ba算法出现在GydF4y2Ba粒子群优化算法GydF4y2Ba。本节介绍调整参数。GydF4y2Ba

粒子群算法的主要步骤是Swarm的新速度的产生:GydF4y2Ba

对于GydF4y2BaU1.GydF4y2Ba和GydF4y2BaU2.GydF4y2Ba均匀(0,1)分布的随机载体长度GydF4y2BaNVARS.GydF4y2Ba,更新速度GydF4y2Ba

v = w * v + y1 * u1。*(p-x)+ y2 * u2。*(g-x)GydF4y2Ba。GydF4y2Ba

变量GydF4y2Baw =惯性GydF4y2Ba那GydF4y2Bay1 = selfadjustment重量GydF4y2Ba,和GydF4y2BaY2 = SocialAdjustment重量GydF4y2Ba。GydF4y2Ba

此更新使用加权总和:GydF4y2Ba

  • 以前的速度GydF4y2BaV.GydF4y2Ba

  • X-P.GydF4y2Ba,当前位置之间的差异GydF4y2BaXGydF4y2Ba和最好的位置GydF4y2BaP.GydF4y2Ba粒子已经看到了GydF4y2Ba

  • X-G.GydF4y2Ba,当前位置之间的差异GydF4y2BaXGydF4y2Ba和最好的位置GydF4y2BaGGydF4y2Ba在当前的邻居GydF4y2Ba

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

  • 惯性较大的绝对值GydF4y2BaW.GydF4y2Ba导致新的速度与旧的相同线,绝对幅度更大。绝对值的绝对值GydF4y2BaW.GydF4y2Ba可以稳定群体。的价值GydF4y2BaW.GydF4y2Ba保持在两个元素矢量的范围内GydF4y2Ba惯性GydF4y2Ba。GydF4y2Ba

  • 更大的值GydF4y2Bay1 = selfadjustment重量GydF4y2Ba使粒子头更加朝向它所访问的最佳地点。GydF4y2Ba

  • 更大的值GydF4y2BaY2 = SocialAdjustment重量GydF4y2Ba使粒子更朝着当前邻里的最佳位置。GydF4y2Ba

大量惯性值,GydF4y2Baselfadjustment重量GydF4y2Ba, 要么GydF4y2Ba社交调节重量GydF4y2Ba可以稳定群体。GydF4y2Ba

该GydF4y2Baminneighborsfraction.GydF4y2Ba选项设置每个粒子的初始邻域大小以及最小邻域大小;看到GydF4y2Ba粒子群优化算法GydF4y2Ba。设置GydF4y2Baminneighborsfraction.GydF4y2Ba至GydF4y2Ba1GydF4y2Ba拥有群体的所有成员都使用全球最低点作为社会调整目标。GydF4y2Ba

看到GydF4y2Ba优化使用粒子群GydF4y2Ba有关设置这些调整选项中的一些示例。GydF4y2Ba

混合函数GydF4y2Ba

混合函数是在粒子群算法终止之后运行的另一个最小化函数。您可以指定混合函数GydF4y2BaHybridfcn.GydF4y2Ba选项。选择是GydF4y2Ba

  • []GydF4y2Ba- 没有混合函数。GydF4y2Ba

  • 'fminsearch'GydF4y2Ba- 使用matlabGydF4y2Ba®GydF4y2Ba功能GydF4y2Bafminsearch.GydF4y2Ba执行无约束的最小化。GydF4y2Ba

  • 'patternsearch'GydF4y2Ba- 使用模式搜索来执行受约束或无约束最小化。GydF4y2Ba

  • 'fminunc'GydF4y2Ba- 使用优化工具箱™功能GydF4y2BaFminunc.GydF4y2Ba执行无约束的最小化。GydF4y2Ba

  • '粉丝'GydF4y2Ba- 使用优化工具箱功能GydF4y2Ba粉刺GydF4y2Ba执行约束最小化。GydF4y2Ba

注意GydF4y2Ba

确保您的混合函数接受您的问题约束。除此以外,GydF4y2Bapartminleswarm.GydF4y2Ba抛出错误。GydF4y2Ba

您可以为混合函数设置单独的选项。利用GydF4y2Ba优化集GydF4y2Ba对于GydF4y2Bafminsearch.GydF4y2Ba, 要么GydF4y2Ba优化选择GydF4y2Ba对于GydF4y2Ba粉刺GydF4y2Ba那GydF4y2BaPatternsearch.GydF4y2Ba, 要么GydF4y2BaFminunc.GydF4y2Ba。例如:GydF4y2Ba

Hybridopts = Optimoptions('fminunc','显示','iter','算法','quasi-newton');GydF4y2Ba
包括混合选项GydF4y2Bapartminleswarm.GydF4y2Ba 选择GydF4y2Ba如下:GydF4y2Ba
选项= Optimoptions(选项,'hybridfcn',{@ fminunc,hybridopts});GydF4y2Ba
杂交GydF4y2Ba必须在您设置之前存在GydF4y2Ba选择GydF4y2Ba。GydF4y2Ba

有关使用混合函数的示例,请参阅GydF4y2Ba优化使用粒子群GydF4y2Ba。看到GydF4y2Ba何时使用混合函数GydF4y2Ba。GydF4y2Ba

输出功能和绘图功能GydF4y2Ba

输出函数是函数GydF4y2Bapartminleswarm.GydF4y2Ba每次迭代都呼叫。输出功能可以停止GydF4y2Bapartminleswarm.GydF4y2Ba,或可以执行其他任务。指定输出函数,GydF4y2Ba

选项= Optimoptions(@ParticlyWarm,GydF4y2Ba'outputfcn'GydF4y2Ba,@ outfun)GydF4y2Ba

哪里GydF4y2Baoutfun.GydF4y2Ba是指定语法的函数GydF4y2Ba输出功能或绘图功能的结构GydF4y2Ba。如果您有多个输出函数,请将其传递为函数句柄阵列:GydF4y2Ba

选项= Optimoptions(@ParticlyWarm,GydF4y2Ba'outputfcn'GydF4y2Ba,{@ Outfun1,@ Outfun2,@ Outfun3})GydF4y2Ba

同样,绘图函数是函数GydF4y2Bapartminleswarm.GydF4y2Ba每次迭代都呼叫。输出函数和绘图函数之间的差异是绘图功能具有内置绘图增强功能,例如在绘图窗口上显示的按钮暂停或停止GydF4y2Bapartminleswarm.GydF4y2Ba。孤独的内置绘图功能GydF4y2Ba'pswplotbestf'GydF4y2Ba绘制迭代的最佳目标函数价值。指定它,GydF4y2Ba

选项= Optimoptions(@ParticlyWarm,GydF4y2Ba'plotfcn'GydF4y2Ba那GydF4y2Ba'pswplotbestf'GydF4y2Ba)GydF4y2Ba

要创建自定义绘图函数,请使用指定的语法写一个函数GydF4y2Ba输出功能或绘图功能的结构GydF4y2Ba。要指定自定义绘图功能,请使用函数句柄。如果您有几个绘图函数,请将其作为函数句柄的单元数组:GydF4y2Ba

选项= Optimoptions(@ParticlyWarm,GydF4y2Ba'plotfcn'GydF4y2Ba,{@ plotfun1,@ plotfun2,@ plotfun3})GydF4y2Ba

有关自定义输出功能的示例,请参阅GydF4y2Ba粒子群输出功能GydF4y2Ba。GydF4y2Ba

输出功能或绘图功能的结构GydF4y2Ba

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

停止= myfun(优化值,州)GydF4y2Ba

如果您的功能集GydF4y2Ba停GydF4y2Ba至GydF4y2Ba真正GydF4y2Ba,迭代结束。组GydF4y2Ba停GydF4y2Ba至GydF4y2Ba假GydF4y2Ba拥有GydF4y2Bapartminleswarm.GydF4y2Ba继续计算。GydF4y2Ba

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

  • 优化价值GydF4y2Ba- 包含有关当前迭代中群体的信息的结构。细节在GydF4y2Ba优化价值结构GydF4y2Ba。GydF4y2Ba

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

    • '在里面'GydF4y2Ba- 求助者没有开始迭代。您的输出函数或绘图函数可以使用此状态打开文件,或为后续迭代设置数据结构或图表。GydF4y2Ba

    • 'iter'GydF4y2Ba- 求解器正在进行它的迭代。通常,这是您的输出功能或绘图功能执行其工作的位置。GydF4y2Ba

    • '完成'GydF4y2Ba- 求解器达到了停止标准。您的输出函数或绘图功能可以使用此状态清理,例如关闭其打开的任何文件。GydF4y2Ba

通过额外的参数GydF4y2Ba解释如何为输出函数或绘图功能提供额外的参数。GydF4y2Ba

优化价值结构GydF4y2Ba

partminleswarm.GydF4y2Ba通过了GydF4y2Ba优化价值GydF4y2Ba结构到您的输出函数或绘图功能。该GydF4y2Ba优化价值GydF4y2Ba结构具有以下字段。GydF4y2Ba

领域GydF4y2Ba 内容GydF4y2Ba
Funccount.GydF4y2Ba 客观函数评估总数。GydF4y2Ba
贝斯克斯GydF4y2Ba 找到最佳解决方案点,对应于最佳目标函数值GydF4y2Ba最好的GydF4y2Ba。GydF4y2Ba
最好的GydF4y2Ba 找到最佳(最低)目标函数值。GydF4y2Ba
迭代GydF4y2Ba 迭代号码。GydF4y2Ba
意思GydF4y2Ba 在当前迭代的所有粒子中的平均目标函数。GydF4y2Ba
摊位GydF4y2Ba 自上次变更以来的迭代次数GydF4y2Ba最好的GydF4y2Ba。GydF4y2Ba
一群GydF4y2Ba 含有粒子位置的基质。每行包含一个粒子的位置,行数等于群尺寸。GydF4y2Ba
蜂群GydF4y2Ba 矢量包含群中粒子的目标函数值。对于粒子GydF4y2Ba一世GydF4y2Ba那GydF4y2Ba培养群(i)=有趣(群(我,:))GydF4y2Ba,在哪里GydF4y2Ba乐趣GydF4y2Ba是目标函数。GydF4y2Ba

并行或矢量化功能评估GydF4y2Ba

增加速度,您可以设置您的选项GydF4y2Bapartminleswarm.GydF4y2Ba评估群体的目标职能GydF4y2Ba平行GydF4y2Ba或者在A.GydF4y2Ba矢量化GydF4y2Ba时尚。您只能使用其中一个选项。如果你设置了GydF4y2Ba使用指α.GydF4y2Ba至GydF4y2Ba真正GydF4y2Ba和GydF4y2Ba使用vectorizedGydF4y2Ba至GydF4y2Ba真正GydF4y2Ba,然后以矢量化方式完成计算,而不是并行完成。GydF4y2Ba

并行粒子GydF4y2Ba

如果您有一个并行计算工具箱™许可证,可以将客观函数的评估分发到您的处理器或核心之间的群体。设定GydF4y2Ba使用指α.GydF4y2Ba选择GydF4y2Ba真正GydF4y2Ba。GydF4y2Ba

当您的客观函数是计算昂贵的,或者当您有许多粒子和处理器时,并行计算可能比串行更快。否则,通信开销可能导致平行计算比串行计算慢。GydF4y2Ba

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

矢量化的粒子GydF4y2Ba

如果您的客观函数可以一次性评估所有粒子,您通常可以通过设置来节省时间GydF4y2Ba使用vectorizedGydF4y2Ba选择GydF4y2Ba真正GydF4y2Ba。您的客观函数应该接受GydF4y2BamGydF4y2Ba-通过-GydF4y2BaNGydF4y2Ba矩阵,其中每行代表一个粒子,并返回一个粒子GydF4y2BamGydF4y2Ba-通过-GydF4y2Ba1GydF4y2Ba目标函数值矢量。此选项与此选项相同GydF4y2BaPatternsearch.GydF4y2Ba和GydF4y2BaGA.GydF4y2Ba使用vectorizedGydF4y2Ba选项。对于GydF4y2BaPatternsearch.GydF4y2Ba细节,参见GydF4y2Ba矢量化目标和约束函数GydF4y2Ba。GydF4y2Ba

停止标准GydF4y2Ba

partminleswarm.GydF4y2Ba在发生以下任何一种时停止迭代。GydF4y2Ba

停止选择GydF4y2Ba 停止测试GydF4y2Ba 退出旗帜GydF4y2Ba
最大值GydF4y2Ba和GydF4y2Bafunctiontolerance.GydF4y2Ba 最佳目标函数值的相对变化GydF4y2BaGGydF4y2Ba在过去GydF4y2Ba最大值GydF4y2Ba迭代率小于GydF4y2Bafunctiontolerance.GydF4y2Ba。GydF4y2Ba 1GydF4y2Ba
最大GydF4y2Ba 迭代次数达到GydF4y2Ba最大GydF4y2Ba。GydF4y2Ba 0.GydF4y2Ba
outputfcn.GydF4y2Ba要么GydF4y2BaPlotfcn.GydF4y2Ba outputfcn.GydF4y2Ba要么GydF4y2BaPlotfcn.GydF4y2Ba可以停止迭代。GydF4y2Ba -1GydF4y2Ba
Objectivelimit.GydF4y2Ba 最佳客观函数价值GydF4y2BaGGydF4y2Ba小于GydF4y2BaObjectivelimit.GydF4y2Ba。GydF4y2Ba -3GydF4y2Ba
maxstalltime.GydF4y2Ba 最佳客观函数价值GydF4y2BaGGydF4y2Ba最后没有改变GydF4y2Bamaxstalltime.GydF4y2Ba秒。GydF4y2Ba -4GydF4y2Ba
MaxTime.GydF4y2Ba 功能运行时间超过GydF4y2BaMaxTime.GydF4y2Ba秒。GydF4y2Ba -5GydF4y2Ba

此外,如果你设置了GydF4y2Bafunvalcheck.GydF4y2Ba选择GydF4y2Ba'上'GydF4y2Ba,群体有颗粒GydF4y2Ba南GydF4y2Ba那GydF4y2BaINF.GydF4y2Ba或复杂的目标函数值,GydF4y2Bapartminleswarm.GydF4y2Ba停止并发出错误。GydF4y2Ba