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)
该函数有六个局部极小和两个全局极小。
跑surrogateopt
关于使用问题'surrogateoptplot'
在该区域绘图功能通过在每个方向上有界的[-2.1,2.1]
。要了解'surrogateoptplot'
情节,看解读surrogateoptplot。
RNG默认磅= [-2.1,-2.1];UB = -LB;OPTS = optimoptions('surrogateopt','PlotFcn','surrogateoptplot');[XS,fvals,EFLAGS,产出] = surrogateopt(sixmin,LB,UB,OPTS);
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
设置为较小的值MinSurrogatePoints
看选项的变化是否有助于解决者达到全球最低更快。
opts.MinSurrogatePoints = 4;[XS2,fvals2,eflags2,outputs2] = surrogateopt(sixmin,LB,UB,OPTS);
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
较小MinSurrogatePoints
选项不会明显改变解算器行为。
尝试设置的较大值MinSampleDistance
选项。
opts.MinSampleDistance = 0.05;[XS3,fvals3,eflags3,outputs3] = surrogateopt(sixmin,LB,UB,OPTS);
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
更改MinSampleDistance
选项对求解的影响很小。此设置导致代孕更频繁复位,使最好的目标函数比以前略高(差)。
尝试使用并行处理。时间的执行具有和不具有对所述并行处理伛偻
功能,这是的一个变体sixmin
功能。为了模拟一个耗时的功能,伛偻
功能具有用于每个功能评价一秒的添加暂停。
类型伛偻
函数y =驼峰(X)Y =(4 * X(1)^ 2 - 2.1 *×(1)^ 4 + X(1)^ 6/3 ... + X(1)* X(2) -4 * X(2)^ 2 + 4 * X(2)^ 4);暂停(1)
抽动OPTS = optimoptions('surrogateopt','UseParallel',真正,'PlotFcn','surrogateoptplot');[XS4,fvals4,eflags4,outputs4] = surrogateopt(@驼峰,LB,UB,OPTS);
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
TOC
经过时间是43.466489秒。
时值上串行同样的问题运行求解。
opts.UseParallel = FALSE;抽动[XS5,fvals5,eflags5,outputs5] = surrogateopt(@驼峰,LB,UB,OPTS);
Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
TOC
经过时间是238.951879秒。
耗时的目标函数,并行处理显著提高了速度,而不过度影响的结果。