主要内容

搜索和投票

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

使用轮询方法搜索

下面的示例演示了在中描述的问题上使用搜索方法使用patternsearch和optimizeliveeditor任务的约束最小化. 在这种情况下,搜索方法是MADS正基2N poll。为了进行比较,首先不使用搜索方法运行问题。

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 1 9; 1 -1 2 -2 3 -3]; beq=[84 62 65 1];options=选项('模式搜索',...'打印FCN',{@psplotbestf,@psplotfuncount})[x、 fval,exitflag,output]=patternsearch(@lin7,x0,...Aineq、bineq、Aeq、beq、[]、[]、[]、选项);
优化终止:网格大小小于options.MeshTolerance。

图形模式搜索包含2个轴。标题为“最佳函数值:1919.49”的轴1包含线型对象。标题为Total Function Evaluations:1462的轴2包含类型为line的对象。

要使用MADS正基2N poll作为搜索方法,请更改搜索FCN选项。

rng公司违约%再现性options.SearchFcn=@MADSPositiveBasis2N[x2,fval2,exitflag2,output2]=模式搜索(@lin7,x0,...Aineq、bineq、Aeq、beq、[]、[]、[]、选项);
优化终止:网格大小小于options.MeshTolerance。

图形模式搜索包含2个轴。标题为“最佳函数值:1919.49”的轴1包含线型对象。标题为Total Function Evaluations:1283的轴2包含一个line类型的对象。

两种优化都达到了相同的目标函数值。使用搜索方法可以减少函数求值的次数和迭代次数。

表([output.funcount;output2.funccount],[output.iterations;output2.iterations],...'可变名称',[“功能评估”“迭代”],...'行名称',[“无搜索”“带搜索”])
答案=2×2工作台函数求值迭代次数不带搜索1462 136带搜索1283 118

使用其他解算器搜索

模式搜索最小化罗森布鲁克函数需要很长时间。功能是

F ( ) = 1. 0 0 ( 2. - 1. 2. ) 2. + ( 1. - 1. ) 2. .

Rosenbrock的函数在基于解算器求解约束非线性问题. Rosenbrock函数的最小值是0,在[1,1]. 因为模式搜索在最小化此函数时效率不高,请使用其他搜索方法进行帮助。

创建目标函数。

dejong2fcn=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;

使用两个变量的patternsearch的默认最大迭代次数为200,默认最大函数求值次数为4000。将这些值增加到MaxFunctionEvaluations最大函数=5000和最大迭代次数= 2000.

opts=选项('模式搜索','最大函数评估',5000,'最大迭代次数',2000);

从开始运行模式搜索[-1.9 2].

[x,feval,eflag,output]=模式搜索(dejong2fcn,...[-1.9,2],[],[],[],[],[],[],[],[],[],选项);
超过最大函数求值数:增加options.MaxFunctionEvaluations。
显示(feval)
0.8560

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

设置要使用的选项fminsearch公司作为搜索方法,使用默认的函数求值次数和迭代次数。

opts=选项('模式搜索',选项,'搜索FCN',@searchneldermead);

重新运行优化。

[x2,feval2,eflag2,output2]=模式搜索(dejong2fcn,...[-1.9,2],[],[],[],[],[],[],[],[],[],选项);
优化终止:网格大小小于options.MeshTolerance。
显示(2月2日)
4.0686e-10型

当使用这种搜索方法时,结果要好得多。fminsearch公司在接近罗森布鲁克函数的最小值时效率更高。

相关主题