Main Content

本页采用了机器翻译。点击此处可查看英文原文。

Global Optimization Toolbox 求解器特性

求解器选择

本节介绍 Global Optimization Toolbox 求解器的特性。本节包括更有效地获得结果的建议。

为了获得更好或更快的解,首先尝试通过设置适当的选项或边界来调整推荐的求解器。如果结果不令人满意,请尝试其他求解器。

需要的解平滑的目标和约束非光滑目标或约束
“期望解决方案”的解释选择求解器来解决平滑问题选择非光滑问题求解器
单一局部解Optimization Toolbox™ 函数;请参阅 优化决策表fminbndpatternsearchfminsearchgaparticleswarmsimulannealbndsurrogateopt
多个局部解GlobalSearchMultiStartpatternsearchgaparticleswarmsimulannealbndsurrogateopt 从多个初始点 x0 或多个初始种群开始
单一全局解GlobalSearchMultiStartpatternsearchparticleswarmgasimulannealbndsurrogateoptpatternsearch, ga, particleswarm, simulannealbnd, surrogateopt
使用并行处理的单一局部解MultiStart、Optimization Toolbox 函数patternsearch, ga, particleswarm, surrogateopt
使用并行处理的多个局部解MultiStartpatternsearchgaparticleswarm 从多个初始点 x0 或多个初始种群开始
使用并行处理的单一全局解MultiStartpatternsearch, ga, particleswarm, surrogateopt

“期望解决方案”的解释

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

f(x)=100 x2(1– x)2– x,

其局部极小值 x1 接近 0,而 x2 接近 1:

 用于生成图窗的代码

极小值位于:

fun = @(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) 是局部最小值。有关详细信息,请参阅局部最优与全局最优。在例子中,x1x2 都是局部解。
多个局部解找到一组局部解。在示例中,局部解的完整集是 {x1,x2}
单一全局解找到目标函数 f(x)为全局最小值的点 x。在示例中,全局解是 x2

选择求解器来解决平滑问题

单一全局解

  1. 首先尝试 GlobalSearch。它最注重寻找全局解,并有一个高效的局部求解器 fmincon

  2. 接下来尝试 MultiStart。它具有高效的局部求解器,并且可以搜索各种各样的起点。

  3. 接下来尝试 patternsearch。由于它不使用梯度,因此效率较低。然而,patternsearch 是强大的,并且比其余的局部求解器更有效。要寻找全局解,请从各种起点启动 patternsearch

  4. 接下来尝试 surrogateoptsurrogateopt 尝试使用最少的目标函数求值来寻找全局解。surrogateopt 每次函数值的开销比大多数其他求解器都要大。surrogateopt 需要有限边界,并且接受整数约束、线性约束和非线性不等式约束。

  5. 如果您的问题无约束或仅有边界约束,请接下来尝试 particleswarm。通常,particleswarm 比其余求解器更有效率,并且可以比 patternsearch 更有效率。

  6. 接下来尝试 ga。它可以处理所有类型的约束,并且通常比 simulannealbnd 更有效。

  7. 最后尝试 simulannealbnd。它可以处理没有约束或有边界约束的问题。simulannealbnd 通常是效率最低的求解器。然而,只要给定一个足够慢的冷却计划,它就能找到一个全局解。

多个局部解

GlobalSearchMultiStart 都提供了多个局部解。获取多个解的语法请请参阅 多个解GlobalSearchMultiStart 在以下特点上有所不同:

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

  • MultiStart 提供局部求解器的选择:fminconfminunclsqcurvefitlsqnonlinGlobalSearch 求解器仅使用 fmincon 作为其局部求解器。

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

  • MultiStart 可以并行运行。请参阅 如何在 Global Optimization Toolbox 中使用并行处理

选择非光滑问题求解器

选择编号最小的适用求解器。对于具有整数约束的问题,使用 ga

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

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

  3. 对于目标函数耗时的问题,请尝试使用 surrogateoptsurrogateopt 寻找全局解。surrogateopt 需要有限边界,并接受整数约束、线性约束和非线性不等式约束。

  4. 接下来尝试使用 fminsearch 来解决低维无界问题。fminsearch 不像 patternsearch 那样通用,并且可能无法收敛。对于低维问题,fminsearch 使用起来很简单,因为它几乎没有调整选项。

  5. 接下来在无界或有界约束问题上尝试 particleswarmparticleswarm 几乎没有支持理论,但通常是一种有效的算法。

  6. 接下来尝试 gaga 几乎没有理论支持,而且通常效率低于 patternsearchparticleswarmga 处理所有类型的约束。gasurrogateopt 是唯一接受整数约束的 Global Optimization Toolbox 求解器。

  7. 对于无界问题或边界问题,最后尝试使用 simulannealbnd。已证明 simulannealbnd 仅对对数冷却计划收敛,这非常慢。simulannealbnd 仅接受边界约束,并且通常效率低于 ga

求解器特征

求解器收敛特征
GlobalSearch对于平滑问题,快速收敛到局部最优解确定性迭代
基于梯度
自动随机起点
启发式地删除许多起点
MultiStart对于平滑问题,快速收敛到局部最优解确定性迭代
可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理
基于梯度
随机或确定性的起点,或两者结合
自动随机起点
运行所有起点
局部求解器的选择:fminconfminunclsqcurvefitlsqnonlin
patternsearch已证明收敛到局部最优;比基于梯度的求解器慢确定性迭代
可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理
无梯度
用户提供的起点
surrogateopt已证明对有界问题可以收敛到全局最优;比基于梯度的求解器慢;通常会在达到函数求值极限或其他极限时停止随机迭代
可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理
最适合用于耗时的目标函数
需要边界约束,接受线性约束和非线性不等式约束
允许整数约束;请参阅 混合整数替代优化
无梯度
自动起点或用户提供的起点,或两者结合
particleswarm没有收敛证明随机迭代
可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理
基于种群
无梯度
自动启动种群或用户提供的种群,或两者结合
仅限边界约束
ga没有收敛证明随机迭代
可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理
基于种群
无梯度
允许整数约束;请参阅 混合整数 ga 优化
自动启动种群或用户提供的种群,或两者结合
simulannealbnd已证明,对于冷却进度非常缓慢的有界问题,可以收敛到全局最优随机迭代
无梯度
用户提供的起点
仅限边界约束

一些特征的解释:

  • 收敛-当求解器远离局部最小值时,它可能无法收敛到任何解。当从局部最小值附近开始时,基于梯度的求解器会快速收敛到局部最小值,从而解决平滑的问题。patternsearch 可证明可以收敛到各种各样的问题,但收敛速度比基于梯度的求解器慢。对于某些问题来说,gasimulannealbnd 都可能无法在合理的时间内收敛,尽管它们通常很有效。

  • 迭代-求解器通过迭代来寻找解。迭代中的各个步骤都是迭代。一些求解器具有确定性迭代。其他人使用随机数并进行随机迭代。

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

  • 起点-大多数求解器都要求您提供优化的起点,以便获得决策变量的维度。gasurrogateopt 不需要任何起点,因为它们将决策变量的维度作为输入或从边界推断维度。这些求解器会自动生成一个起点或种群,或者接受您提供的一个或多个点。

Global Optimization Toolbox 求解器的特性与 Optimization Toolbox 求解器的特性进行比较。

求解器收敛特征
fmincon, fminunc, fseminf, lsqcurvefit, lsqnonlin已证明平滑问题的二次收敛到局部最优解确定性迭代
基于梯度
用户提供的起点
fminsearch没有收敛证明-存在反例。确定性迭代
无梯度
用户提供的起点
无约束
fminbnd已证明,对于平滑问题,其收敛到局部最优解的速度比二次函数慢。确定性迭代
无梯度
用户提供的开始间隔
仅限一维问题

所有这些 Optimization Toolbox 求解器:

  • 具有确定性迭代

  • 需要起点或间隔

  • 仅搜索一个吸引力盆地

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

GlobalSearchMultiStart 是对象。这对您意味着什么?

  • 在运行问题之前,创建一个 GlobalSearchMultiStart 对象。

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

  • GlobalSearchMultiStart 对象是算法和全局选项的容器。您可以使用这些对象多次运行局部求解器。局部求解器有自己的选项。

有关详细信息,请参阅 文档。

相关示例

详细信息