从种群中选择多少个体?(遗传算法)

我开始实现自己的遗传算法,现在正处于决定如何为新一代选择父母的阶段。我做了一些阅读,似乎有许多不同的方法可以选择。

我知道各种选择技术(锦标赛、轮盘赌),但我找不到的信息是确切地选择多少父母。

我将处理的初始种群大小将在50到75个个体之间。我在考虑或许选择一半的种群作为下一代,这样每一代种群都会减少一半,但我不确定这是否是最佳途径。

任何建议都将非常有帮助。


回答:

我在硕士学位研究中修了一门遗传算法课程。

正如@et_l 正确所说,种群通常应该在每次迭代中保持相同的大小,因此你希望每一代的解决方案越来越少(如你所说,种群减少一半)是没有意义的。50到75的种群也非常小。我建议你的种群至少要有100个解决方案。

选择多少父母完全取决于你。你可以选择整个种群,或者只选择少数几个。父母的数量通常只影响你的种群会多快收敛到一个单一的解决方案。一般来说,你选择的父母越少,你的收敛速度就越快。

现在假设(例如)你选择了种群中排名前10的解决方案作为下一代的父母。你杀死种群中的其他90个个体,只保留前10个。(请注意,关于杀死多少个体也有不同的变体,这并不总是需要是那些没有进入前列并成为父母的部分。)

接下来,你将10个父母结合起来创建新的解决方案。有许多方法可以结合。在这一步,重要的是将你的种群恢复到初始大小,即100。你可以选择在新一代中保留你的10个父母,或者也杀死他们,拥有一个完全由10个父母结合成的100个孩子组成的种群,而不是一个由10个父母+90个孩子组成的种群。

可选地,你现在也可以对你的新种群进行一些变异,以获得更广泛的解决方案。你是否这样做完全取决于你,我建议你对此进行实验,看看这可能会产生什么样的效果。如果你选择包括变异,通常只有你种群的一小部分应该发生变异。

最后,你有了新的种群,如果你愿意,可以开始另一轮迭代。继续进行迭代,直到你在种群中得到满意的解决方案。

我希望我已经清楚地说明了实现遗传算法的方法有很多,需要一些实验来找出哪种实现方式最适合你的特定问题。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注