主要内容

全局优化工具箱解算器特点

求解器的选择

本节描述全局优化工具箱解算器的特点。本节包括如何更有效地获得结果的建议。

要获得更好或更快的解决方案,首先尝试调优推荐解决方案通过设置适当的选项或界限。如果结果不令人满意,请尝试其他求解方法。

理想的解决方案 流畅的目标和约束条件 非光滑目标或约束
“期望解决方案”的解释 在平滑问题的求解器之间选择 非光滑问题的求解方法选择
单一的当地的解决方案 优化工具箱™函数;看到优化决策表 fminbndpatternsearchfminsearch遗传算法particleswarmsimulannealbndsurrogateopt
多个当地的解决方案 GlobalSearchMultiStart patternsearch遗传算法particleswarmsimulannealbnd,或surrogateopt从多个起始点开始x0或者来自多个初始种群
单一的全球解决方案 GlobalSearchMultiStartpatternsearchparticleswarm遗传算法simulannealbndsurrogateopt patternsearch遗传算法particleswarmsimulannealbndsurrogateopt
使用并行处理的单一本地解决方案 MultiStart、优化工具箱功能 patternsearch遗传算法particleswarmsurrogateopt
使用并行处理的多个本地解决方案 MultiStart patternsearch遗传算法,或particleswarm从多个起始点开始x0或者来自多个初始种群
使用并行处理的单一全局解决方案 MultiStart patternsearch遗传算法particleswarmsurrogateopt

“期望解决方案”的解释

要理解“期望解决方案”中术语的含义,请考虑下面的示例

fx) = 100x2(1 -x2- - - - - -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其中目标函数fx)为局部极小值。有关更多细节,请参见本地vs.全局优化.在这个例子中,两者都是x1而且x2是局部的解决方案。
多个当地的解决方案 找到一组本地的解决方案。在本例中,完整的本地解决方案集为{x1, x2}
单一的全球解决方案 找到点x其中目标函数fx)为全局极小值。在本例中,全局解为x2

在平滑问题的求解器之间选择

单一的全球解决方案

  1. 试一试GlobalSearch第一。它最专注于寻找一个全球解决方案,并拥有一个高效的本地求解器,fmincon

  2. 试一试MultiStart下一个。它具有高效的局部求解器,可以搜索各种各样的起始点。

  3. 试一试patternsearch下一个。它的效率较低,因为它不使用渐变。然而,patternsearch要寻找一个全局的解决方案,开始吗patternsearch从不同的起点。

  4. 试一试surrogateopt下一个。surrogateopt试图用最少的目标函数评估找到一个全局解决方案。surrogateopt每个函数求值的开销比大多数其他求解器都要高。surrogateopt要求有限界,并接受整数约束、线性约束和非线性不等式约束。

  5. 试一试particleswarm接下来,如果您的问题是无约束的或只有绑定约束。通常情况下,particleswarm是比剩下的求解器更高效,又能比patternsearch

  6. 试一试遗传算法下一个。它可以处理所有类型的约束,通常比simulannealbnd

  7. 试一试simulannealbnd最后的它可以处理没有约束或有约束的问题。simulannealbnd通常是效率最低的求解器。然而,只要降温速度足够慢,它就能找到一个全球性的解决方案。

多个当地的解决方案

GlobalSearch而且MultiStart两者都提供多种本地解决方案。有关获取多个解的语法,请参见多个解决方案GlobalSearch而且MultiStart有以下特点不同:

  • MultiStart可以找到更多的局部极小值。这是因为GlobalSearch拒绝许多生成的起始点(本地解决方案的初始点)。从本质上讲,GlobalSearch只有当它确定一个起点有很好的机会获得全局最小值时,它才接受这个起点。相比之下,MultiStart将所有生成的起始点传递给本地求解器。有关更多信息,请参见GlobalSearch算法

  • MultiStart提供了一个本地求解器的选择:fminconfminunclsqcurvefit,或lsqnonlin.的GlobalSearch解算器只使用fmincon作为它的本地求解器。

  • GlobalSearch使用散点搜索算法生成起始点。相比之下,MultiStart在边界内均匀随机生成点,或者允许您提供自己的点。

  • MultiStart可以并行运行。看到如何在全局优化工具箱中使用并行处理

非光滑问题的求解方法选择

选择数值最小的适用解算器。对于整数约束的问题,使用遗传算法

  1. 使用fminbnd首先是一维有界问题。fminbnd可证明在一维中快速收敛。

  2. 使用patternsearch在任何其他类型的问题上。patternsearch可证明的收敛,并处理所有类型的约束。

  3. 试一试surrogateopt对于有耗时目标函数的问题。surrogateopt寻找全局解决方案。surrogateopt要求有限界,并接受整数约束、线性约束和非线性不等式约束。

  4. 试一试fminsearch下一个是低维无界问题。fminsearch是不是像一般一样patternsearch也可能无法收敛。对于低维问题,fminsearch使用起来很简单,因为它只有很少的调优选项。

  5. 试一试particleswarm接下来讲无界或有界约束问题。particleswarm几乎没有理论支持,但往往是一个有效的算法。

  6. 试一试遗传算法下一个。遗传算法几乎没有理论支持,效率往往低于patternsearchparticleswarm遗传算法处理所有类型的约束。遗传算法而且surrogateopt是唯一的全局优化工具箱接受整数约束的求解器。

  7. 试一试simulannealbnd最后是无界问题,或者有界问题。simulannealbnd可证明的收敛只对对数冷却计划,这是非常慢。simulannealbnd只接受有限的约束,并且通常比遗传算法

解算器特点

解算器 收敛 特征
GlobalSearch 光滑问题的快速收敛到局部最优 确定的迭代
Gradient-based
自动随机起点
启发式地删除许多起点
MultiStart 光滑问题的快速收敛到局部最优 确定的迭代
可并行运行;看到如何在全局优化工具箱中使用并行处理
Gradient-based
随机或确定的起点,或两者的结合
自动随机起点
运行所有起始点
本地求解器的选择:fminconfminunclsqcurvefit,或lsqnonlin
patternsearch 证明收敛到局部最优;比基于梯度的求解器慢 确定的迭代
可并行运行;看到如何在全局优化工具箱中使用并行处理
没有梯度
用户提供的起点
surrogateopt 有界问题的全局最优证明收敛性比基于梯度的求解器慢;通常在达到函数求值极限或其他极限时停止 随机迭代
可并行运行;看到如何在全局优化工具箱中使用并行处理
最好用于耗时的目标函数
要求约束,接受线性约束和非线性不等式约束
允许整数约束;看到混合整数优化代理
没有梯度
自动起始点或用户提供的点,或两者的组合
particleswarm 没有收敛性证明 随机迭代
可并行运行;看到如何在全局优化工具箱中使用并行处理
以人群为基础的
没有梯度
自动启动填充或用户提供填充,或两者的组合
只有绑定约束
遗传算法 没有收敛性证明 随机迭代
可并行运行;看到如何在全局优化工具箱中使用并行处理
以人群为基础的
没有梯度
允许整数约束;看到混合整数遗传算法优化
自动启动填充或用户提供填充,或两者的组合
simulannealbnd 证明了具有极慢冷却时间的有界问题的全局最优收敛性 随机迭代
没有梯度
用户提供的起点
只有绑定约束

部分特点说明:

  • 收敛——当开始时距离局部最小值很远时,求解器可能无法收敛到任何解。当在局部最小值附近开始时,基于梯度的求解器快速收敛到局部最小值,以解决光滑问题。patternsearch可证明的收敛范围广泛的问题,但收敛速度比梯度求解器慢。这两个遗传算法而且simulannealbnd对于某些问题,可能无法在合理的时间内收敛,尽管它们通常是有效的。

  • 迭代——求解器迭代寻找解决方案。迭代中的步骤是迭代。有些求解器具有确定性迭代。另一些则使用随机数并进行随机迭代。

  • 梯度——一些求解器在计算迭代时使用估计的或用户提供的导数。其他求解器不使用或估计导数,而只使用目标函数值和约束函数值。

  • 起始点——大多数求解器要求您为优化提供一个起始点,以便获得决策变量的维度。遗传算法而且surrogateopt不需要任何起始点,因为它们将决策变量的维度作为输入或从边界推断维度。这些解算器自动生成一个起点或总体,或者它们接受您提供的一个或多个点。

比较的特点全局优化工具箱到优化工具箱求解器。

解算器 收敛 特征
fminconfminuncfseminflsqcurvefitlsqnonlin 证明了光滑问题的二次收敛到局部最优 确定的迭代
Gradient-based
用户提供的起点
fminsearch 没有收敛的证明-反例存在。 确定的迭代
没有梯度
用户提供的起点
没有约束
fminbnd 证明了光滑问题的局部最优收敛性,比二次收敛速度慢。 确定的迭代
没有梯度
用户提供的启动时间间隔
只有一维问题

所有这些优化工具箱求解器:

  • 有确定的迭代

  • 需要一个起点或间隔

  • 只寻找一个吸引人的盆地

为什么有些求解器是对象?

GlobalSearch而且MultiStart是对象。这对你意味着什么?

  • 您创建一个GlobalSearchMultiStart对象,然后再运行问题。

  • 您可以重用该对象来运行多个问题。

  • GlobalSearch而且MultiStart对象是算法和全局选项的容器。您可以使用这些对象多次运行本地求解器。本地求解器有自己的选项。

有关更多信息,请参见文档。

相关的例子

更多关于

Baidu
map