主要内容

修改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. maxfunctionevaluments '设置的函数计算限制。

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

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

Surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数计算限制。

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

的值设置较大的值MinSampleDistance选择。

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

Surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数计算限制。

改变了MinSampleDistance选项对求解器的影响很小。此设置导致代理重置次数增加,并导致最佳目标函数比以前略高(更差)。

尝试使用并行处理。的并行处理和不并行处理的执行时间骑在骆驼背上的函数的变体sixmin函数。要模拟耗时的函数,可以使用骑在骆驼背上的函数在每次求值时都增加了一秒的暂停。

类型骑在骆驼背上的
函数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 opts = optimoptions(“surrogateopt”“UseParallel”,真的,“PlotFcn”“surrogateoptplot”);[xs4, fvals4 eflags4 outputs4] = surrogateopt (@camelback、磅、乌兰巴托、选择);

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

当连续运行同一问题时,对求解器进行计时。

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

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

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

另请参阅

相关的话题

Baidu
map