主要内容

修改surrogateopt选项

这个例子展示了如何通过运行搜索全局最小值surrogateopt在一个有六个局部极小值的二维问题上。然后,该示例展示了如何修改一些选项以更有效地搜索。

定义目标函数sixmin如下。

sixmin = @ (x) (4 * x(: 1)。^ 2 - 2.1 * x(: 1)。^ 4 + x(: 1)。^ 6/3...+ x(:,1).*x(:,2) - 4*x(:,2)。^ 2 + 4 * x (:, 2) ^ 4);

绘制函数。

(X, Y) = meshgrid (linspace (-2.1, 2.1), linspace (-1.2, 1.2);Z = sixmin ([X (:), Y (:)));Z =重塑(Z,大小(X));冲浪(X, Y, Z,“EdgeColor”“没有”)视图(-139、31)

该函数有6个局部极小值和2个全局极小值。

运行surrogateopt在这个问题上“surrogateoptplot”在每个方向为。的区域内绘制函数[-2.1, 2.1].了解“surrogateoptplot”情节,看到解释surrogateoptplot

rng默认的磅= [-2.1,-2.1];乌兰巴托=磅;选择= optimoptions (“surrogateopt”“PlotFcn”“surrogateoptplot”);[x, fvals eflags、输出]= surrogateopt (sixmin、磅、乌兰巴托、选择);

Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。

的设置较小的值MinSurrogatePoints选项,查看更改是否有助于求解器更快地达到全局最小值。

选择。MinSurrogatePoints = 4;[xs2, fvals2 eflags2 outputs2] = surrogateopt (sixmin、磅、乌兰巴托、选择);

Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。

较小的MinSurrogatePoints选项不会明显改变求解器的行为。

尝试设置一个更大的值MinSampleDistance选择。

选择。MinSampleDistance = 0.05;[xs3, fvals3 eflags3 outputs3] = surrogateopt (sixmin、磅、乌兰巴托、选择);

Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。

改变了MinSampleDistance选项对求解器有很小的影响。此设置会导致代理程序更频繁地重置,并导致最佳目标函数比以前略高(更差)一些。

尝试使用并行处理。使用或不使用并行处理的执行时间骑在骆驼背上的函数的变体sixmin函数。为了模拟一个耗时的函数骑在骆驼背上的函数的每个函数求值都增加了1秒的暂停时间。

类型骑在骆驼背上的
函数y =骑在骆驼背上的(x) y = x (4 * (1) ^ 2 - 2.1 * (1) ^ 4 + x(1) ^ 6/3……x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4;暂停(1)
Tic options = optimoptions(“surrogateopt”“UseParallel”,真的,“PlotFcn”“surrogateoptplot”);[xs4, fvals4 eflags4 outputs4] = surrogateopt (@camelback、磅、乌兰巴托、选择);

Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
toc
运行时间为43.142697秒。

时间求解器运行时,同一问题在串行。

选择。UseParallel = false;Tic [xs5,fvals5,eflags5,outputs5] = surrogateopt(@camelback,lb,ub,opts);

Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
toc
运行时间为227.968689秒。

对于耗时的目标函数,并行处理显著地提高了速度,而不会过度影响结果。

另请参阅

相关的话题