主要内容

搜索和投票,基于问题

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

目标函数,lincontest7,在运行此示例时可用。

使用投票方式进行搜索

中描述的问题的搜索方法的使用使用模式搜索和优化实时编辑器任务的约束最小化.在本例中,搜索方法是GSS Positive Basis 2N poll。为了进行比较,首先不使用搜索方法运行问题。

x = optimvar (“x”1、6);概率= optimproblem (“客观”lincontest7 (x));x0。x=[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]; prob.Constraints.Aineq = Aineq*x' <= bineq; prob.Constraints.Aeq = Aeq*x' == beq'; options = optimoptions(“patternsearch”...“PlotFcn”, {@psplotbestf, @psplotfuncount});[x, fval exitflag,输出]=解决(x0,概率...“选项”选项,“规划求解”“patternsearch”);
使用模式搜索解决问题。优化终止:网格尺寸小于options.MeshTolerance。

{

若要使用GSS正基2N轮询作为搜索方法,请更改SearchFcn选择。

rng默认的%的再现性选项。SearchFcn = @GSSPositiveBasis2N;(x2, fval2 exitflag2 output2] =解决(x0,概率...“选项”选项,“规划求解”“patternsearch”);
使用模式搜索解决问题。优化终止:网格尺寸小于options.MeshTolerance。

{

两种优化方法都达到了相同的目标函数值。使用搜索方法可以减少函数计算的次数,但不会减少迭代的次数。

表([output.funccount; output2.funccount], [output.iterations; output2.iterations],...“VariableNames”, (“功能评估”“迭代”),...“RowNames”, (“没有搜索”“搜索”])
ans =2×2表函数计算迭代____________________ __________没有搜索758 84与搜索667 93

使用不同的求解器进行搜索

patternsearch要把罗森布罗克的功能最小化需要很长时间。函数是

f x 1 0 0 x 2 - x 1 2 2 + 1 - x 1 2

对Rosenbrock函数进行了描述和绘制使用优化实时编辑器任务或求解器的约束非线性问题.Rosenbrock函数的最小值在该点处为0[1].因为patternsearch在最小化此函数时效率不高,请使用不同的搜索方法来帮助。

创建目标函数。

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

带有两个变量的模式搜索的默认最大迭代次数是200,函数计算的默认最大次数是4000。将这些值增加到MaxFunctionEvaluations= 5000,MaxIterations= 2000。

选择= optimoptions (“patternsearch”“MaxFunctionEvaluations”, 5000,“MaxIterations”, 2000);

运行patternsearch starting from(-1.9 - 2)

x = optimvar (“x”、1、2);概率= optimproblem (“客观”dejong2fcn (x));x0。x=[-1.9,2]; [sol,feval,eflag,output] = solve(prob,x0,...“选项”选择,“规划求解”“patternsearch”);
使用模式搜索解决问题。超过函数计算的最大数量:增加options. maxfunctionassessments。
disp(函数宏指令)
0.8560
disp (output.funccount)
5000

即使进行了5000次函数计算,优化也没有完成,结果与最优值0相差甚远。

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

选择= optimoptions (“patternsearch”“SearchFcn”, @searchneldermead);

重新运行优化。

[sol2, feval2 eflag2 output2] =解决(x0,概率...“选项”选择,“规划求解”“patternsearch”);
使用模式搜索解决问题。优化终止:网格尺寸小于options.MeshTolerance。
disp (feval2)
4.0686平台以及
disp (output2.funccount)
291

使用该搜索方法时,在解处的目标函数值要好得多(更低),函数的计算次数也要低得多。fminsearch能更有效地接近Rosenbrock函数的最小值。

另请参阅

|

相关的话题

Baidu
map