主要内容

设置网格选项

网格伸缩

这个网格扩展因子网状收缩因子选项控制每次迭代时网格大小的扩展或收缩量网格扩展因子价值2.,模式搜索将网格大小乘以2.每次成功轮询后。默认为网状收缩因子价值0.5,模式搜索将网格大小乘以0.5每次投票失败后。

通过设置,可以在阵列搜索期间查看网格大小的扩展和收缩@psplotmesh大小作为绘图仪选项。若要在命令行中显示网格大小和目标函数的值,请设置陈列选择“国际热核实验堆”.

例如,设置中描述的问题使用patternsearch和optimizeliveeditor任务的约束最小化详情如下:

  1. 在命令行中输入以下内容:

    x0=[2 1 0 9 1 0];Aineq=[-8 7 3-4 9 0];bineq=7;Aeq=[7 1 8 3 3;5 0-5 1-5 8;-2-6 7 1 9;1-1 2-2 3-3];beq=[84 62 65 1];
  2. 创建选项以使用GSSPositiveBasis2N轮询方法,给出迭代显示,并绘制网格大小。

    选项=最佳选项(“模式搜索”,...“PollMethod”,“GSSPositiveBasis2N”,...“PlotFcn”,@psplotmeshsize,...“显示”,“国际热核实验堆”);
  3. 运行优化。

    [x,fval,exitflag,output]=patternsearch(@lin7,x0,...Aineq、bineq、Aeq、beq、[]、[]、[]、选项);

要更清楚地查看网格大小的变化,请更改Y-轴到对数的比例如下所示:

  1. 选择轴特性编辑绘图窗口中的菜单。

  2. 在属性编辑器中,选择统治者标签。

  3. 设置YScale日志.

在MATLAB中更新这些设置®属性编辑器在下图中显示了绘图。

前5次迭代将导致成功的轮询,因此在此期间网格大小将稳步增加。通过查看命令行显示,您可以看到第一次不成功的轮询发生在迭代6中。

Iter f-count f(x)网格大小方法0 1 2273.76 1 1 2 2251.69 2成功投票2 3 2209.86 4成功投票3 4 2135.43 8成功投票4 5 2023.48 16成功投票5 6 1947.23 32成功投票6 15 1947.23 16优化网格

请注意,在成功的第5次迭代中,下一次迭代的网格大小将加倍。但在不成功的第6次迭代中,网格大小将加倍0.5.

看看如何网格扩展因子网状收缩因子影响模式搜索,设置网格扩展因子3设定网状收缩因子2/3.

选项=最佳选项(选项,“网状扩张因子”,3.0,...“网状收缩因子”,2/3); [x,fval,exitflag,output]=patternsearch(@lin7,x0,...Aineq、bineq、Aeq、beq、[]、[]、[]、选项);

最终目标函数值与以前的设置大致相同,但解算器需要更长的时间才能到达该点。

当您更改对象的缩放比例时Y-轴到对数,网格大小图显示如下图所示。

请注意,随着时间的推移,网格大小增加得更快网格扩展因子着手3,与默认值相比2,并随网状收缩因子着手2/3,与默认值相比0.5.

网状加速器

通过减少达到网格公差所需的迭代次数,网格加速器可以使模式搜索更快地收敛到最佳点。当网格大小低于某个值时,模式搜索会将网格大小缩小一个小于网状收缩因子网格加速器仅适用于GPS和GSS算法。

笔记

为获得最佳结果,请将网格加速器用于目标函数在最佳点附近不是太陡的问题,否则可能会失去一些精度。对于可微问题,这意味着导数的绝对值在解附近不是太大。

要使用网格加速器,请设置加速度计选择符合事实的.

例如,设置中描述的问题使用patternsearch和optimizeliveeditor任务的约束最小化详情如下:

  1. 在命令行中输入以下内容:

    x0=[2 1 0 9 1 0];Aineq=[-8 7 3-4 9 0];bineq=7;Aeq=[7 1 8 3 3;5 0-5 1-5 8;-2-6 7 1 9;1-1 2-2 3-3];beq=[84 62 65 1];
  2. 创建选项,包括网格加速器。

    选项=最佳选项(“模式搜索”,...“PollMethod”,“GSSPositiveBasis2N”,...“显示”,“国际热核实验堆”,“AccelerateMesh”,对);
  3. 运行优化。

    [x,fval,exitflag,output]=patternsearch(@lin7,x0,...Aineq、bineq、Aeq、beq、[]、[]、[]、选项);

模式搜索与未启用网格加速器时的84次迭代相比,在78次迭代中完成。可以在迭代显示中看到网格加速器的效果。使用和不使用网格加速运行示例。网格大小在迭代70之前相同,但在迭代71时不同。MATLAB命令窗口显示迭代70和71(无加速器)的以下行。

Iter f-count f(x)网格尺寸方法70 618 1919.54 6.104e-05细化网格71 630 1919.54 3.052e-05细化网格

请注意,网格大小乘以0.5,默认值为网状收缩因子.

为了进行比较,命令窗口将显示以下行,这些行与加速器的迭代编号相同。

Iter f-count f(x)网格尺寸方法70 618 1919.54 6.104e-05细化网格71 630 1919.54 1.526e-05细化网格

在这种情况下,网格大小乘以0.25.

相关话题