主要内容

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

什么是全局优化?

R2026a

局部最优与全局最优

优化是寻找使函数最小化的点的过程。更具体来说:

  • 函数的局部最小值是函数值小于或等于附近点的值,但可能大于远处点的值的点。

  • 全局最小值是函数值小于或等于所有其他可行点的值的点。

一般来说,Optimization Toolbox™ 求解器会找到局部最优。(这个局部最优可以是全局最优。)它们在起点的吸引域中找到了最优。有关详细信息,请参阅吸引域。

相比之下,Global Optimization Toolbox 求解器旨在搜索多个吸引域。它们用各种方式进行搜索:

  • GlobalSearch 和 MultiStart 生成许多起点。然后,它们使用局部求解器在起点的吸引域找到最优解。

  • ga 使用一组起点(称为种群),并从种群中迭代生成更好的点。只要初始种群覆盖几个吸引域,ga 就可以检查几个吸引域。

  • particleswarm 与 ga 一样,使用一组起点。particleswarm 可以同时检查多个吸引域,因为其种群多样化。

  • simulannealbnd 执行随机搜索。一般来说,如果一个点比前一个点更好,simulannealbnd 就会接受它。simulannealbnd 偶尔会接受一个更差的点,以便到达不同的吸引域。

  • patternsearch 在接受其中一个点之前,会查看多个相邻点。如果一些邻近点属于不同的吸引域,patternsearch 本质上会同时在多个吸引域中查找。

  • surrogateopt 首先在边界内进行准随机采样,寻找一个小的目标函数值。surrogateopt 使用优化函数,该函数部分地优先考虑远离评估点的点,这是试图达到全局解。在无法改善当前点之后,surrogateopt 会重置,导致其再次在边界内进行广泛采样。重置是 surrogateopt 寻找全局解的另一种方法。

吸引域

如果目标函数 f(x) 是平滑的,则向量 –∇f(x) 指向 f(x) 下降最快的方向。最陡下降方程,即

ddtx(t)=−∇f(x(t)),

产生一条路径 x(t),当 t 变大时,该路径会走向局部最小值。一般来说,彼此接近的初始值 x(0) 会给出趋向于相同最小值点的最陡下降路径。最速下降的吸引域是导致同一局部最小值的一组初始值。

下图显示了两个一维极小值。图中用不同的线型显示了不同的吸引域,并用箭头显示了最陡下降的方向。对于此图以及后面的图,黑点表示局部最小值。从 x(0) 点开始,每条最陡下降路径都抵达包含 x(0) 的吸引域中的黑点。

下图显示了最陡下降路径在更多维度中如何变得更加复杂。

下图显示了更为复杂的路径和吸引域。

约束可以将一个吸引域分成几个部分。例如,假设在以下约束条件下求 y 的最小值:

  • y ≥ |x|

  • y ≥ 5 – 4(x–2)2.

图中显示了两个吸引域及其最终点。

myabs = @(x) abs(x);
mycurve = @(x) 5 - 4.*(x-2).^2;
myline = @(x) max(myabs(x),mycurve(x));
mybrdr = @(x) 1 + heaviside(x-2);
myarea = @(x,y) heaviside(y - myline(x)).*mybrdr(x);
% myarea = 0 where infeasible, 1 when x < 2, 2 when x > 2
marinv = @(x,y) 1./myarea(x,y); % removes the infeasible region

plot(0,0,"k.",MarkerSize=25,LineWidth=2);
hold on
grid on
plot(11/4,11/4,"k.",MarkerSize=25,LineWidth=2);
fplot(mycurve,"k",[.9 3],LineWidth=2)
fplot(myline,[-2 5],"k",LineWidth=2)
fsurf(marinv,[-2 5 -1,6],EdgeColor="none",FaceAlpha=0.5)
colormap jet

在命令行中输入 plottools 以使用箭头绘制工具添加箭头。

最陡下降路径是向下一直延伸到约束边界的直线。从约束边界开始,最陡下降路径沿边界向下行进。最终点是 (0,0) 或 (11/4,11/4),具体取决于初始 x 值是高于还是低于 2。

另请参阅

主题