如果软件附带的绘图函数都不适用于要绘制的输出,则可以编写自己的自定义绘图功能,遗传算法调用每代呼叫以创建绘图。此示例显示了如何创建一个绘图函数,该函数显示从前一代到当前生成的最佳健康值的变化。
要为这个示例创建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的变化,这是最佳健身的改进。对数刻度使您可以看到上绘图未显示的最佳健身功能的小变化。
绘图函数使用以下结构中包含的信息,该遗传算法将函数传递为输入参数:
选项
- 当前选项设置
状态
- 关于当前一代的信息
旗帜
- 算法的当前状态
绘图功能最重要的线条如下:
持久的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.
,创建最佳健身图的函数。