搜索和民意调查

使用搜索方法

除了轮询网点之外,模式搜索算法还可以在每个迭代中执行可选步骤搜索。在每次迭代时,搜索步骤将另一个优化方法应用于当前点。如果此搜索没有提高当前点,则执行轮询步骤。

以下示例说明了在中描述的问题上使用搜索方法线性约束的问题。要设置示例,请在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];

然后在优化应用程序中输入以下数字中显示的设置。

进行比较,请单击开始在没有搜索方法的情况下运行该示例。这显示了下图所示的图。

要查看使用搜索方法的效果,请选择疯狂积极的基础2n在里面搜索方法领域搜索选项。

这将搜索方法设置为使用模式的模式搜索疯狂积极的基础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,@ psplotfuncound});[x,fval] = patternsearch(@ lincontest7,x0,......AINEQ,BINEQ,AEQ,BEQ,[],[],[],选项);

要使用Mads搜索方法,请更改searchfcn.选项。

选项.searchfcn = @ 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

rosenbrock的功能描述并绘制解决约束的非线性问题,基于求解器(优化工具箱)。

  1. 创建目标函数。

    dejong2fcn = @(x)100 *(x(2)-x(1)^ 2)^ 2 +(1-x(1))^ 2;
  2. PatternSearch.选择MaxFunctionEvaluations.=5000最大=2000年

    opts = Optimoptions('patternsearch','maxfunctionevaluations',5000,'maxtations',2000);
  3. 跑步PatternSearch.从...开始[-1.9 2]

    [x,feval,eflag,输出] = patternsearch(dejong2fcn,... [-1.9,2],[],[],[],[],[],[],[],选择);
    超出了最大函数评估数:增加options.maxfunctionevaluations。
    Feval.
    Feval = 0.8560.

    优化没有完成,结果不是非常接近0的最佳值0。

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

    opts = Optimoptions('patternsearch',选择,'searchfcn',@ searchbeldermead);
  5. 重新运行优化,结果要好得多:

    [x2,feval2,eflag2,输出2] = patternsearch(dejong2fcn,... [-1.9,2],[],[],[],[],[],[],[],选择);
    优化终止:网格尺寸小于options.meshtolerance。
    Feval2.
    Feval2 = 4.0686E-010

fminsearch.与坐标指示不如默认GPS一样紧密相关PatternSearch.民意调查方法。所以,fminsearch.更高效地接近rosenbrock的功能。在这种情况下添加搜索方法是有效的。

相关话题