修改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秒。
耗时的目标函数,并行处理显著提高了速度,没有过度影响的结果。