主要内容

六个求解器的比较

函数优化

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

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]这个数字远低于全球最低水平。

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

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

生成图的代码

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

六种解决方案方法

Fminunc.

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

rf2 = @(x)rastriginsfcn(x / 10);%的目标x0 = [20,30];离最小值%的起点(xf, ff, flf] = fminunc (x0 rf2)

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);%的目标x0 = [20,30];离最小值%的起点[XP,FP,FLP,OP] = PatternSearch(RF2,X0)

patternsearch回报

优化终止:网格尺寸小于options.meshtolerance。XP = 19.8991 -9.9496 FP = 4.9748 FLP = 1 OP =带有字段的STRACT:@(x)Restriginsfcn(x / 10)问题restype:'不受约束'pollmethod:'gpspositivebasis2n'maxconstraint:[] searchmethod:[]迭代:48Funccount:174网眼:9.5367E-07 RNGState:[1x1 struct]消息:'优化终止:网格尺寸小于options.meshtolerance。
  • xp是最小化的点。

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

  • FLP.是出口标志。退出标志1表明xp是一个地方最低限度。

  • 人事处输出结构描述了patternsearch计算导致解决方案。

GA.

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

rng默认重复性的%rf2 = @(x)rastriginsfcn(x / 10);%的目标x0 = [20,30];离最小值%的起点Initpop = 10*randn(20,2) + repmat(x0,20,1);opts = Optimoptions(“遗传算法”'initialpopulationmatrix', initpop);(xga fga、flga简称oga] = ga (rf2 2 ,[],[],[],[],[],[],[], 选择)

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

选择是设置的选项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.计算导致解决方案。

partminleswarm.

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

rng默认重复性的%rf2 = @(x)rastriginsfcn(x / 10);%的目标opts = Optimoptions('particleswarm'“InitialSwarmMatrix”, initpop);[XPSO,FPSO,FLGPSO,OPSO] = ParticleSwarm(RF2,2,[],[],选择)
优化结束:相对于上一个选项的目标值的变化。MaxStallIterations迭代小于options . functional tolerance。xpso = 9.9496 0.0000 fpso = 0.9950 flgpso = 1 opso = struct with fields: rngstate: [1×1 struct] iterations: 56 funccount: 1140 message: 'Optimization ended: relative change in the objective value↵over the last OPTIONS. xpso = 9.9496 0.0000 fpso = 0.9950 flgpso = 1 opso = struct with fields:MaxStallIterations迭代小于options . functional tolerance。
  • xpso是最小化的点。

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

  • flgpso是出口标志。退出标志1表明xpso是一个地方最低限度。

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

surrogateopt

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

rng默认重复性的%磅=(-70、-70);乌兰巴托= [130130];rf2 = @(x)rastriginsfcn(x / 10);%的目标opts = Optimoptions(“surrogateopt”“PlotFcn”,[]);[XSUR,FSUR,FLGSUR,OSUR] = TREROGATEOPT(RF2,LB,UB,OPTS)
Trustogateopt停止,因为它超出了“选项”QuaxFunctioneValuations'设置的函数评估限制。XSur = -0.0033 0.0005 FSUR = 2.2456E-05 FLGSUR = 0 OSUR =带有字段的结构:ELAPSEDTIME:2.3877 Funccount:200 RngState:[1×1结构]消息:'TrustogateOpt停止,因为它超过了↵'设置的函数评估限制options.maxfunctionevaluations'。'
  • XSUR.是最小化的点。

  • FSUR.是目标的价值,RF2., 在XSUR.

  • Flgsur.是出口标志。退出标志0.表明surrogateopt暂停,因为它耗尽了功能评估或时间。

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

Globalsearch.

用。求解最优化问题Globalsearch.求解器,输入:

rf2 = @(x)rastriginsfcn(x / 10);%的目标x0 = [20,30];离最小值%的起点问题= createOptimproblem(“fmincon”“目标”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表示所有粉刺正常运行聚合。

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

比较语法和解决方案金宝搏官方网站

如果一个解的目标函数值小于另一个解,则该解优于另一个解。下表总结了结果,精确到一个小数。

结果 Fminunc. patternsearch GA. partminleswarm. 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]

  • partminleswarm.比职能评估更少GA.,但更多patternsearch.在这种情况下,partminleswarm.发现目标函数值较低的点patternsearch,但高于GA..因为partminleswarm.是随机的,其结果随每次运行而变化。partminleswarm.有一个简单的调用语法,但有额外的步骤有一个初始填充附近[20,30]

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

  • Globalsearch.采用与函数评估的幅度相同GA.partminleswarm.,搜索许多盆地,并以良好的解决方案到达。在这种情况下,Globalsearch.发现全球最佳。配置Globalsearch.比设置其他解算器更复杂。如示例所示,在调用之前Globalsearch.,则必须同时创建Globalsearch.目的 (GS.在本例中),以及问题结构(问题)。然后,你打电话给方法GS.问题.有关如何运行的更多详细信息Globalsearch., 看Globalsearch和Multistart的工作流程

相关的话题