Global Optimization Toolbox 求解器特性
求解器选择
本节介绍 Global Optimization Toolbox 求解器的特性。本节包括更有效地获得结果的建议。
为了获得更好或更快的解,首先尝试通过设置适当的选项或边界来调整推荐的求解器。如果结果不令人满意,请尝试其他求解器。
| 需要的解 | 平滑的目标和约束 | 非光滑目标或约束 |
|---|---|---|
| “期望解”的解释 | 选择求解器来解决平滑问题 | 选择非光滑问题求解器 |
| 单一局部解 | Optimization Toolbox™ 函数;请参阅 优化决策表 | fminbnd, patternsearch, fminsearch, ga, particleswarm, simulannealbnd, surrogateopt |
| 多个局部解 | GlobalSearch, MultiStart | patternsearch、ga、particleswarm、simulannealbnd 或 surrogateopt 从多个初始点 x0 或多个初始种群开始 |
| 单一全局解 | GlobalSearch, MultiStart, patternsearch, particleswarm, ga, simulannealbnd, surrogateopt | patternsearch, ga, particleswarm, simulannealbnd, surrogateopt |
| 使用并行处理的单一局部解 | MultiStart、Optimization Toolbox 函数 | patternsearch, ga, particleswarm, surrogateopt |
| 使用并行处理的多个局部解 | MultiStart | patternsearch、ga 或 particleswarm 从多个初始点 x0 或多个初始种群开始 |
| 使用并行处理的单一全局解 | MultiStart | patternsearch, 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) 是局部最小值。有关详细信息,请参阅局部最优与全局最优。在例子中,x1 和 x2 都是局部解。 |
| 多个局部解 | 找到一组局部解。在示例中,局部解的完整集是 {x1,x2}。 |
| 单一全局解 | 找到目标函数 x(f)为全局最小值的点 x。在示例中,全局解是 x2。 |
选择求解器来解决平滑问题
单一全局解
首先尝试
GlobalSearch。它最注重寻找全局解,并有一个高效的局部求解器fmincon。接下来尝试
MultiStart。它具有高效的局部求解器,并且可以搜索各种各样的起点。接下来尝试
patternsearch。由于它不使用梯度,因此效率较低。然而,patternsearch是强大的,并且比其余的局部求解器更有效。要寻找全局解,请从各种起点启动patternsearch。接下来尝试
surrogateopt。surrogateopt尝试使用最少的目标函数求值来寻找全局解。surrogateopt每次函数值的开销比大多数其他求解器都要大。surrogateopt需要有限边界,并且接受整数约束、线性约束和非线性不等式约束。如果您的问题无约束或仅有边界约束,请接下来尝试
particleswarm。通常,particleswarm比其余求解器更有效率,并且可以比patternsearch更有效率。接下来尝试
ga。它可以处理所有类型的约束,并且通常比simulannealbnd更有效。最后尝试
simulannealbnd。它可以处理没有约束或有边界约束的问题。simulannealbnd通常是效率最低的求解器。然而,只要给定一个足够慢的冷却计划,它就能找到一个全局解。
多个局部解
GlobalSearch 和 MultiStart 都提供了多个局部解。获取多个解的语法请请参阅 多个解。GlobalSearch 和 MultiStart 在以下特点上有所不同:
MultiStart可以找到更多局部极小值。这是因为GlobalSearch拒绝了许多生成的起点(局部解的初始点)。本质上,只有当GlobalSearch确定该点很有可能获得全局最小值时,它才会接受该起点。相比之下,MultiStart将所有生成的起点传递给局部求解器。有关详细信息,请参阅GlobalSearch 算法。MultiStart提供局部求解器的选择:fmincon、fminunc、lsqcurvefit或lsqnonlin。GlobalSearch求解器仅使用fmincon作为其局部求解器。GlobalSearch使用散射搜索算法来生成起点。相比之下,MultiStart在边界内均匀随机地生成点,或者允许您提供自己的点。MultiStart可以并行运行。请参阅 如何在 Global Optimization Toolbox 中使用并行处理。
选择非光滑问题求解器
选择编号最小的适用求解器。对于具有整数约束的问题,使用 ga。
仅在一维有界问题上首先使用
fminbnd。fminbnd可证明在一维中快速收敛。在任何其他类型的问题上使用
patternsearch。patternsearch可证明收敛,并处理所有类型的约束。对于目标函数耗时的问题,请尝试使用
surrogateopt。surrogateopt寻找全局解。surrogateopt需要有限边界,并接受整数约束、线性约束和非线性不等式约束。接下来尝试使用
fminsearch来解决低维无界问题。fminsearch不像patternsearch那样通用,并且可能无法收敛。对于低维问题,fminsearch使用起来很简单,因为它几乎没有调整选项。接下来在无界或有界约束问题上尝试
particleswarm。particleswarm几乎没有支持理论,但通常是一种有效的算法。接下来尝试
ga。ga几乎没有理论支持,而且通常效率低于patternsearch或particleswarm。ga处理所有类型的约束。ga和surrogateopt是唯一接受整数约束的 Global Optimization Toolbox 求解器。对于无界问题或边界问题,最后尝试使用
simulannealbnd。已证明simulannealbnd仅对对数冷却计划收敛,这非常慢。simulannealbnd仅接受边界约束,并且通常效率低于ga。
求解器特征
| 求解器 | 收敛 | 特征 |
|---|---|---|
GlobalSearch | 对于平滑问题,快速收敛到局部最优解 | 确定性迭代 |
| 基于梯度 | ||
| 自动随机起点 | ||
| 启发式地删除许多起点 | ||
MultiStart | 对于平滑问题,快速收敛到局部最优解 | 确定性迭代 |
| 可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理 | ||
| 基于梯度 | ||
| 随机或确定性的起点,或两者结合 | ||
| 自动随机起点 | ||
| 运行所有起点 | ||
局部求解器的选择:fmincon、fminunc、lsqcurvefit 或 lsqnonlin | ||
patternsearch | 已证明收敛到局部最优;比基于梯度的求解器慢 | 确定性迭代 |
| 可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理 | ||
| 无梯度 | ||
| 用户提供的起点 | ||
surrogateopt | 已证明对有界问题可以收敛到全局最优;比基于梯度的求解器慢;通常会在达到函数求值极限或其他极限时停止 | 随机迭代 |
| 可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理 | ||
| 最适合用于耗时的目标函数 | ||
| 需要边界约束,接受线性约束和非线性不等式约束 | ||
| 允许整数约束;请参阅 混合整数替代优化 | ||
| 无梯度 | ||
| 自动起点或用户提供的起点,或两者结合 | ||
particleswarm | 没有收敛证明 | 随机迭代 |
| 可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理 | ||
| 基于种群 | ||
| 无梯度 | ||
| 自动启动种群或用户提供的种群,或两者结合 | ||
| 仅限边界约束 | ||
ga | 没有收敛证明 | 随机迭代 |
| 可以并行运行;请参阅 如何在 Global Optimization Toolbox 中使用并行处理 | ||
| 基于种群 | ||
| 无梯度 | ||
| 允许整数约束;请参阅 混合整数 ga 优化 | ||
| 自动启动种群或用户提供的种群,或两者结合 | ||
simulannealbnd | 已证明,对于冷却进度非常缓慢的有界问题,可以收敛到全局最优 | 随机迭代 |
| 无梯度 | ||
| 用户提供的起点 | ||
| 仅限边界约束 |
一些特征的解释:
收敛-当求解器远离局部最小值时,它可能无法收敛到任何解。当从局部最小值附近开始时,基于梯度的求解器会快速收敛到局部最小值,从而解决平滑的问题。
patternsearch可证明可以收敛到各种各样的问题,但收敛速度比基于梯度的求解器慢。对于某些问题来说,ga和simulannealbnd都可能无法在合理的时间内收敛,尽管它们通常很有效。迭代-求解器通过迭代来寻找解。迭代中的各个步骤都是迭代。一些求解器具有确定性迭代。其他人使用随机数并进行随机迭代。
梯度-一些求解器在计算迭代时使用估计的或用户提供的导数。其他求解器不使用或估计导数,而仅使用目标和约束函数值。
起点-大多数求解器都要求您提供优化的起点,以便获得决策变量的维度。
ga和surrogateopt不需要任何起点,因为它们将决策变量的维度作为输入或从边界推断维度。这些求解器会自动生成一个起点或种群,或者接受您提供的一个或多个点。
将 Global Optimization Toolbox 求解器的特性与 Optimization Toolbox 求解器的特性进行比较。
| 求解器 | 收敛 | 特征 |
|---|---|---|
fmincon, fminunc, fseminf, lsqcurvefit, lsqnonlin | 已证明平滑问题的二次收敛到局部最优解 | 确定性迭代 |
| 基于梯度 | ||
| 用户提供的起点 | ||
fminsearch | 没有收敛证明-存在反例。 | 确定性迭代 |
| 无梯度 | ||
| 用户提供的起点 | ||
| 无约束 | ||
fminbnd | 已证明,对于平滑问题,其收敛到局部最优解的速度比二次函数慢。 | 确定性迭代 |
| 无梯度 | ||
| 用户提供的开始间隔 | ||
| 仅限一维问题 |
所有这些 Optimization Toolbox 求解器:
具有确定性迭代
需要起点或间隔
仅搜索一个吸引力盆地
为什么有些求解器是对象?
GlobalSearch 和 MultiStart 是对象。这对您意味着什么?
在运行问题之前,创建一个
GlobalSearch或MultiStart对象。您可以重复使用该对象来运行多个问题。
GlobalSearch和MultiStart对象是算法和全局选项的容器。您可以使用这些对象多次运行局部求解器。局部求解器有自己的选项。
有关详细信息,请参阅 类 文档。
