主要内容

创建自定义绘图函数

关于自定义Plot函数

如果软件附带的绘图函数都不适合想要绘制的输出,则可以编写自己的自定义绘图函数,遗传算法在每次生成时调用该函数来创建绘图。此示例演示如何创建一个绘图函数,该函数显示从上一代到当前一代的最佳适应度值的变化。

创建自定义绘图函数

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

函数状态= gaplotchange(选项,状态,标志)* GAPLOTCHANGE绘制从最佳分数开始的对数变化%上一代。持续的last_best%上一代中最好的分数如果(比较字符串(国旗,“init”))设置情节xlim ([1, options.MaxGenerations]);Axx = gca;axx。YScale =“日志”;持有;包含一代标题(“最佳适应度值的对数绝对变化”结束best = min(状态。分数);当代最好的分数如果状态。代== 0将last_best设置为best。Last_best =最好;其他的Change = last_best -最好的;最佳分数变化百分比Last_best =最好;如果改变> 0%仅当适合度提高时绘图(国家的阴谋。一代,change,“xr”);结束结束

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

使用自定义绘图函数

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

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

优化终止:超过最大代数。X = -0.0003 0.0014 fval = 4.2189e-04

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

绘图函数是如何工作的

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

  • 选项—当前选项设置

  • 状态—当前代信息

  • 国旗—算法的当前状态

plot函数中最重要的线条如下:

  • 持久last_best

    创建持久变量last_best-上一代的最好成绩。在多次调用plot函数时保存持久变量。

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

    Axx = gca;

    axx。YScale = 'log';

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

  • best = min(状态。分数)

    这个领域状态。分数包含当前总体中所有个体的分数。的变量最好的是最低分数。有关结构状态字段的完整描述,请参见图功能结构

  • Change = last_best - best

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

  • 如果更改> 0

    仅当最佳适合度发生变化时进行绘图。

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

    绘制当前代的变化,其数字包含在状态。一代

的代码gaplotchange的代码包含许多相同的元素gaplotbestf,即创建最佳适应度图的函数。

相关的话题