代理选择
选择权此示例演示如何通过运行代理选择
在一个有六个局部极小值的二维问题上。这个例子展示了如何修改一些选项以更有效地搜索。
定义目标函数六分钟
具体如下。
六分钟=@(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秒。
对于耗时的目标函数,并行处理显著提高了速度,而不会过度影响结果。