新一代遗传算法呈指数级增长



我正在用c++编程遗传算法,在搜索了所有GA'a操作符(选择,交叉,突变)的方法后,我提出了一个疑问。假设初始人口是500人。我的选择将包括获得前20%(基于最佳健康)。所以我有100个个体进行交配。当我做交叉时,我会得到两个孩子,两个孩子都有50%的存活率。到目前为止一切顺利。我开始变异,然后一切正常…现在,当我开始选择下一代时,我发现我有很多孩子(在这种情况下,如果你想知道,是4950)。现在的问题是,每次我运行GA,如果我把所有的子结点都传给下一代,每一代的个体数量会呈指数增长。因此,一定有一种方法可以在不超出初始人口范围的情况下选择子代来完成新一代。

我在这里问的是,是否有办法选择孩子来填补新一代或者我应该以某种方式选择(也许减少)父母来交配,这样我最终就不会有那么多孩子了。

谢谢:)

一般来说,对于遗传算法,您选择的配对算法使种群大小保持固定。例如,在种群规模为500的情况下,你会选择250对合适的个体进行交配,每对有2个后代,或者选择500对,每对有1个后代。

在你的例子中,听起来你想只考虑前20%(100)个人"适合"每一代,所以他们是唯一会产生任何孩子的人。另一种方法是对你随机选择的亲本对进行加权,这样更适合的个体更有可能被选中(从而最终获得更多的配偶)。

最新更新