主要内容

创建自定义绘制函数

关于自定义绘制函数

如果没有一个情节功能的软件适用于输出你想情节,您可以编写自己的自定义图函数,它在每一代遗传算法调用创建情节。这个例子展示了如何创建一个情节功能显示最好的健身价值的变化从上一代一代。

创建自定义绘制函数

创建图函数对于这个示例,下面的代码复制并粘贴到一个新文件在MATLAB®编辑器。

函数国家= gaplotchange(选项、州旗)% GAPLOTCHANGE情节的对数变化最好的分数的%上一代。%持续的last_best%在上一代中成绩最好如果(比较字符串(国旗,“init”))%设置情节xlim ([1, options.MaxGenerations]);甘氨胆酸axx =;axx。YScale =“日志”;持有;包含一代标题(的日志绝对最好的健身价值”的变化)结束最好= min (state.Score);%这一代最好的分数如果state.Generation== 0% last_best设为最佳。last_best =最好的;其他的改变= last_best -最好;最好的得分变化百分比last_best =最好的;如果改变> 0%的情节只有当健康改善情节(state.Generation,改变,“xr”);结束结束

将文件保存为gaplotchange.m在MATLAB上一个文件夹路径。

使用自定义函数

使用自定义绘制函数,包括它的选项。

rng (100)%的再现性选择= optimoptions (“遗传算法”,“PlotFcn”,{@gaplotbestf, @gaplotchange});[x, fval] = ga (@rastriginsfcn 2[]、[][],[],[],[],[],选项)

优化终止:超过了一代又一代的最大数目。x = -0.0003 - 0.0014 fval = 4.2189 e-04

情节只显示变化大于0,这是最好的改善健康。对数刻度使您能够看到小最佳适应度函数的变化上没有透露。

情节函数是如何工作的

情节中包含函数使用信息以下结构,遗传算法的函数作为输入参数传递:

  • 选项——当前的选项设置

  • 状态——关于当代的信息

  • 国旗——算法的现状

最重要的情节功能如下:

  • 持久last_best

    创建持久变量last_best——前一代最好的分数。持久的变量是保存在多个调用图的功能。

  • xlim ([1, options.MaxGenerations]);

    甘氨胆酸axx =;

    axx。YScale =“日志”;

    设置情节在算法开始之前。options.MaxGenerations是几代人的最大数量。

  • 最佳= min (state.Score)

    这个领域state.Score包含所有个人的分数在当前的人口。的变量最好的是最低的分数。的字段的完整描述结构状态,明白了情节结构的功能

  • 改变= last_best -最好的

    变量的变化是最好的得分上一代-中成绩最好的一代。

  • 如果改变> 0

    情节只有改变最好的健身。

  • 情节(state.Generation,改变“xr”)

    情节的变化在目前这一代的号码是包含在state.Generation

的代码gaplotchange包含许多相同的元素的代码gaplotbestf,该函数创建最好的健身的阴谋。

相关的话题