除了轮询网点之外,模式搜索算法还可以在每个迭代中执行可选步骤搜索。在每次迭代时,搜索步骤将另一个优化方法应用于当前点。如果此搜索没有提高当前点,则执行轮询步骤。
以下示例说明了在中描述的问题上使用搜索方法线性约束的问题。要设置示例,请在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的功能。这个功能是
rosenbrock的功能描述并绘制解决约束的非线性问题,基于求解器(优化工具箱)。
创建目标函数。
dejong2fcn = @(x)100 *(x(2)-x(1)^ 2)^ 2 +(1-x(1))^ 2;
放PatternSearch.
选择MaxFunctionEvaluations.
=5000
和最大
=2000年
:
opts = Optimoptions('patternsearch','maxfunctionevaluations',5000,'maxtations',2000);
跑步PatternSearch.
从...开始[-1.9 2]
:
[x,feval,eflag,输出] = patternsearch(dejong2fcn,... [-1.9,2],[],[],[],[],[],[],[],选择);
超出了最大函数评估数:增加options.maxfunctionevaluations。
Feval.
Feval = 0.8560.
优化没有完成,结果不是非常接近0的最佳值0。
设置要使用的选项fminsearch.
作为搜索方法:
opts = Optimoptions('patternsearch',选择,'searchfcn',@ searchbeldermead);
重新运行优化,结果要好得多:
[x2,feval2,eflag2,输出2] = patternsearch(dejong2fcn,... [-1.9,2],[],[],[],[],[],[],[],选择);
优化终止:网格尺寸小于options.meshtolerance。
Feval2.
Feval2 = 4.0686E-010
fminsearch.
与坐标指示不如默认GPS一样紧密相关PatternSearch.
民意调查方法。所以,fminsearch.
更高效地接近rosenbrock的功能。在这种情况下添加搜索方法是有效的。