主要内容

创建自定义绘图函数

关于自定义打印函数

如果软件随附的绘图函数均不适用于要绘图的输出,则可以编写自己的自定义绘图函数,遗传算法在每一代调用该函数来创建绘图。此示例显示如何创建一个绘图函数,该函数显示上一代的最佳适配度值的变化给当代人。

创建自定义打印函数

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

作用状态=gaplotchange(选项、状态、标志)%GAPLOTCHANGE绘制了从%上一代。%持久的最后%上一代的最好成绩如果(strcmp(旗帜,“初始化”))%策划xlim([1,options.MaxGenerations]);axx=gca;axx.YScale=“日志”持有在…上;xlabel一代头衔(“记录最佳适应值的绝对变化”)终止最佳=最低(状态分数);%当代最佳分数如果state.Generation==0%将last_best设置为best。最后的最佳=最佳;其他的变化=最后的最佳-最佳;%最佳成绩的变化最后的最佳=最佳;如果更改>0%仅当适应度提高时绘制绘图(状态、生成、更改、,“xr”);终止终止

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

使用自定义打印功能

要使用自定义打印功能,请将其包含在选项中。

rng(100)%为了再现性选项=最佳选项(“嘎”,“PlotFcn”,{@gaplotbestf,@gaplotchange});[x,fval]=ga(@rastriginsfcn,2,[],[],[],[],[],[],[],[],[],[]选项)

优化终止:超过最大生成数。x=-0.0003 0.0014 fval=4.2189e-04

该图仅显示大于0的变化,这是最佳适应度的改进。对数刻度使您能够看到最佳适应度函数中的微小变化,而上部图没有显示这些变化。

Plot函数的工作原理

plot函数使用以下结构中包含的信息,遗传算法将这些信息作为输入参数传递给函数:

  • 选择权-当前选项设置

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

  • 旗帜-算法的现状

绘图功能最重要的行如下所示:

  • 坚持到最后

    创建持久变量最后-上一代最好的分数。持久变量在多次调用plot函数时被保留。

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

    axx=gca;

    axx.YScale='log';

    在算法开始之前设置绘图。选项.MaxGenerations是最大代数。

  • 最佳=最低(状态分数)

    田野州,得分包含当前人口中所有个体的得分。变量最好的是最低分数。有关结构状态字段的完整说明,请参阅绘图函数的结构.

  • 改变=最后的最佳-最佳

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

  • 如果更改>0

    仅当最佳适应度发生变化时绘制。

  • 绘图(状态、生成、更改、'xr')

    绘制当前代的更改,其编号包含在国家。世代.

代码间隙变化包含许多与的代码相同的元素gaplotbestf,创建最佳拟合图的函数。

相关话题