有多少个人可供选择?(遗传算法)

Ast*_*ght 2 algorithm artificial-intelligence genetic-algorithm

我已经开始实现自己的遗传算法,并且正处于决定如何为新一代选择父母的阶段。我读了一些书,看来有很多不同的方法可以解决这个问题。

我知道各种选择技巧(比赛,轮盘赌),但我似乎找不到的信息就是应该选择多少个父母。

我要处理的初始人口规模介于50-75个人之间。我当时正在考虑为下一代选择一半的人口,因此每一代人口都将减少一半,不确定这是否是最好的选择。

任何建议都很好。

PJv*_*JvG 5

我修了遗传算法课程,这是我的硕士学位课程的一部分。

就像@et_l正确说的那样,总体上每次迭代的大小都应该相同,因此在每一代中都需要越来越少的解决方案(将总体减少一半,这是没有道理的)。50-75岁的人口也很少。我建议您的人群中至少有100种解决方案。

选择多少父母完全取决于您。您可以选择全部人口,也可以选择少数人口。父母人数通常只会影响您的人口收敛到单一解决方案的速度。通常,选择的父母越少,收敛速度就越快。

现在说(例如),您选择100个人口中的前10个解决方案作为下一代的父母。您杀死了其他90%的人口,并保持了前10名。(请注意,杀死多少人也有差异,这并不总是需要成为未跻身前茅的人口的一部分。并成为父母。)

接下来,您将合并10个父母,以创建新的解决方案。有很多组合方式。在此步骤中,重要的是使您的人口恢复到最初的人口规模,即100。您可以选择让10位父母成为新一代,或者杀死他们,让一个完全由100个孩子组成的人口总共有10位父母,而不是10位父母+ 90个孩子。

(可选)您现在还可以对新种群进行一些变异,以获得更多种类的解决方案。是否执行此操作完全取决于您自己,我建议尝试进行此操作以查看其可能产生的影响。如果选择包括突变,通常只有一小部分人口会突变。

最终,您有了新的人口,并且可以根据需要开始另一个迭代。不断进行迭代,直到获得您对总体满意的解决方案为止。

我希望我已经阐明了实现遗传算法的多种方法,并且需要进行一些实验才能找出哪种实现最适合您的特定问题。