粒子群的选项gydF4y2Ba
指定的选项particleswarmgydF4y2Ba
创建gydF4y2Ba选项gydF4y2Ba
使用gydF4y2BaoptimoptionsgydF4y2Ba
函数如下。gydF4y2Ba
选择= optimoptions (gydF4y2Ba“particleswarm”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“Param1”gydF4y2Bavalue1,gydF4y2Ba“Param2”gydF4y2Bavalue2,gydF4y2Ba…gydF4y2Ba);gydF4y2Ba
例如,看到的gydF4y2Ba使用粒子群优化gydF4y2Ba。gydF4y2Ba
每个选项在这一节中列出的字段名gydF4y2Ba选项gydF4y2Ba
。例如,gydF4y2Ba显示gydF4y2Ba
指相应的领域gydF4y2Ba选项gydF4y2Ba
。gydF4y2Ba
创建群gydF4y2Ba
默认情况下,gydF4y2BaparticleswarmgydF4y2Ba
调用gydF4y2Ba“pswcreationuniform”gydF4y2Ba
群创建函数。这个函数如下工作。gydF4y2Ba
如果一个gydF4y2Ba
InitialSwarmMatrixgydF4y2Ba
选项存在,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“通路”gydF4y2Ba
和一个粒子需要截断gydF4y2BaparticleswarmgydF4y2Ba
通知你。gydF4y2Ba
创建自定义函数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
——没有显示输出。gydF4y2Ba“通路”gydF4y2Ba
——信息显示在每一个迭代。gydF4y2Ba“最后一次”gydF4y2Ba
(默认)——显示停止的原因。gydF4y2Ba
itergydF4y2Ba
显示:gydF4y2Ba
迭代gydF4y2Ba
——迭代数gydF4y2Baf-countgydF4y2Ba
——累积数量的目标函数的评价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)分布式随机向量的长度gydF4y2Ba据nvargydF4y2Ba
、更新速度gydF4y2Ba
v = W * v + y1 * u1。* (px) + y2 * u2。* (g-x)gydF4y2Ba
。gydF4y2Ba
的变量gydF4y2BaW =惯性gydF4y2Ba
,gydF4y2Ba日元= SelfAdjustmentWeightgydF4y2Ba
,gydF4y2Bay2 = SocialAdjustmentWeightgydF4y2Ba
。gydF4y2Ba
这个更新使用加权之和:gydF4y2Ba
前面的速度gydF4y2Ba
vgydF4y2Ba
xpgydF4y2Ba
,当前位置之间的区别gydF4y2BaxgydF4y2Ba
最好的位置gydF4y2BapgydF4y2Ba
粒子了gydF4y2Bax-ggydF4y2Ba
,当前位置之间的区别gydF4y2BaxgydF4y2Ba
最好的位置gydF4y2BaggydF4y2Ba
在当前的社区gydF4y2Ba
根据这个公式,选择有以下影响:gydF4y2Ba
大惯性的绝对值gydF4y2Ba
WgydF4y2Ba
导致了新的速度更旧的线一样,和一个更大的绝对星等。一个大的绝对值gydF4y2BaWgydF4y2Ba
可以破坏群。的价值gydF4y2BaWgydF4y2Ba
的范围内保持二极向量gydF4y2BaInertiaRangegydF4y2Ba
。gydF4y2Ba更大的值gydF4y2Ba
日元= SelfAdjustmentWeightgydF4y2Ba
使粒子的头更向参观的最好的地方。gydF4y2Ba更大的值gydF4y2Ba
y2 = 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 (gydF4y2Ba“fminunc”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“显示”gydF4y2Ba,gydF4y2Ba“通路”gydF4y2Ba,gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“拟牛顿”gydF4y2Ba);gydF4y2Ba
particleswarmgydF4y2Ba
选项gydF4y2Ba
如下:gydF4y2Ba选择= optimoptions(选项,gydF4y2Ba“HybridFcn”gydF4y2Ba,{@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…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…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
——字符串给当前迭代的状态。gydF4y2Ba“init”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遗传算法gydF4y2Ba
UseVectorizedgydF4y2Ba
选项。为gydF4y2BapatternsearchgydF4y2Ba
详细信息,请参阅gydF4y2BaVectorize目标和约束函数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