我使用一点交叉,一点变异和锦标赛选择编写了一个简单的遗传算法来解决64位的最大问题。人口的大小是100.我想看到交叉算子对结果的影响。因此,我将该算法以0的概率运行20次,并且在算法的每次迭代中取最佳结果的均值。我重复这5次改变使用交叉算子的概率根据这个公式p_crossover = 1 * 0.95 ^(n-1),n是测试次数。结果让我感到有些惊讶。我知道经验法则是将交叉概率设置得相对较高,以充分利用人口中的信息。但为什么它不能线性地影响结果呢?前3个测试给出了非常相似的平均结果:61.5(概率= 1),61.5(概率= 0.95),61.35(概率= 0.9025),然后是两个60.45(概率= 0.8574),60.5(概率= 0.8145)。有人可以解释一下吗?
编辑:我第二次尝试运行算法而不是20次而是50次。现在,平均结果看起来像这样,所以似乎异常值导致了这种行为。