主要内容

修改surrogateopt选项

这个例子展示了如何寻找全球最低运行surrogateopt在一个二维问题,有6个局部最小值。然后的例子展示了如何修改一些选项更有效地搜索。

定义目标函数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)

这个函数有六个局部最小值和两个全局最小值。

运行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函数。模拟一个耗时的函数,骑在骆驼背上的函数有一个额外的停顿一秒为每个函数的评估。

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

Surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
toc
运行时间是43.142697秒。

一次解决串行当运行在相同的问题。

选择。UseParallel = false;(xs5抽搐,fvals5、eflags5 outputs5] = surrogateopt (@camelback、磅、乌兰巴托、选择);

Surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
toc
运行时间是227.968689秒。

耗时的目标函数,并行处理显著提高了速度,没有过度影响的结果。

另请参阅

相关的话题