搜索和投票

使用搜索方法

除了轮询网格点之外,模式搜索算法还可以在每次迭代中执行一个可选的步骤,称为搜索。在每次迭代中,搜索步骤对当前点应用另一种优化方法。如果此搜索不能改进当前点,则执行轮询步骤。

中所描述的问题的搜索方法的使用线性约束问题。要设置示例,请在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的功能。该功能 f ( x ) = 100 ( x 2 x 1 2 ) 2 + ( 1 x 1 ) 2

罗森布罗克的函数在求解一个约束非线性问题,基于求解器(优化工具箱)。

  1. 创建目标函数。

    dejong2fcn = @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;
  2. patternsearch选项MaxFunctionEvaluations=5000MaxIterations=2000:

    OPTS = optimoptions( 'patternsearch', 'MaxFunctionEvaluations',5000 'MaxIterations',2000);
  3. 运行patternsearch(-1.9 - 2):

    [x,函数宏指令,eflag,输出]= patternsearch (dejong2fcn,……[-1.9, 2]、[][],[],[],[],[],[],选择);
    超过函数计算的最大数目:增加选项。maxfunctionevaluate。
    feval
    函数宏指令= 0.8560

    优化没有完成,结果与0的最优值不是很接近。

  4. 设置要使用的选项fminsearch作为搜索方法:

    选择= optimoptions(‘patternsearch’,选择‘SearchFcn’,@searchneldermead);
  5. 重新运行优化,结果更好:

    (x2, feval2 eflag2 output2] = patternsearch (dejong2fcn,……[-1.9, 2]、[][],[],[],[],[],[],选择);
    终止优化:网格尺寸小于选项。网格容差。
    feval2
    feval2 = 4.0686 e - 010

fminsearch不像默认的GPS那样与坐标方向紧密相连patternsearch调查方法。因此,fminsearch在越来越接近最低的ROSENBROCK的功能更有效。添加在这种情况下,搜索方法是有效的。

相关话题