主要内容

6个求解器的比较

功能优化

此示例显示如何使用六个求解器最小化Rastrigin的功能。每个求解器都有自己的特点。该特性导致不同的解决方案和运行时间。金宝搏官方网站结果,检查了比较语法和解决方案金宝搏官方网站,可以帮助您为自己的问题选择合适的解决者。

Rastrigin函数有许多局部极小值,在(0,0)处有一个全局极小值:

xgydF4y2Ba 20. + xgydF4y2Ba 1 2 + xgydF4y2Ba 2 2 10 cos 2 π. xgydF4y2Ba 1 + cos 2 π. xgydF4y2Ba 2

通常你不知道目标函数的全局最小值的位置。为了展示求解器是如何寻找全局解的,本示例将所有求解器围绕这一点启动(20、30),远离全球最低限度。

Rastriginsfcn.m.文件实现了Rastrigin的功能。这个文件全局优化工具箱软件。此示例采用缩放版本的Rastrigin功能,具有较大的吸引力盆地。有关信息,请参阅吸引力盆地

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

生成图形的代码

这个例子最小化rf2使用的默认设置fminunc(优化工具箱™求解器),PatternSearch., 和GlobalSearch.这个例子还使用了遗传算法particleswarm使用非默认选项,以围绕该点的初始种群开始(20、30).因为代理人考试需要有限的边界,这个例子使用代理人考试下限-70的上界130在每一个变量。

六个解决方法

fminunc

使用使用的解决优化问题fminunc优化工具箱求解器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% 客观的x0 =(20、30);%开始点远离最小值[XF,FF,FLF] = Fminunc(RF2,X0)

fminunc返回

发现本地最低限度。优化完成,因为梯度的大小小于功能公差的默认值。XF = 19.8991 29.8486 ff = 12.9344 flf = 1 =带有字段的结构:迭代:3 funccount:15 stepize:1.7776E-06 lssteplength:1 firstorderopt:5.9907e-09算法:'准牛顿'消息:'局部最小值。...'
  • xf是最小值点。

  • ff是目标的价值,rf2,在xf

  • flf是退出标志。的退出标志1表示xf为局部最小值。

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

PatternSearch.

使用使用的解决优化问题PatternSearch.全局优化工具箱解算器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% 客观的x0 =(20、30);%开始点远离最小值(xp、fp、隔爆、op) = patternsearch (x0 rf2)

PatternSearch.返回

优化终止:网格尺寸小于选项。网格公差。flp xp = 19.8991 -9.9496 fp = 4.9748 = 1 op =结构体字段:功能:@ (x) rastriginsfcn (x / 10) problemtype:“无约束”pollmethod:“gpspositivebasis2n”maxconstraint: [] searchmethod:[]迭代:48 funccount: 174 meshsize: 9.5367 e-07 rngstate: [1 x1 struct]信息:“优化终止:网格大小小于options.MeshTolerance。”
  • XP.是最小值点。

  • 《外交政策》是目标的价值,rf2,在XP.

  • 隔爆是退出标志。的退出标志1表示XP.为局部最小值。

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

遗传算法

使用使用的解决优化问题遗传算法全局优化工具箱解算器,输入:

rng.默认的%的再现性rf2 = @ (x) rastriginsfcn (x / 10);% 客观的x0 =(20、30);%开始点远离最小值ingpop = 10 * Randn(20,2)+ Repmat(x0,20,1);选择= optimoptions ('GA'“InitialPopulationMatrix”, initpop);[XGA,FGA,FLGA,OGA] = GA(RF2,2,[],[],[],[],[],[],[],选择)

训练是一个20 × 2矩阵。每一行的训练有意义(20、30),各元素均以标准差正态分布10.行的行训练形成初始群体矩阵遗传算法解算器。

选择选项设置好了吗训练作为初始总体。

最后一行是遗传算法,使用选项。

遗传算法使用随机数,并产生随机结果。在这种情况下遗传算法返回:

优化终止:超出了最大几代数。xga = -0.0042 -0.0024 fga = 4.7054e-05 flga = 0 oga = struct with字段:问题rype:'不受约束的'rngstate:[1×1 struct]代:200 funccount:9453消息:'优化终止:最大数量超过。MaxConstraint:[]
  • XGA.是最小值点。

  • FGA.是目标的价值,rf2,在XGA.

  • flga是退出标志。的退出标志0表明遗传算法达到函数求值极限或迭代极限。在这种情况下,遗传算法达到了迭代限制。

  • oga.是输出结构,描述了遗传算法计算导致解决方案。

particleswarm

喜欢遗传算法particleswarm是一种基于人群的算法。因此,对于求解器的公平比较,将粒子群初始化为与相同的人群遗传算法

rng.默认的%的再现性rf2 = @ (x) rastriginsfcn (x / 10);% 客观的选择= optimoptions (“particleswarm”“InitialSwarmMatrix”, initpop);[xpso,单点、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是最小值点。

  • 单点是目标的价值,rf2,在XPSO

  • FLGPSO是退出标志。的退出标志1表示XPSO为局部最小值。

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

代理人考试

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

rng.默认的%的再现性lb = [-70,-70];UB = [130,130];rf2 = @ (x) rastriginsfcn (x / 10);% 客观的选择= optimoptions ('trustogatept''plotfcn'[]);[xsur, fsur flgsur osur] = surrogateopt (rf2、磅、乌兰巴托、选择)
Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。xsur = -0.0033 0.0005 fsur = 2.2456e-05 flgsur = 0 osur = struct with fields: elapsedtime: 2.3877 funccount: 200 rngstate: [1×1 struct] message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by↵'
  • xsur是最小值点。

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

  • flgsur是退出标志。的退出标志0表明代理人考试停止,因为它耗尽了函数计算或时间。

  • Osur.是输出结构,描述了代理人考试计算导致解决方案。

GlobalSearch

使用使用的解决优化问题GlobalSearch解算器,输入:

rf2 = @ (x) rastriginsfcn (x / 10);% 客观的x0 =(20、30);%开始点远离最小值问题= createOptimProblem ('fmincon''客观的',rf2,...'x0',x0);gs = globalsearch;[xg,fg,flg,og] = run(gs,问题)

问题是一个优化问题结构。问题指定了fmincon求解器,答案rf2目标函数,x0 =(20、30).,以获取更多使用信息createOptimproblem.,请参阅创建问题结构

请注意

您必须指定fmincon作为求解器GlobalSearch,甚至对于无约束问题。

gs是一个默认GlobalSearch目的。该对象包含解决问题的选项。打电话运行(gs、问题)问题从多个起点出发。起始点是随机的,所以下面的结果也是随机的。

在这种情况下,run返回:

Globalsearch停止,因为它分析了所有的试验点。所有10个本地求解器运行融合,并使用正本地求解器出口标志。XG = 1.0E-07 * -0.1405 -0.1405 FG = 0 flg = 1 og =带有字段的结构:Funccount:2350 localsolvertotal:10 localsolversuccess:10 localsolverincomplete:0 localsolvernosolution:0消息:'globalsearch停止,因为它分析了所有的试验点。↵↵在10个本地求解器运行中融合,并使用正本地求解器出口标志。
  • xg是最小值点。

  • 成品是目标的价值,rf2,在xg

  • 焦距是退出标志。的退出标志1显示所有fmincon运行正常融合。

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

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

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

结果 fminunc PatternSearch. 遗传算法 particleswarm 代理人考试 GlobalSearch
解决方案 [19.9 29.9] [19.9 -9.9] [0 0] (10 0) [0 0] [0 0]
客观的 12.9 5 0 1 0 0
#函数宏指令 15 174 9453 1140 200. 2178

这些结果是典型的:

  • fminunc在其起始盆地内迅速达到局部解决方案,但根本不探索该盆地以外的地方。fminunc具有简单的调用语法。

  • PatternSearch.需要更多的功能评估fminunc,并在几个盆地中寻找,最终得到一个比fminunc.的PatternSearch.调用语法与的语法相同fminunc

  • 遗传算法需要更多的函数求值PatternSearch..偶然抵达更好的解决方案。在这种情况下,遗传算法在全局最优值附近找到一个点。遗传算法是随机的,因此其结果随每次运行而变化。遗传算法有一个简单的调用语法,但有额外的步骤靠近初始人口(20、30)

  • particleswarm需要的函数求值比遗传算法,但不仅仅是PatternSearch..在这种情况下,particleswarm找到一个目标函数值小于的点PatternSearch.,但高于遗传算法.因为particleswarm是随机的,其结果随着每次运行而变化。particleswarm有一个简单的调用语法,但有额外的步骤靠近初始人口(20、30)

  • 代理人考试当它达到函数求值限制时停止,对于双变量问题,默认值为200。代理人考试有一个简单的调用语法,但需要有限界限。代理人考试尝试找到全局解决方案,在这种情况下成功。每个功能评估代理人考试需要更长的时间,而不是大多数其他求解器,因为代理人考试作为算法的一部分,执行许多辅助计算。

  • GlobalSearch运行函数值的数量级遗传算法particleswarm,寻找许多盆地,并得到一个很好的解决方案。在这种情况下,GlobalSearch找到全局最优。设置GlobalSearch比设置其他求解器更多。作为示例显示,在呼叫之前GlobalSearch,则必须同时创建GlobalSearch对象(gs在该示例中)和问题结构(问题).然后,你呼叫运行方法gs问题.有关如何运行的详细信息GlobalSearch,请参阅GlobalSearch和MultiStart的工作流

相关的话题