Author: ProofZ

上次的问题


上次的问题上图所示:
遗传算法不收敛于最优解,考虑到自己的算法以及其实现,发现了有如下几个问题:

  • 种群中个体过少;
    种群中个体过少是直接影响收敛速度的原因,也会影响到收敛的结果。
  • 未设置变异;
    为设置变异就不能完整的模拟遗传算法,即不能将大自然的随机性表现出来。
  • 选择(selection)算法不理想;
    选择算法有太多的必然性,对遗传算法中的随机性表达不明显。

对于上述提出来的几个原因,我的直觉告诉我后面两个原因不是主要影响因素,因为,本问题太简单,涉及到的随机性越多越不利于问题的解答。

种群规模的影响

关于函数f(x) = x^2 + x + 3 在[0, 31)上的最大值,我们已知在f(31)处取得最大值。
之前的我们设计的遗传算法中,我们将种群的数量设置为4(默认遗传代数为20)。
100次测试结果如图所示:
100次种群个体数量为4的结果.png

横坐标是0~100次,纵坐标是遗传算法收敛的值,可以形象的看到,最优解31的个数并不多;
这里我做了个统计:

统计表.png

由图可知,种群设置为4的最优解的概率约为19%。
现在将种群中个体的数量提高到6。
100次测试结果如下:
100次种群个体数量为4、6的结果.png

对种群中个体数量为6做一个统计:
个体数为6的统计表.png

由上图可知,种群设置为6的时候的最优解的概率约为39%

后续继续增大种群规模,
当种群中个体数量为8的时候,最优解的概率约为58%
当种群中个体数量为10的时候,最优解的概率约为74%
于是,猜想,种群数量越大,最优解概率越大,遂作如下图:

最优解率随个体数量变化的图.png

纵坐标为最优解率,横坐标为总群数量。
由图知,随着个体的数量增大,最优解率会趋近于1。
那么,真的个体数量越大越好么?