为什么 GA 收敛曲线继续作为两条平行线?

数据挖掘 matlab 遗传算法 收敛 基因编程
2022-02-22 07:48:26

我正在研究一个优化问题并使用 GA 算法(在 MATLAB 中,ga 函数)。

如您所知,MATLAB 用两条曲线绘制 GA 结果,一条用于最佳值,另一条用于显示平均值,当这两条曲线相互接触时,表示算法已经收敛。

由于我的原因,这两条曲线没有相处并继续作为两条平行线,直到最大代数结束并最终过早收敛,是什么导致了它发生?

我已经用其他参数值进行了测试,但结果相同。在预处理中,我使用了缺失值、归一化和平滑,测试数据集属于 UCI

遗传算法参数:

MutationFcn      : @mutationadaptfeasible: 0.03
CrossoverFcn     : @crossoverheuristic : 1.2
maxGenerations   : 200;
populationSize   : 180;
Chromosome length: 33
Test Instances   : 71

在此处输入图像描述

1个回答

如您所知,MATLAB 用两条曲线绘制 GA 结果,一条用于最佳值,另一条用于显示平均值,当这两条曲线相互接触时,表示算法已经收敛。

更准确地说,当两条曲线相互接触时,这意味着总体中的所有个体的表现完全相同,因为这是最好的和均值相等的唯一方法(通常会发生这种情况,因为所有个体都是相同的)。这只能偶然发生和/或如果突变概率非常小,因为一旦有一个个体发生突变,这个个体的表现就不太可能等于最好的。

对我来说,在像你这样的情节中,成功的收敛达到了大约 60-70 次迭代。残余差异是由于随机突变造成的。