主要内容

修改代理选择选择权

此示例演示如何通过运行代理选择在一个有六个局部极小值的二维问题上。这个例子展示了如何修改一些选项以更有效地搜索。

定义目标函数六分钟具体如下。

六分钟=@(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=六分钟([X(:),Y(:)]);Z=重塑(Z,尺寸(X));冲浪(X,Y,Z,“EdgeColor”,“没有”)视图(-139,31)

该函数有六个局部极小值和两个全局极小值。

代理选择关于使用“代理Optplot”在每个方向上以[-2.1,2.1].了解“代理Optplot”情节,见解释代理optplot.

rng违约lb=[-2.1,-2.1];ub=-lb;opts=options(“代理选择”,“PlotFcn”,“代理Optplot”);[xs,fvals,eflags,outputs]=代理选项(六分钟,磅,磅,磅,选项);

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。

为该值设置一个较小的值明苏尔罗格点选项以查看更改是否有助于解算器更快地达到全局最小值。

opts.MinSurrogatePoints=4;[xs2,fvals2,eflags2,outputs2]=代理选项(六分钟,磅,磅,磅,选项);

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。

较小的明苏尔罗格点选项不会明显更改解算器行为。

尝试设置一个更大的最小距离选项

opts.MinSampleDistance=0.05;[xs3,fvals3,eflags3,outputs3]=代理选项(六分钟,磅,磅,磅,选项);

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。

改变最小距离选项对解算器的影响很小。此设置会导致代理项更频繁地重置,并导致最佳目标函数比以前稍高(更差)。

尝试使用并行处理。在有并行处理和无并行处理的情况下对执行进行计时驼背函数,它是六分钟作用要模拟耗时的函数,请使用驼背对于每个函数求值,函数都有一秒钟的额外暂停。

类型驼背
函数y=camelback(x)y=(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);暂停(1)
tic opts=最佳选项(“代理选择”,“使用并行”符合事实的“PlotFcn”,“代理Optplot”); [xs4,fvals4,eflags4,outputs4]=代理选项(@camelback,lb,ub,opts);

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
toc
运行时间为43.142697秒。

当以串行方式对同一问题运行时,计算解算器的时间。

opts.usepallel=false;tic[xs5,fvals5,eflags5,outputs5]=代理选项(@camelback,lb,ub,opts);

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
toc
运行时间为227.968689秒。

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

另见

相关话题