0

我正在用 C++ 编写遗传算法,在搜索了各种 GA'a 运算符(选择、交叉、变异)的方法后,我提出了一个疑问。假设我的初始人口为 500。我的选择将包括获得前 20%(基于最佳适应度)。所以我让100个人交配。当我做交叉时,我会得到 2 个孩子,他们一起有 50% 的存活率。到目前为止,一切都很好。我开始突变,一切正常。现在当我开始选择下一代时,我看到我有很多孩子(在这种情况下,如果你想知道的话,是 4950)。现在的问题是,每次运行 GA 时,如果我将所有孩子都传给下一代,每代的个体数量将成倍增加。

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

谢谢 :)

4

1 回答 1

2

通常对于 GA,您选择交配算法以使种群大小保持固定。因此,对于人口规模为 500 的示例,您将选择 250 对合适的个体进行交配,每对有 2 个后代,或者选择 500 对并有 1 个后代。

在您的示例中,听起来您只想将前 20% (100) 个人视为“适合”每一代人,因此他们是唯一会生孩子的人。另一种方法是仅对您随机选择的父母对进行加权,以便更有可能选择更合适的个体(因此最终会有更多的配偶)。

于 2014-06-12T16:15:58.940 回答