自定义绘图功能

关于自定义功能地块

要使用软件附带的绘图函数以外的绘图函数,可以编写自己的自定义绘图函数,该函数在模式搜索的每次迭代中调用以创建绘图。这个例子展示了如何创建一个plot函数,显示从上一次迭代到当前迭代的最佳目标函数值的对数变化。中提供了更多绘图功能详细信息图解选项.

创建自定义绘图功能

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

功能停止= psplotchange(optimvalues,标志)%PSPLOTCHANGE绘制最佳目标函数的变化%上次迭代的值。%上一次迭代中的最佳目标函数值持久的last_best stop=错误;如果(strcmp(标志,'在里面'))组(GCA,'Yscale','日志');%设置绘图持有;X标签('迭代');伊拉贝尔('记录值更改');职务([“变化的最佳功能价值”]);结束%当前迭代中的最佳目标函数值最好=分钟(optimvalues.fval);%把最后一个最好的设置为最好的如果optimvalues.iteration==0最后一次最佳=最佳;其他的在目标函数值的%变化变化= last_best  - 最好;图(optimvalues.iteration,变更,'.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 9;1-1 2-2 3-3];beq=[84 62 65 1];
  2. 进入最佳工具打开优化应用程序。

  3. 选择patternsearch求解器。

  4. 设置问题以匹配下图。

  5. 由于这是一个线性约束问题,请设置投票方法GSS正基2N.

使用自定义绘图函数

要使用自定义绘图功能,选择自定义函数在里面绘图函数窗格中,输入@psplotchange公司在右边的田野里。要将自定义图与最佳功能值图进行比较,还可以选择最佳功能值.

现在,运行示例时,pattern search将显示下图所示的图。

注意,因为是的-下自定义绘图中的轴是对数的,绘图仅显示大于0的更改。

要使用命令行功能运行这个问题:

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 9;1-1 2-2 3-3];beq=[84 62 65 1];options=optimoptions('模式搜索',...'绘图Fcn',{@psplotbestf,@psplotchange},...'PollMethod','GSSPositiveBasis2N');[x,fval]=模式搜索(@lincontent7,x0,...Aineq,bineq,AEQ,BEQ,[],[],[],选项);

如何绘图函数工作

plot函数使用以下结构中包含的信息,优化应用程序将这些信息作为输入参数传递给函数:

  • 最优值-解算器的当前状态,结构

  • 旗帜-算法的现状,一个字符向量

自定义绘图函数最重要的语句,psplotchange.m,总结如下表所示。

自定义绘图函数语句

声明 说明
持久的最后一秒

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

集(GCA, 'Yscale', '日志')

在算法开始之前设置绘图。

最好=分钟(optimvalues.fval)

最好等于最小目标函数值。田野最佳值.fval包含当前迭代的目标函数值。变量最好是最小目标函数值。对于结构的字段的完整描述最优值,请参见绘图函数的结构.

变化= last_best - 最好

设置变量改变在上一次迭代的最佳目标函数值减去当前迭代的最佳目标函数值。

绘图(optimvalues.iteration,change,'.r')

地块变量改变对于包含在optimvalues.iteration.

相关话题