创建GydF4y2Ba选项GydF4y2Ba
使用GydF4y2BaoptimoptionsGydF4y2Ba
功能如下。GydF4y2Ba
选项= optimoptions(GydF4y2Ba'particleswarm'GydF4y2Ba,GydF4y2Ba“Param1”GydF4y2Ba,值1,GydF4y2Ba“Param2”GydF4y2Ba,值2,GydF4y2Ba…GydF4y2Ba);GydF4y2Ba
例如,请参阅GydF4y2Ba使用粒子群优化GydF4y2Ba。GydF4y2Ba
中的字段名列出本部分中的每个选项GydF4y2Ba选项GydF4y2Ba
。例如,GydF4y2Ba显示GydF4y2Ba
指的是对应的场GydF4y2Ba选项GydF4y2Ba
。GydF4y2Ba
默认,GydF4y2BaparticleswarmGydF4y2Ba
调用GydF4y2Ba'pswcreationuniform'GydF4y2Ba
群创建函数。这个函数的工作原理如下。GydF4y2Ba
如果一个GydF4y2BaInitialSwarmMatrixGydF4y2Ba
选项存在,GydF4y2Ba'pswcreationuniform'GydF4y2Ba
取第一GydF4y2BaSwarmSizeGydF4y2Ba
一排排GydF4y2BaInitialSwarmMatrixGydF4y2Ba
黑客帝国就是蜂群。的行数GydF4y2BaInitialSwarmMatrixGydF4y2Ba
矩阵小于GydF4y2BaSwarmSizeGydF4y2Ba
, 然后GydF4y2Ba'pswcreationuniform'GydF4y2Ba
继续下一步。GydF4y2Ba
'pswcreationuniform'GydF4y2Ba
产生足够的粒子GydF4y2BaSwarmSizeGydF4y2Ba
在总。GydF4y2Ba'pswcreationuniform'GydF4y2Ba
产生随机均匀分布的粒子。任何群组件的范围是GydF4y2Ba-InitialSwarmSpan / 2, InitialSwarmSpan / 2GydF4y2Ba
,移位并在必要时缩放,以匹配任何边界。GydF4y2Ba
创建后,GydF4y2BaparticleswarmGydF4y2Ba
检查是否所有粒子满足任何边界,并在必要时截短的组件。如果GydF4y2Ba显示GydF4y2Ba
选项GydF4y2Ba'ITER'GydF4y2Ba
一个粒子需要被截断GydF4y2BaparticleswarmGydF4y2Ba
通知你。GydF4y2Ba
通过设置自定义创建功能GydF4y2BaoptimoptionsGydF4y2Ba
设置GydF4y2BaCreationFcnGydF4y2Ba
选项GydF4y2Ba@GydF4y2Ba
,在那里GydF4y2BacustomcreationGydF4y2Ba
customcreationGydF4y2Ba
是创建函数文件的名称。自定义创建函数具有以下语法。GydF4y2Ba
群= customcreation(问题)GydF4y2Ba
创建函数应该返回一个大小矩阵GydF4y2BaSwarmSizeGydF4y2Ba
-通过-GydF4y2Ba据nvarGydF4y2Ba
,其中每一行表示一个颗粒的位置。看到GydF4y2Ba问题GydF4y2Ba
对这个问题的结构细节。特别是,你可以得到GydF4y2BaSwarmSizeGydF4y2Ba
从GydF4y2Baproblem.options.SwarmSizeGydF4y2Ba
,GydF4y2Ba据nvarGydF4y2Ba
从GydF4y2Baproblem.nvarsGydF4y2Ba
。GydF4y2Ba
有关创建函数的示例,请参见GydF4y2BapswcreationuniformGydF4y2Ba
。GydF4y2Ba
编辑GydF4y2BapswcreationuniformGydF4y2Ba
该GydF4y2Ba显示GydF4y2Ba
选项指定多少信息,在命令行的算法运行时显示。GydF4y2Ba
“关”GydF4y2Ba
或GydF4y2Ba'没有'GydF4y2Ba
- 不显示输出。GydF4y2Ba
'ITER'GydF4y2Ba
-每次迭代显示信息。GydF4y2Ba
'最后'GydF4y2Ba
(默认)-显示停止的原因。GydF4y2Ba
iterGydF4y2Ba
显示:GydF4y2Ba
迭代GydF4y2Ba
——迭代数GydF4y2Ba
f-countGydF4y2Ba
- 目标函数评估的累计数GydF4y2Ba
最好F(X)GydF4y2Ba
-最佳目标函数值GydF4y2Ba
平均数F(X)GydF4y2Ba
- 在所有颗粒平均目标函数值GydF4y2Ba
失速的迭代GydF4y2Ba
-自上次变更以来的迭代次数GydF4y2Ba最好F(X)GydF4y2Ba
该GydF4y2BaDisplayIntervalGydF4y2Ba
选项设置迭代显示更新之前执行的迭代次数。给出一个正整数。GydF4y2Ba
有关GydF4y2BaparticleswarmGydF4y2Ba
算法出现在GydF4y2Ba粒子群算法GydF4y2Ba。本节描述调优参数。GydF4y2Ba
在粒子群算法的主要步骤是为群新速度的产生:GydF4y2Ba
对于GydF4y2Bau1GydF4y2Ba
和GydF4y2Bau2GydF4y2Ba
均匀(0,1)分布的长度随机向量GydF4y2Ba据nvarGydF4y2Ba
,更新速度GydF4y2Ba
V = W * V + Y1 * U1。*(P-X)+ Y 2 * U2。*(G-X)GydF4y2Ba
。GydF4y2Ba
的变量GydF4y2BaW =惯性GydF4y2Ba
,GydF4y2BaY1 = SelfAdjustmentWeightGydF4y2Ba
,GydF4y2Bay2 = SocialAdjustmentWeightGydF4y2Ba
。GydF4y2Ba
此更新采用的加权和:GydF4y2Ba
以前的速度GydF4y2BavGydF4y2Ba
X-PGydF4y2Ba
,当前位置之间的差GydF4y2BaXGydF4y2Ba
最好的位置GydF4y2BapGydF4y2Ba
粒子已经看到GydF4y2Ba
的x克GydF4y2Ba
,当前位置之间的差GydF4y2BaXGydF4y2Ba
最好的位置GydF4y2BaGGydF4y2Ba
在目前附近GydF4y2Ba
根据这个公式,这些选项有以下效果:GydF4y2Ba
惯性较大的绝对值GydF4y2Baw ^GydF4y2Ba
导致新的速度与旧的速度更接近同一条线,并具有更大的绝对大小。一个很大的绝对值GydF4y2Baw ^GydF4y2Ba
会破坏蜂群的稳定。的价值GydF4y2Baw ^GydF4y2Ba
在两元向量的范围内GydF4y2BaInertiaRangeGydF4y2Ba
。GydF4y2Ba
值越大GydF4y2BaY1 = SelfAdjustmentWeightGydF4y2Ba
使颗粒头更倾向于它已经访问过的最好的地方。GydF4y2Ba
值越大GydF4y2Bay2 = SocialAdjustmentWeightGydF4y2Ba
使粒子朝着当前附近的最佳位置移动。GydF4y2Ba
惯性值大,GydF4y2BaSelfAdjustmentWeightGydF4y2Ba
,或GydF4y2BaSocialAdjustmentWeightGydF4y2Ba
会破坏蜂群的稳定。GydF4y2Ba
该GydF4y2BaMinNeighborsFractionGydF4y2Ba
选项集两者的初始邻域尺寸为每个粒子,最小邻域尺寸;看到GydF4y2Ba粒子群算法GydF4y2Ba。设置GydF4y2BaMinNeighborsFractionGydF4y2Ba
来GydF4y2Ba1GydF4y2Ba
有群中的所有成员使用全球最小的点作为自己的社会调整目标。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
确保混合函数接受问题约束。否则,GydF4y2BaparticleswarmGydF4y2Ba
抛出一个错误。GydF4y2Ba
您可以为混合函数设置单独的选项。使用GydF4y2BaoptimsetGydF4y2Ba
对于GydF4y2BafminsearchGydF4y2Ba
,或GydF4y2BaoptimoptionsGydF4y2Ba
对于GydF4y2BafminconGydF4y2Ba
,GydF4y2BapatternsearchGydF4y2Ba
,或GydF4y2BafminuncGydF4y2Ba
。例如:GydF4y2Ba
hybridopts = optimoptions( 'fminunc', '显示', 'ITER', '算法', '准牛顿');GydF4y2Ba
particleswarmGydF4y2Ba
选项GydF4y2Ba
如下:GydF4y2Ba选项= optimoptions(选项 'HybridFcn',{@ fminunc,hybridopts});GydF4y2Ba
hybridoptsGydF4y2Ba
必须存在于你设定之前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
在每个迭代中调用。输出函数和曲线函数之间的差别在于一个绘图功能内置在显示的图形窗口以暂停或停止上绘制的增强,诸如按钮GydF4y2BaparticleswarmGydF4y2Ba
。独行内建绘图功能GydF4y2Ba'pswplotbestf'GydF4y2Ba
绘制针对迭代的最佳目标函数值。要指定它,GydF4y2Ba
选项= optimoptions(@particleswarm,GydF4y2Ba'PlotFcn'GydF4y2Ba,GydF4y2Ba'pswplotbestf'GydF4y2Ba)GydF4y2Ba
要创建自定义绘图函数,请使用中指定的语法编写函数GydF4y2Ba输出函数或绘图功能的结构GydF4y2Ba。要指定自定义绘图功能,使用功能句柄。如果你有几个情节的功能,将它们作为函数处理的单元阵列:GydF4y2Ba
选项= optimoptions(@particleswarm,GydF4y2Ba'PlotFcn'GydF4y2Ba{@ plotfun1,@ plotfun2,@ plotfun3})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
“init”GydF4y2Ba
-求解器还没有开始迭代。输出函数或绘图函数可以使用此状态打开文件,或为后续迭代设置数据结构或绘图。GydF4y2Ba
'ITER'GydF4y2Ba
-求解程序正在进行其迭代。通常,这是输出函数或绘图函数执行其工作的地方。GydF4y2Ba
“完成”GydF4y2Ba
-求解者达到了停止的标准。输出函数或绘图函数可以使用此状态进行清理,比如关闭它打开的任何文件。GydF4y2Ba
传递额外的参数GydF4y2Ba(优化工具箱)解释如何提供额外的参数输出函数或绘图函数。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)=乐趣(群(I,:))GydF4y2Ba ,在那里GydF4y2Ba有趣的GydF4y2Ba 是目标函数。GydF4y2Ba |
为提高速度,您可以设置选项,以便GydF4y2BaparticleswarmGydF4y2Ba
评估目标函数的群中GydF4y2Ba平行GydF4y2Ba或在GydF4y2Ba矢量GydF4y2Ba时尚。您可以使用这些选项中只有一个。如果设置GydF4y2BaUseParallelGydF4y2Ba
来GydF4y2Ba真正的GydF4y2Ba
和GydF4y2BaUseVectorizedGydF4y2Ba
来GydF4y2Ba真正的GydF4y2Ba
,则计算在矢量方式完成的,而不是平行。GydF4y2Ba
如果你有一个并行计算工具箱™许可,您可以的目标函数的计算分配给您的处理器或内核间的群。设置GydF4y2BaUseParallelGydF4y2Ba
选项GydF4y2Ba真正的GydF4y2Ba
。GydF4y2Ba
并行计算很可能会快于串行当你的目标函数的计算成本高昂,或当你有很多颗粒和处理器。否则,通信开销可能会导致并行计算为比串行计算慢。GydF4y2Ba
有关详细信息,请参阅GydF4y2Ba并行计算GydF4y2Ba。GydF4y2Ba
如果你的目标函数可以一次评估所有粒子,通常可以节省通过设置时间GydF4y2BaUseVectorizedGydF4y2Ba
选项GydF4y2Ba真正的GydF4y2Ba
。你的目标函数应该接受GydF4y2Ba中号GydF4y2Ba
-通过-GydF4y2BañGydF4y2Ba
矩阵,其中每一行表示一个粒子,并返回GydF4y2Ba中号GydF4y2Ba
-通过-GydF4y2Ba1GydF4y2Ba
目标函数的值的向量。该选项的工作方式一样GydF4y2BapatternsearchGydF4y2Ba
和GydF4y2BaGAGydF4y2Ba
UseVectorizedGydF4y2Ba
选项。对于GydF4y2BapatternsearchGydF4y2Ba
详细信息,请参阅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为NaNGydF4y2Ba
,GydF4y2Ba天道酬勤GydF4y2Ba
或复杂的目标函数值,GydF4y2BaparticleswarmGydF4y2Ba
停止并发出错误。GydF4y2Ba