这Plotfcn.
现场选项
指定优化函数在每次迭代时调用的一个或多个函数。当算法执行时,Plot函数绘制各种进度度量。传递一个函数句柄或函数句柄的单元格数组。plot函数的结构与输出函数的结构相同。有关此结构的更多信息,请参见OutputFcn.
Plot函数是专门的输出函数(参见GlobalSearch和Mulistart的输出函数).有两个预定义的plot函数:
@gsplotbestf.
绘制最佳的客观函数值。
@gsplotfunccount.
绘制函数评估的数量。
绘图函数窗口有暂停和停止纽扣。默认情况下,所有绘图都出现在一个窗口中。
要使用全局绘图功能:
使用中描述的语法编写绘图函数OutputFcn.
设定Plotfcn.
你的财产Globalsearch.
或多层的
对象绘制函数的函数句柄。您可以通过设置多个绘图功能来设置Plotfcn.
属性到功能函数的单元格数组。
内置绘图功能具有可能让您感到惊讶的特征。
@gsplotbestf.
可以有没有严格下降的情节。这是因为早期的值可以由本地解算器带有负口出口标志(例如不可行的解决方案)。金宝搏官方网站即使其功能值较高,带有正退出标志的后续本地解决方案也更好。一旦本地解算器返回具有正退出标志的值,绘图就会单调逐渐减小。
@gsplotfunccount.
可能不会绘制功能评估的总数。这是因为Globalsearch.
可以在最后一次调用plot函数后继续执行函数计算。有关更多信息,请参见GlobalSearch算法.
多层的
绘图功能这个例子绘制局部求解器运行的数量,它需要获得更好的局部最小值多层的
.这个示例还使用内置的plot函数来显示当前的最佳函数值。
示例问题与中相同查找全局或多个本地最小值,附加界限。
这个示例使用持久变量来存储以前的最佳值。在每个局部求解器运行后,plot函数检查最佳函数值最好的
场面的领域优化价值
结构体。如果该值不低于以前的最佳,则绘图函数会增加1到连续呼叫的数量,没有改进并绘制条形图。如果值低于上一个最佳,则绘图函数在图表中启动一个新栏,其中值1.在绘制之前,绘图功能采用连续呼叫数量的对数。对数有助于保持绘图清晰,因为某些值可能比其他值要大得多。
要使用嵌套功能而不是持久变量存储本地结果,请参阅嵌套输出功能的示例.
绘图功能示例
这个例子最小化sawtoothxy
辅助功能,列在本例结束.通常,将您的目标函数保存在Matlab®路径上的文件中。
这NumberToNextBest
自定义绘图函数附加到此示例。通常,将您的绘图功能保存在MATLAB路径上的文件中。这是一个列表。
类型NumberToNextBest
function stop = NumberToNextBest(optimValues, state) persistent bestfv bestcounter stop = false;初始化变量以记录最好的函数值。bestfv = [];初始化计数器以记录%本地求解器运行的次数,以找到下一个最佳最小值。bestcounter = 1;%创建直方图。栏(日志(bestcounter)、“标签”,“NumberToNextBest”);xlabel(“新最佳Fval发现数量”);ylabel('本地求解器运行的日志数量');查找包含直方图的轴。 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
创建问题结构和全局求解器对象。设置下限[-3E3,-4E3]
,的上界(4 e3, 3 e3)
并将全局求解器设置为使用NumberToNextBest
自定义绘图功能和gsplotbestf.
内置绘图功能。
问题= createOptimproblem(“fmincon”那......'客观的',@(x)Sawtoothxy(x(1),x(2)),......'x0',[100,-50],“磅”,[ - 3e3 -4e3],......乌兰巴托的,[4e3,2e3],“选项”那......Optimoptions(@Fmincon,'算法'那“sqp”));ms = multiStart(“PlotFcn”,{@ numpertonextbest,@ gsplotbestf});
运行全局求解器,可为100个本地解算器运行。
RNG(2);%的再现性[x,阵线]=运行(女士,100年问题);
MultiStart从起点完成了一些运行。在100个本地求解器中的34个运行中包含正本地求解器出口标志。
辅助功能
此代码创建sawtoothxy
帮手功能。
函数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(3 * R)/ 3 - SIN(4 * R)/ 4 + 4)....... * r。^ 2. / (r + 1);f = g。* h;结尾
而多层的
可以并行运行,它不支持全局输出函数和绘图函数并行运行。金宝app此外,当本地输出函数和绘图函数在工人上运行时多层的
并行运行,效果不同于串行运行。本地输出和绘图函数在工人上运行时不会创建显示。在worker将其结果传递给客户机(即多层的
平行就业)。
有关运行的信息多层的
同时,看到并行计算.