主要内容

自定义绘图功能

关于自定义绘图功能

要使用软件附带的plot函数,您可以编写自己的定制plot函数,在模式搜索的每次迭代中调用该函数来创建plot。这个示例展示了如何创建一个plot函数,该函数显示从前一个迭代到当前迭代的最佳目标函数值的对数变化。更多情节功能详情,请参阅情节选项

创建自定义绘图功能

要为本例创建plot函数,请将以下代码复制并粘贴到MATLAB中的新函数文件中®编辑器:

函数stop = psplotchange(优化值,标志)% PSPLOTCHANGE绘制最佳目标函数的变化%值。%前一次迭代的最佳目标函数值持续的Last_best stop = false;如果(比较字符串(国旗,'在里面'甘氨胆酸)集(,“Yscale”“日志”);%设置plot持有;包含(“迭代”);ylabel (“记录值的变化”);标题(['改变最佳功能值']);结束%当前迭代中最佳目标函数值BEST = min(优化值.FVAL);%将last_best设置为best如果optimvalues.iteration== 0 last_best = best;其他的目标函数值的百分比变化更改= last_best  - 最好;绘图(OptimValues.Ceration,改变,“r”);结束

将文件保存为psplotchange.m在MATLAB路径上的一个文件夹中。中解释了代码绘图功能如何工作

设置问题

问题是一样的使用模式搜索和优化活动编辑器任务的约束最小化.要设置问题:

  1. 在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];
  2. 因为这是一个线性约束问题,设PollMethod选择'gsspositivebasis2n'.包括@psplotbestf内置情节功能和自定义情节功能@psplotchange在选项中。

    选项= Optimoptions(“patternsearch”...“PlotFcn”{@psplotbestf, @psplotchange},...“PollMethod”'gsspositivebasis2n');

使用自定义Plot函数运行优化

通过调用运行示例patternsearchx0

[x, fval] = patternsearch (@lincontest7 x0,...AINEQ,BINEQ,AEQ,BEQ,[],[],[],选项);

因为这个规模y-axis在下面的自定义图中是对数的,图中只显示大于0的变化。

绘图功能如何工作

plot函数使用以下结构中包含的信息。

  • optimvalues-当前状态的求解器,一个结构

  • 国旗—算法的当前状态,字符向量

自定义plot函数最重要的语句是,psplotchange.m,总结如下表。

自定义Plot函数语句

声明 描述
持久last_best

创建持久变量last_best,上一代最佳目标函数值。持久化变量在多次调用plot函数时被保留。

SET(GCA,'YSCale','log')

在算法开始之前设置情节。

Best = min(优化values.fval)

最好的等于最小目标函数值。这个领域optimvalues.fval包含当前迭代中的目标函数值。变量最好的是目标函数值的最小值。以获得该结构各字段的完整描述optimvalues,请参阅情节功能的结构

change = last_best - 最好

设置变量改变在前一个迭代中的最佳目标函数值减去当前迭代中最佳的客观函数值。

绘图(OptimValues.Ceration,改变,“r”)

情节的变量改变在当前目标函数值处,为当前迭代所包含optimvalues.iteration

相关话题