这个例子演示了如何使用6个求解器最小化Rastrigin函数。每个求解器都有自己的特点。这些特性导致不同的解决方案和运行时。万博 尤文图斯检查结果比较语法和解决方案万博 尤文图斯,可以帮助你选择一个适当的解决自己的问题。
Rastrigin的功能有很多局部极小,与全球最小的(0,0):
通常你不知道你的目标函数的全局最小的位置。要显示求解如何寻找一个全球解决方案,这个例子开始围绕该点所有的求解器[20,30]
这远远低于全球最低水平。
该rastriginsfcn.m
文件实现了Rastrigin的函数。这个文件附带全局优化工具箱软件这个例子使用了Rastrigin函数的一个缩放版本,带有更大的吸引池。信息,请参阅盆地的吸引力。
rf2 = @ (x) rastriginsfcn (x / 10);
这个例子最小化RF2
使用默认设置fminunc
(优化工具箱™求解器),patternsearch
,GlobalSearch
。该示例还使用GA
和particleswarm
使用非默认选项从初始填充点开始[20,30]
。因为surrogateopt
需要有限范围,示例性用途surrogateopt
下界为-70年
和上界130
在每个变量。
来解决优化问题fminunc
优化工具箱求解器,输入:
rf2 = @ (x) rastriginsfcn (x / 10);%目标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: iteration: 3 funcCount: 15 stepsize: 1.7776e-06 lssteplength: 1 first storderopt: 5.9907e-09算法:“拟牛顿”信息:“找到的局部最小值……”
XF
为最大限度地减少点。
FF
是目标的价值,RF2
, 在XF
。
FLF
是出口标志。的出口标志1
表明XF
是一个局部最小值。
的
是输出结构,它描述了fminunc
计算得出结果。
来解决优化问题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 =结构与字段:功能:@(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
是一个局部最小值。
人事处
是输出结构,它描述了patternsearch
计算得出结果。
来解决优化问题GA
全局优化工具箱解算器,输入:
rf2 = @(x)rastriginsfcn(x/10);%目标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: ' unrestricted ' rngstate:[1×1 struct]代:200 funccount: 9453消息:'优化终止:超过最大代数。“maxconstraint: []
xga
为最大限度地减少点。
fga
是目标的价值,RF2
, 在xga
。
FLGA
是出口标志。的出口标志0
表明GA
达到了功能评估限制或迭代限制。在这种情况下,GA
达到迭代极限。
简称oga
是输出结构,它描述了GA
计算得出结果。
就像GA
,particleswarm
是一个基于种群的算法。为了公平比较求解器,将粒子群初始化为相同的种群GA
。
rf2 = @(x)rastriginsfcn(x/10);% objective opts = optimoptions('particleswarm','InitialSwarmMatrix',initpop);[xpso,单点、flgpso opso] = particleswarm (rf2 2[][],选择)
优化结束:目标值相对于最后一个选项的相对变化。maxstalliteration:迭代次数小于选择次数。xpso = 9.9496 0.0000单= 0.9950 flgpso = 1 opso =结构体字段:rngstate: [1×1 struct]迭代:56 funccount: 1140信息:优化结束:客观价值的相对变化↵过去的选择。maxstalliteration小于OPTIONS.FunctionTolerance。
xpso
为最大限度地减少点。
FPSO
是目标的价值,RF2
, 在xpso
。
flgpso
是出口标志。的出口标志1
表明xpso
是一个局部最小值。
opso
是输出结构,它描述了particleswarm
计算得出结果。
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
解算器,输入:
rf2 = @ (x) rastriginsfcn (x / 10);%目标x0 = [20,30];从最小问题开始的点= createOptimProblem('fmincon','objective',rf2,…x0, x0);gs = GlobalSearch;[xg, fg,焦距,噩]=运行(gs、问题)
问题
是一个优化问题结构。问题
指定fmincon
解算器,RF2
目标函数,X0 = [20,30]
。有关使用的详细信息createOptimProblem
见创建问题结构。
您必须指定fmincon
作为求解者GlobalSearch
,即使是无约束的问题。
GS
是一个默认GlobalSearch
对象。对象包含解决问题的选项。调用运行(gs、问题)
运行问题
从多个起始点。开始点是随机的,所以下面的结果也是随机的。
在这种情况下,运行的回报:
GlobalSearch停止了,因为它分析了所有的试验点。所有10个本地求解器运行时都收敛于一个正的本地求解器出口标志。xg = 1.0e-07 * -0.1405 -0.1405 fg = 0 flg = 1 og = struct与字段:funcCount: 2350 localSolverTotal: 10 localSolverSuccess: 10 localSolverIncomplete: 0 localSolverNoSolution: 0信息:'GlobalSearch停止,因为它分析了所有的试验点。↵↵所有10个当地聚合与解算器运行积极解决退出旗。”
XG
为最大限度地减少点。
FG
是目标的价值,RF2
, 在XG
。
FLG
是出口标志。的出口标志1
表示所有fmincon
正常运行聚合。
噩
是输出结构,它描述了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 |
五 |
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
,你必须创建两个aGlobalSearch
对象(GS
和一个问题结构(问题
)。然后,你叫跑
方法GS
和问题
。有关如何运行的详细信息GlobalSearch
见工作流程GlobalSearch和多头。