主要内容

六解算器的比较

函数优化

这个例子展示了如何用六个解算器最小化拉斯特里金函数。每个求解器都有自己的特点。这些特性导致不同的解决方案和运行时间。万博 尤文图斯结果,在检查比较语法和解决方案万博 尤文图斯,可以帮助您为自己的问题选择一个合适的解决方案。

Rastrigin的功能有很多局部极小,与全球最小的(0,0):

拉斯 XG.ydF4y2Ba = 20. + XG.ydF4y2Ba 1 2 + XG.ydF4y2Ba 2 2 - 10. 因为 2 π XG.ydF4y2Ba 1 + 因为 2 π XG.ydF4y2Ba 2

通常你不知道你的目标函数的全局最小的位置。要显示求解如何寻找一个全球解决方案,这个例子开始围绕该点所有的求解器[20,30]这个数字远低于全球最低水平。

Restriginsfcn.m.文件实现Rastrigin的功能。这个文件配有全局优化工具箱软件这个例子使用了拉斯特里金函数的一个缩放版本,带有更大的吸引池。信息,请参阅盆地的吸引力

rf2 = @ (x) rastriginsfcn (x / 10);

代码生成图

这个例子最小化RF2使用默认设置fminunc(一个优化工具箱™求解器),patternsearch,GlobalSearch.该示例还使用GA.particleswarm使用非默认选项,以点附近的初始填充开始[20,30].因为surrogateopt需要有限范围,示例性用途surrogateopt下限-70和上界130.在每个变量。

六解法

fminunc

用。求解最优化问题fminunc优化工具箱求解器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% objective x0 = [20,30];[xf,ff,flf,of] = fminunc(rf2,x0)

fminunc回报

局部最小值。由于梯度的大小小于函数公差的默认值,优化已经完成。xf = 19.8991 29.8486 ff = 12.9344 flf = 1 of = struct with fields: iterations: 3 funcCount: 15 stepsize: 1.7776e-06 lssteplength: 1 firstderopt: 5.9907e-09 algorithm: '拟牛顿' message: 'Local minimum found....'
  • XF.为最大限度地减少点。

  • FF.是目标的价值,RF2, 在XF.

  • FLF是出口标志。的出口标志1表明XF.是一个局部最小值。

  • 输出结构描述了fminunc计算导致解决方案。

patternsearch

用。求解最优化问题patternsearch全局优化工具箱解算器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% objective x0 = [20,30];%开始点从最小远[XP,FP,FLP,OP] = patternsearch(RF2,X0)

patternsearch回报

优化终止:筛目大小小于options.MeshTolerance。XP = 19.8991 -9.9496 FP = 4.9748 FLP = 1点OP =结构与字段:功能:@(X)rastriginsfcn(X / 10)problemtype: '无约束' pollmethod: 'gpspositivebasis2n' maxconstraint:[] searchmethod:[]迭代:48funccount:174 meshsize:9.5367e-07 rngstate:[1x1的结构]消息: '优化终止:筛目大小小于options.MeshTolerance'
  • xp为最大限度地减少点。

  • FP.是目标的价值,RF2, 在xp

  • FLP是出口标志。的出口标志1表明xp是一个局部最小值。

  • op.输出结构描述了patternsearch计算导致解决方案。

GA.

用。求解最优化问题GA.全局优化工具箱解算器,输入:

rf2 = @(x)rastriginsfcn(x/10);% objective x0 = [20,30];%起点从最小远initpop = 10 * randn(20,2)+ repmat(x0,20,1);OPTS = optimoptions( 'GA', 'InitialPopulationMatrix',initpop);[XGA,FGA,FLGA,OGA] = GA(rf2,2,[],[],[],[],[],[],[],OPTS)

initpop是一个20×2矩阵。每一排initpop也意味着[20,30],每个元素通常与标准偏差分布10..行的行initpop的初始总体矩阵GA.求解器。

OPTS是选项集initpop作为初始人口。

最后一行调用GA.使用选项。

GA.使用随机数,并产生随机结果。在这种情况下GA.返回:

优化终止:超过了最大代数。xga = -0.0042 -0.0024 fga = 4.7054e-05 flga = 0 oga = struct with fields: problemtype: 'unconstrained' rngstate: [1×1 struct] generations: 200 funccount: 9453 message: '优化终止:最大代数超过。“maxconstraint: []
  • xga为最大限度地减少点。

  • FGA.是目标的价值,RF2, 在xga

  • FLGA是出口标志。的出口标志0.表示GA.达到了功能评估限制或迭代限制。在这种情况下,GA.达到迭代极限。

  • 简称oga输出结构描述了GA.计算导致解决方案。

particleswarm

就像GA.particleswarm是一个基于群体的算法。因此,为了公平比较求解器,将粒子群初始化为与GA.

rf2 = @(x)rastriginsfcn(x/10);% object_opts = optimoptions('particleswarm','InitialSwarmMatrix',initpop);[xpso,单点、flgpso opso] = particleswarm (rf2 2[][],选择)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionTolectance。xpso = 9.9496 0.0000 fpso = 0.9950 flgpso = 1 opso =带字段的结构:rngstate:[1×1 struct]迭代:56 funccount:1140消息:'优化结束:目标值中的相对变化¶最后一个options.maxstallitions迭代少于选项。功能。'
  • xpso为最大限度地减少点。

  • FPSO是目标的价值,RF2, 在xpso

  • flgpso是出口标志。的出口标志1表明xpso是一个局部最小值。

  • opso.输出结构描述了particleswarm计算导致解决方案。

surrogateopt

surrogateopt不需要起点,但需要有限的边界。在每个组件中设置-70到130的边界。要获得与其他求解器相同的输出类型,请禁用默认的plot函数。

RNG默认%的可重复性磅= [-70,-70]。UB = [130130];rf2 = @ (x) rastriginsfcn (x / 10);%客观OPTS = optimoptions( 'surrogateopt', 'PlotFcn',[]);[xsur,fsur,flgsur,osur] = surrogateopt(RF2,LB,UB,OPTS)
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。xsur = -0.0033 0.0005 fsur = 2.2456e-05 flgsur = 0 osur =结构与字段:elapsedtime:2.3877 funccount:200 rngstate:[1×1结构]消息: 'Surrogateopt停止,因为它由超过了功能评价极限集↵'options.MaxFunctionEvaluations“。
  • xsur为最大限度地减少点。

  • fsur是目标的价值,RF2, 在xsur

  • flgsur是出口标志。的出口标志0.表示surrogateopt停止,因为它的功能评价或时间的跑了出来。

  • osur输出结构描述了surrogateopt计算导致解决方案。

GlobalSearch

用。求解最优化问题GlobalSearch解算器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% objective x0 = [20,30];% start point away from the minimum problem = createOptimProblem('fmincon','objective',rf2,…x0, x0);gs = GlobalSearch;[xg, fg,焦距,噩]=运行(gs、问题)

问题是一个优化问题结构。问题指定粉刺解算器,RF2目标函数,X0 = [20,30].有关使用的更多信息createOptimProblem, 看创建问题结构

笔记

您必须指定粉刺作为求解器GlobalSearch,即使是无约束的问题。

GS.是默认值GlobalSearch对象。对象包含解决问题的选项。调用运行(GS,问题)运行问题从多个起始点。开始点是随机的,所以下面的结果也是随机的。

在这种情况下,运行的回报:

GlobalSearch停止了,因为它分析了所有的试验点。所有10个本地求解器都以一个正的本地求解器退出标志运行。xg = 1.0e-07 * -0.1405 -0.1405 fg = 0 flg = 1 og = struct with fields: funcCount: 2350 localSolverTotal: 10 localSolverSuccess: 10 localSolverIncomplete: 0 localSolverNoSolution: 0 message: 'GlobalSearch停止,因为它分析了所有试验点。↵↵所有10个本地求解器的运行都以一个正的本地求解器退出标志汇合。
  • XG.为最大限度地减少点。

  • FG.是目标的价值,RF2, 在XG.

  • FLG是出口标志。的出口标志1表示所有粉刺运行正常融合。

  • og.输出结构描述了GlobalSearch计算导致解决方案。

比较语法和解决方案万博 尤文图斯

如果其目标函数值小于另一个解决方案,则一个解决方案优于另一个解决方案。下表总结了结果,准确到十进制。

结果 fminunc patternsearch GA. particleswarm surrogateopt GlobalSearch
解决方案 [19.9 29.9] (19.9 - -9.9) [0 0] [10 0] [0 0] [0 0]
客观的 12.9 5. 0. 1 0. 0.
#Fevals 15. 174. 9453 1140. 200 2178

这些结果是典型的:

  • fminunc很快达到其初始盆地内的局部解决方案,但都没有开拓外地盆地。fminunc有一个简单的调用语法。

  • patternsearch需要更多的职能评估fminunc,并通过搜索几个盆地,到达比一个更好的解决方案fminunc.这patternsearch调用语法与之相同fminunc

  • GA.花费的时间比更多的功能评估patternsearch.偶然地,它找到了一个更好的解决办法。在这种情况下,GA.附近发现全局最优的点。GA.是随机的,所以其结果与每次运行而改变。GA.有一个简单的调用语法,但有额外的步骤有一个初始填充附近[20,30]

  • particleswarm花费的时间比少的功能评价GA.,但超过patternsearch.在这种情况下,particleswarm发现具有比目标函数值的情况下的点patternsearch,但高于GA..因为particleswarm是随机的,其结果随每次运行而变化。particleswarm有一个简单的调用语法,但有额外的步骤有一个初始填充附近[20,30]

  • surrogateopt当它到达一个函数评估限制,默认情况下是200用于两变量的问题停止。surrogateopt具有简单的调用语法,但要求有限的边界。surrogateopt试图找到一个全球性的解决方案,在这个例子中成功了。每个函数的求值surrogateopt比其他解算器花的时间长,因为surrogateopt执行许多辅助计算作为其算法的一部分。

  • GlobalSearch需要功能评估的幅度为同阶GA.particleswarm,搜索许多盆地,并以良好的解决方案到达。在这种情况下,GlobalSearch发现全局最优。配置GlobalSearch比设置其他解算器更复杂。如示例所示,在调用之前GlobalSearch,您必须创建一个GlobalSearch目的 (GS.在本例中),以及问题结构(问题)。然后,你叫方法GS.问题.有关如何运行的详细信息GlobalSearch, 看工作流程GlobalSearch和多头

相关话题