对于GlobalSearch和多头绘图功能

什么是绘图功能?

PlotFcn现场选项指定一个或多个功能,在每次迭代优化的函数调用。绘图功能绘制的,而算法执行进度的各项措施。传递一个函数手柄或手柄功能的单元阵列。的曲线图函数的结构是相同的作为输出功能的结构。有关此结构的更多信息,请参阅OutputFcn

绘图功能是专业输出功能(见对于GlobalSearch和多头输出功能)。有两个预定义的情节功能:

  • @gsplotbestf绘制最好的目标函数值。

  • @gsplotfunccount绘制函数评估的次数。

绘图功能窗口有暂停停止纽扣。默认情况下,所有的情节出现在一个窗口。

使用全局情节功能:

  • 使用语法写剧情的功能描述OutputFcn

  • 设置PlotFcn财产你GlobalSearch要么多头反对你的绘图功能的功能句柄。您可以通过设置使用多个情节功能PlotFcn属性到函数处理的一个单元阵列。

内置绘图功能的详细信息

内置的情节功能有一个可以让你吃惊的特性。

  • @gsplotbestf可以地块未严格递减。这是因为早期的值可以从负退出的标志(如不可行的解决方案)局部求解器运行的结果。万博 尤文图斯与积极的出口标志后续的本地解决方案是更好的,即使它的功能价值较高。一旦当地求解器返回一个肯定退出标志的值,该地块单调递减。

  • @gsplotfunccount可能不积函数计算的总数。这是因为GlobalSearch可以继续执行功能评估它调用最后一次的绘图功能之后。欲了解更多信息,请参阅GlobalSearch算法

多头绘图功能

这个例子地块局部求解器运行的次数才能获得更好的本地最小值多头。这个例子还使用了内置的绘图功能,以显示当前最好的函数值。

的例子的问题是与在查找全局或多个局部极小,额外的边界。

该示例使用持久变量来存储以前的最好值。该地块功能检查每一个局部求解器运行后最好的函数值,在可用bestfval领域optimValues结构体。如果该值不低于以前的最好较低,积函数添加1〜没有改善的连续呼叫的数量,并绘制柱状图。如果该值比以前的最好较低,积函数开始在图表中值为1之前绘制一个新的酒吧,积函数需要连续的呼叫数量的对数。对数有助于保持清晰的情节,因为有些值可能比别人大得多。

为了存储使用嵌套函数,而不是持续性的局部变量的结果,看嵌套输出功能的示例(MATLAB)。

  1. 编写目标函数:

    函数f = sawtoothxy(X,Y)[T R] = cart2pol(X,Y);%变化到极坐标H = COS(2 * T  -  1/2)/ 2 + cos(T)+ 2;G =。(SIN(R) -  SIN(2 * R)/ 2 + SIN(2 * R)/ 3  - 罪(4 * R)/ 4 + 4)... * R ^ 2 ./(R1);F = G *小时。;
  2. sawtoothxy.m作为您的MATLAB的文件夹中文件®路径。

  3. 写绘图功能:

    功能停止= NumberToNextBest(optimValues,状态)持续bestfv bestcounter停止= FALSE;开关状态的情况下为“init”%初始化变量来记录最好的函数值。bestfv = [];%初始化计数器%的本地求解器的记录编号运行到查找下一个最好的最小值。bestcounter = 1;%创建直方图。巴(日志(bestcounter), '标签', 'NumberToNextBest');xlabel(“新的最佳FVAL的数量”);ylabel(“本地解算器的日志编号运行”);标题(“本地解算器的运行次数,查找下最小”)的情况下“ITER”%查找含有该直方图中的轴。 NumToNext = ... findobj(get(gca,'Children'),'Tag','NumberToNextBest'); % Update the counter that records number of local % solver runs to find next best minimum. if ~isequal(optimValues.bestfval, bestfv) bestfv = optimValues.bestfval; bestcounter = [bestcounter 1]; else bestcounter(end) = bestcounter(end) + 1; end % Update the histogram. set(NumToNext,'Ydata',log(bestcounter)) end
  4. NumberToNextBest.m为您的MATLAB路径上的文件夹中的文件。

  5. 创建问题的结构和全球求解。设定下限[-3e3,-4e3]的上限[4e3,3e3]并设置全局求解器使用情节功能:

    问题= createOptimProblem( 'fmincon',... '目标',@(X)sawtoothxy(X(1)中,x(2)),... 'X0',[100,-50], 'LB',[-3e3 -4e3],... 'UB',[4e3,3e3], '选项',... optimoptions(@ fmincon, '算法', 'SQP'));MS =多头( 'PlotFcn',{@ NumberToNextBest,@ gsplotbestf});
  6. 运行100个本地运行求解全球求解:

    [X,FV] =运行(MS,问题,100);
  7. 该地块功能产生如下图(您的结果可能有所不同,因为该解决方案的过程是随机的):

没有平行绘图功能

多头可以并行运行,它不支持并行全球输出功能和打印功能。万博1manbetx此外,尽管本地输出功能和情节的功能工人运行时多头在平行运行,效果不同于连续运行。工人运行时,本地输出和打印功能不创建一个显示。你看不到的输出和打印功能的任何其他效果,直到工人将它的结果给客户端(的鼻祖多头并行作业)。

有关运行信息多头与此同时,看到并行计算

相关话题