创造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
默认,GydF4y2Bapartminleswarm.GydF4y2Ba
打电话给GydF4y2Ba'pswreationuniform'GydF4y2Ba
群创建功能。此函数工作如下。GydF4y2Ba
如果GydF4y2Bainitialswarmmatrix.GydF4y2Ba
选项存在,GydF4y2Ba'pswreationuniform'GydF4y2Ba
拿一个GydF4y2Ba群体化GydF4y2Ba
行的行GydF4y2Bainitialswarmmatrix.GydF4y2Ba
矩阵作为群体。如果是行的行数GydF4y2Bainitialswarmmatrix.GydF4y2Ba
矩阵小于GydF4y2Ba群体化GydF4y2Ba
, 然后GydF4y2Ba'pswreationuniform'GydF4y2Ba
继续到下一步。GydF4y2Ba
'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
设置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
'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
细节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
混合函数是在粒子群算法终止之后运行的另一个最小化函数。您可以指定混合函数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
partminleswarm.GydF4y2Ba
选择GydF4y2Ba
如下:GydF4y2Ba选项= Optimoptions(选项,'hybridfcn',{@ fminunc,hybridopts});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
停止= 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
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 |
增加速度,您可以设置您的选项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使用vectorizedGydF4y2Ba
选择GydF4y2Ba真正GydF4y2Ba
。您的客观函数应该接受GydF4y2BamGydF4y2Ba
-通过-GydF4y2BaNGydF4y2Ba
矩阵,其中每行代表一个粒子,并返回一个粒子GydF4y2BamGydF4y2Ba
-通过-GydF4y2Ba1GydF4y2Ba
目标函数值矢量。此选项与此选项相同GydF4y2BaPatternsearch.GydF4y2Ba
和GydF4y2BaGA.GydF4y2Ba
使用vectorizedGydF4y2Ba
选项。对于GydF4y2BaPatternsearch.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