主要内容

创建自定义绘图功能

关于自定义绘图功能

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

创建自定义绘图功能

要为此示例创建绘图功能,请将以下代码复制并粘贴到MATLAB中的新文件中®编辑。

功能状态= gaplotchange(选项,状态,标志)%gaplotchange绘制最佳分数的对数变化以前一代。执着的Last_best.前一代人的最佳得分如果(Strcmp(旗帜,'在里面')))%设置了剧情XLIM([1,options.maxgenerations]);AXX = GCA;AXX.yscale ='日志';抓住;XLabel.一代标题('日志绝对变化最佳健身值'结尾best = min(state.score);当前的最佳分数如果State.generation == 0.%set last_best到最好。last_best =最好;别的更改= last_best  - 最好;最佳分数的百分比变化last_best =最好;如果改变> 0.只有在健身改善时绘图(州。变更,改变,'xr');结尾结尾

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

使用自定义绘图功能

要使用自定义绘图函数,请将其包含在选项中。

RNG(100)重复性的%选项= Optimoptions('Ga''plotfcn',{@ gaplotbestf,@ gaplotchange});[x,fval] = ga(@ restriginsfcn,2,[],[],[],[],[],[],[],选项)

优化终止:超出了最大几代数。X = -0.0003 0.0014 FVAL = 4.2189E-04

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

绘图功能如何工作

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

  • 选项- 当前选项设置

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

  • 旗帜- 算法的当前状态

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

  • 持久的last_best.

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

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

    AXX = GCA;

    axx.yscale ='log';

    在算法开始之前设置绘图。options.maxgenerations.是几代数量。

  • best = min(state.score)

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

  • change = last_best - 最好

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

  • 如果更改> 0

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

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

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

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

相关话题