除了轮询网格点之外,模式搜索算法还可以在每次迭代中执行一个可选的步骤,称为搜索。在每次迭代中,搜索步骤对当前点应用另一种优化方法。如果此搜索不能改进当前点,则执行轮询步骤。
中所描述的问题的搜索方法的使用线性约束问题。要设置示例,请在MATLAB中输入以下命令®提示定义初始点和约束条件。
x0 = [2 1 0 9 1 0];Aineq = [-8 7 3 -4 9 0];bineq = 7;Aeq = [7 1 8 3 3 3;5 0 -5 1 -5 8;-2 -6 7 1 1 9;1 -1 2 -2 3 -3];beq = [84 62 65 1];
然后在优化app中输入如下图所示的设置。
相比之下,单击开始在不使用搜索方法的情况下运行示例。这将显示如下图所示的图形。
要查看使用搜索方法的效果,请选择MADS正基2N
在里面搜索方法场搜索选项。
这将搜索方法设置为使用的模式搜索MADS正基2N
。然后单击开始来运行模式搜索。这将显示以下图形。
注意,使用搜索方法减少了总函数求值—从1462减少到1256—并将迭代次数从106减少到97。
使用命令行函数运行这个问题:
x0 = [2 1 0 9 1 0];Aineq = [-8 7 3 -4 9 0];bineq = 7;Aeq = [7 1 8 3 3 3;5 0 -5 1 -5 8;-2 -6 7 1 1 9;1 -1 2 -2 3 -3];beq = [84 62 65 1];选择= optimoptions (“patternsearch”,…“PlotFcn”, {@psplotbestf, @psplotfuncount});[x, fval] = patternsearch (@lincontest7 x0,…Aineq,bineq,AEQ,BEQ,[],[],[],选项);
要使用MADS搜索方法,请更改SearchFcn
选项。
选项。搜索Fcn = @MADSPositiveBasis2N; [x,fval] = patternsearch(@lincontest7,x0,…Aineq,bineq,AEQ,BEQ,[],[],[],选项);
patternsearch
需要很长的时间,以尽量减少的ROSENBROCK的功能。该功能
罗森布罗克的函数在求解一个约束非线性问题,基于求解器(优化工具箱)。
创建目标函数。
dejong2fcn = @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;
集patternsearch
选项MaxFunctionEvaluations
=5000
和MaxIterations
=2000
:
OPTS = optimoptions( 'patternsearch', 'MaxFunctionEvaluations',5000 'MaxIterations',2000);
运行patternsearch
从(-1.9 - 2)
:
[x,函数宏指令,eflag,输出]= patternsearch (dejong2fcn,……[-1.9, 2]、[][],[],[],[],[],[],选择);
超过函数计算的最大数目:增加选项。maxfunctionevaluate。
feval
函数宏指令= 0.8560
优化没有完成,结果与0的最优值不是很接近。
设置要使用的选项fminsearch
作为搜索方法:
选择= optimoptions(‘patternsearch’,选择‘SearchFcn’,@searchneldermead);
重新运行优化,结果更好:
(x2, feval2 eflag2 output2] = patternsearch (dejong2fcn,……[-1.9, 2]、[][],[],[],[],[],[],选择);
终止优化:网格尺寸小于选项。网格容差。
feval2
feval2 = 4.0686 e - 010
fminsearch
不像默认的GPS那样与坐标方向紧密相连patternsearch
调查方法。因此,fminsearch
在越来越接近最低的ROSENBROCK的功能更有效。添加在这种情况下,搜索方法是有效的。