创造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“pswcreationuniform”GydF4y2Ba
群集创建函数。此函数的工作原理如下。GydF4y2Ba
如果GydF4y2Ba初始SwarmMatrixGydF4y2Ba
选项存在,GydF4y2Ba“pswcreationuniform”GydF4y2Ba
第一个GydF4y2Ba群集GydF4y2Ba
一排GydF4y2Ba初始SwarmMatrixGydF4y2Ba
矩阵作为群。如果GydF4y2Ba初始SwarmMatrixGydF4y2Ba
矩阵小于GydF4y2Ba群集GydF4y2Ba
然后GydF4y2Ba“pswcreationuniform”GydF4y2Ba
继续执行下一步。GydF4y2Ba
“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
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
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
对于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
“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“HybridFcn”GydF4y2Ba,{@fminunc,hybridopts});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
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
粒子热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
评估中swarm的目标函数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
.您的目标函数应接受GydF4y2BaMGydF4y2Ba
——- - - - - -GydF4y2BaNGydF4y2Ba
矩阵,其中每行代表一个粒子,并返回一个GydF4y2BaMGydF4y2Ba
——- - - - - -GydF4y2Ba1.GydF4y2Ba
目标函数值的向量。此选项的工作方式与GydF4y2BapatternsearchGydF4y2Ba
和GydF4y2BagaGydF4y2Ba
使用矢量化GydF4y2Ba
选项。用于GydF4y2BapatternsearchGydF4y2Ba
详细信息,请参阅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