创建自定义绘图功能

关于自定义Plot函数

如果软件附带的绘图函数都不适用于要绘制的输出,则可以编写自己的自定义绘图功能,遗传算法调用每代呼叫以创建绘图。此示例显示了如何创建一个绘图函数,该函数显示从前一代到当前生成的最佳健康值的变化。

创建自定义绘图功能

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

函数状态= gaplotchange(选项,状态,标志)%gaplotchange绘制的对数变化在上一代%的最佳分数。在前一代(strcmp(标志''init'))中的%持续持续的perst_best%最佳分数(strcmp(strcmp(strcmp(strcmp''))%设置绘图xlim([1,options.maxgenerations]);AXX = GCA;axx.yscale ='log';坚持,稍等;xlabel生成标题('log绝对变化最佳健身值')结束最佳= min(state.score);如果state.generation == 0%将last_best达到最佳分数。last_best =最好;否则更改= last_best  - 最好;最佳得分的百分比变化last_best =最好; if change > 0 % Plot only when the fitness improves plot(state.Generation,change,'xr'); end end

然后将文件保存为gaplotchange.m.在Matlab路径上的文件夹中。

使用绘图功能

要使用自定义绘图功能,请选择风俗在里面绘制功能面板和输入@gaplotchange.在右边的领域。要将自定义绘图与最佳的健身值图进行比较,还可以选择最好的健身

现在,如果您运行描述的示例最小化Restrigin的功能,该工具显示类似于下图所示的图。

该曲线仅显示大于0的变化,这是最佳健身的改进。对数刻度使您可以看到上绘图未显示的最佳健身功能的小变化。

Plot函数是如何工作的

绘图函数使用以下结构中包含的信息,该遗传算法将函数传递为输入参数:

  • 选项- 当前选项设置

  • 状态- 关于当前一代的信息

  • 旗帜- 算法的当前状态

绘图功能最重要的线条如下:

  • 持久的last_best.

    创建持久变量Last_best.- 前一代的最佳分数。持久变量以多个调用保留对绘图功能。

  • XLIM([1,options.maxgenerations]);

    AXX = GCA;

    axx.yscale ='log';

    在算法开始之前设置绘图。选项。MaxGenerations是几代数量。

  • best = min(state.score)

    state.score.包含目前人口中所有人的分数。变量最好的是最低分数。有关结构状态字段的完整描述,请参阅绘图功能的结构

  • 改变= last_best - best

    变化变化是前一代减去最佳分数的最佳分数。

  • 如果更改> 0

    只有在最佳健身的变化时才会绘图。

  • 绘图(州。变更,'XR')

    绘制当前一代的变化,其中包含的数字国家

的代码gaplotchange包含许多与代码相同的元素gaplotbestf.,创建最佳健身图的函数。

相关的话题