如果软件随附的绘图函数均不适用于要绘图的输出,则可以编写自己的自定义绘图函数,遗传算法在每一代调用该函数来创建绘图。此示例显示如何创建一个绘图函数,该函数显示上一代的最佳适配度值的变化给当代人。
要为本例创建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函数时被保留。
xlim([1,options.MaxGenerations]);
axx=gca;
axx.YScale='log';
在算法开始之前设置绘图。选项.MaxGenerations
是最大代数。
最佳=最低(状态分数)
田野州,得分
包含当前人口中所有个体的得分。变量最好的
是最低分数。有关结构状态字段的完整说明,请参阅绘图函数的结构.
改变=最后的最佳-最佳
变量变化是上一代的最佳分数减去当前一代的最佳分数。
如果更改>0
仅当最佳适应度发生变化时绘制。
绘图(状态、生成、更改、'xr')
绘制当前代的更改,其编号包含在国家。世代
.
代码间隙变化
包含许多与的代码相同的元素gaplotbestf
,创建最佳拟合图的函数。