全局优化工具箱解算器特点
求解器的选择
本节描述全局优化工具箱解算器的特点。本节包括如何更有效地获得结果的建议。
要获得更好或更快的解决方案,首先尝试调优推荐解决方案通过设置适当的选项或界限。如果结果不令人满意,请尝试其他求解方法。
理想的解决方案 | 流畅的目标和约束条件 | 非光滑目标或约束 |
---|---|---|
“期望解决方案”的解释 | 在平滑问题的求解器之间选择 | 非光滑问题的求解方法选择 |
单一的当地的解决方案 | 优化工具箱™函数;看到优化决策表 | fminbnd ,patternsearch ,fminsearch ,遗传算法 ,particleswarm ,simulannealbnd ,surrogateopt |
多个当地的解决方案 | GlobalSearch ,MultiStart |
patternsearch ,遗传算法 ,particleswarm ,simulannealbnd ,或surrogateopt 从多个起始点开始x0 或者来自多个初始种群 |
单一的全球解决方案 | GlobalSearch ,MultiStart ,patternsearch ,particleswarm ,遗传算法 ,simulannealbnd ,surrogateopt |
patternsearch ,遗传算法 ,particleswarm ,simulannealbnd ,surrogateopt |
使用并行处理的单一本地解决方案 | MultiStart 、优化工具箱功能 |
patternsearch ,遗传算法 ,particleswarm ,surrogateopt |
使用并行处理的多个本地解决方案 | MultiStart |
patternsearch ,遗传算法 ,或particleswarm 从多个起始点开始x0 或者来自多个初始种群 |
使用并行处理的单一全局解决方案 | MultiStart |
patternsearch ,遗传算法 ,particleswarm ,surrogateopt |
“期望解决方案”的解释
要理解“期望解决方案”中术语的含义,请考虑下面的示例
f(x) = 100x2(1 -x)2- - - - - -x,
哪个有局部极小值x1
在0附近,x2
附近1:
极小值位于:
乐趣= @(x)(100*x^2*(x - 1)^2 - x);X1 = fminbnd(fun,-0.1,0.1) X1 = 0.0051 x2 = fminbnd(fun,0.9,1.1) x2 = 1.0049
条款说明
术语 | 意义 |
---|---|
单一的当地的解决方案 | 找到一个局部解,一个点x其中目标函数f(x)为局部极小值。有关更多细节,请参见本地vs.全局优化.在这个例子中,两者都是x1 而且x2 是局部的解决方案。 |
多个当地的解决方案 | 找到一组本地的解决方案。在本例中,完整的本地解决方案集为{x1, x2} . |
单一的全球解决方案 | 找到点x其中目标函数f(x)为全局极小值。在本例中,全局解为x2 . |
在平滑问题的求解器之间选择
单一的全球解决方案
试一试
GlobalSearch
第一。它最专注于寻找一个全球解决方案,并拥有一个高效的本地求解器,fmincon
.试一试
MultiStart
下一个。它具有高效的局部求解器,可以搜索各种各样的起始点。试一试
patternsearch
下一个。它的效率较低,因为它不使用渐变。然而,patternsearch
要寻找一个全局的解决方案,开始吗patternsearch
从不同的起点。试一试
surrogateopt
下一个。surrogateopt
试图用最少的目标函数评估找到一个全局解决方案。surrogateopt
每个函数求值的开销比大多数其他求解器都要高。surrogateopt
要求有限界,并接受整数约束、线性约束和非线性不等式约束。试一试
particleswarm
接下来,如果您的问题是无约束的或只有绑定约束。通常情况下,particleswarm
是比剩下的求解器更高效,又能比patternsearch
.试一试
遗传算法
下一个。它可以处理所有类型的约束,通常比simulannealbnd
.试一试
simulannealbnd
最后的它可以处理没有约束或有约束的问题。simulannealbnd
通常是效率最低的求解器。然而,只要降温速度足够慢,它就能找到一个全球性的解决方案。
多个当地的解决方案
GlobalSearch
而且MultiStart
两者都提供多种本地解决方案。有关获取多个解的语法,请参见多个解决方案.GlobalSearch
而且MultiStart
有以下特点不同:
MultiStart
可以找到更多的局部极小值。这是因为GlobalSearch
拒绝许多生成的起始点(本地解决方案的初始点)。从本质上讲,GlobalSearch
只有当它确定一个起点有很好的机会获得全局最小值时,它才接受这个起点。相比之下,MultiStart
将所有生成的起始点传递给本地求解器。有关更多信息,请参见GlobalSearch算法.MultiStart
提供了一个本地求解器的选择:fmincon
,fminunc
,lsqcurvefit
,或lsqnonlin
.的GlobalSearch
解算器只使用fmincon
作为它的本地求解器。GlobalSearch
使用散点搜索算法生成起始点。相比之下,MultiStart
在边界内均匀随机生成点,或者允许您提供自己的点。MultiStart
可以并行运行。看到如何在全局优化工具箱中使用并行处理.
非光滑问题的求解方法选择
选择数值最小的适用解算器。对于整数约束的问题,使用遗传算法
.
使用
fminbnd
首先是一维有界问题。fminbnd
可证明在一维中快速收敛。使用
patternsearch
在任何其他类型的问题上。patternsearch
可证明的收敛,并处理所有类型的约束。试一试
surrogateopt
对于有耗时目标函数的问题。surrogateopt
寻找全局解决方案。surrogateopt
要求有限界,并接受整数约束、线性约束和非线性不等式约束。试一试
fminsearch
下一个是低维无界问题。fminsearch
是不是像一般一样patternsearch
也可能无法收敛。对于低维问题,fminsearch
使用起来很简单,因为它只有很少的调优选项。试一试
particleswarm
接下来讲无界或有界约束问题。particleswarm
几乎没有理论支持,但往往是一个有效的算法。试一试
遗传算法
下一个。遗传算法
几乎没有理论支持,效率往往低于patternsearch
或particleswarm
.遗传算法
处理所有类型的约束。遗传算法
而且surrogateopt
是唯一的全局优化工具箱接受整数约束的求解器。试一试
simulannealbnd
最后是无界问题,或者有界问题。simulannealbnd
可证明的收敛只对对数冷却计划,这是非常慢。simulannealbnd
只接受有限的约束,并且通常比遗传算法
.
解算器特点
解算器 | 收敛 | 特征 |
---|---|---|
GlobalSearch |
光滑问题的快速收敛到局部最优 | 确定的迭代 |
Gradient-based | ||
自动随机起点 | ||
启发式地删除许多起点 | ||
MultiStart |
光滑问题的快速收敛到局部最优 | 确定的迭代 |
可并行运行;看到如何在全局优化工具箱中使用并行处理 | ||
Gradient-based | ||
随机或确定的起点,或两者的结合 | ||
自动随机起点 | ||
运行所有起始点 | ||
本地求解器的选择:fmincon ,fminunc ,lsqcurvefit ,或lsqnonlin |
||
patternsearch |
证明收敛到局部最优;比基于梯度的求解器慢 | 确定的迭代 |
可并行运行;看到如何在全局优化工具箱中使用并行处理 | ||
没有梯度 | ||
用户提供的起点 | ||
surrogateopt |
有界问题的全局最优证明收敛性比基于梯度的求解器慢;通常在达到函数求值极限或其他极限时停止 | 随机迭代 |
可并行运行;看到如何在全局优化工具箱中使用并行处理 | ||
最好用于耗时的目标函数 | ||
要求约束,接受线性约束和非线性不等式约束 | ||
允许整数约束;看到混合整数优化代理 | ||
没有梯度 | ||
自动起始点或用户提供的点,或两者的组合 | ||
particleswarm |
没有收敛性证明 | 随机迭代 |
可并行运行;看到如何在全局优化工具箱中使用并行处理 | ||
以人群为基础的 | ||
没有梯度 | ||
自动启动填充或用户提供填充,或两者的组合 | ||
只有绑定约束 | ||
遗传算法 |
没有收敛性证明 | 随机迭代 |
可并行运行;看到如何在全局优化工具箱中使用并行处理 | ||
以人群为基础的 | ||
没有梯度 | ||
允许整数约束;看到混合整数遗传算法优化 | ||
自动启动填充或用户提供填充,或两者的组合 | ||
simulannealbnd |
证明了具有极慢冷却时间的有界问题的全局最优收敛性 | 随机迭代 |
没有梯度 | ||
用户提供的起点 | ||
只有绑定约束 |
部分特点说明:
收敛——当开始时距离局部最小值很远时,求解器可能无法收敛到任何解。当在局部最小值附近开始时,基于梯度的求解器快速收敛到局部最小值,以解决光滑问题。
patternsearch
可证明的收敛范围广泛的问题,但收敛速度比梯度求解器慢。这两个遗传算法
而且simulannealbnd
对于某些问题,可能无法在合理的时间内收敛,尽管它们通常是有效的。迭代——求解器迭代寻找解决方案。迭代中的步骤是迭代。有些求解器具有确定性迭代。另一些则使用随机数并进行随机迭代。
梯度——一些求解器在计算迭代时使用估计的或用户提供的导数。其他求解器不使用或估计导数,而只使用目标函数值和约束函数值。
起始点——大多数求解器要求您为优化提供一个起始点,以便获得决策变量的维度。
遗传算法
而且surrogateopt
不需要任何起始点,因为它们将决策变量的维度作为输入或从边界推断维度。这些解算器自动生成一个起点或总体,或者它们接受您提供的一个或多个点。
比较的特点全局优化工具箱到优化工具箱求解器。
解算器 | 收敛 | 特征 |
---|---|---|
fmincon ,fminunc ,fseminf ,lsqcurvefit ,lsqnonlin |
证明了光滑问题的二次收敛到局部最优 | 确定的迭代 |
Gradient-based | ||
用户提供的起点 | ||
fminsearch |
没有收敛的证明-反例存在。 | 确定的迭代 |
没有梯度 | ||
用户提供的起点 | ||
没有约束 | ||
fminbnd |
证明了光滑问题的局部最优收敛性,比二次收敛速度慢。 | 确定的迭代 |
没有梯度 | ||
用户提供的启动时间间隔 | ||
只有一维问题 |
所有这些优化工具箱求解器:
有确定的迭代
需要一个起点或间隔
只寻找一个吸引人的盆地
为什么有些求解器是对象?
GlobalSearch
而且MultiStart
是对象。这对你意味着什么?
您创建一个
GlobalSearch
或MultiStart
对象,然后再运行问题。您可以重用该对象来运行多个问题。
GlobalSearch
而且MultiStart
对象是算法和全局选项的容器。您可以使用这些对象多次运行本地求解器。本地求解器有自己的选项。
有关更多信息,请参见类文档。