我正在编写基因程序,但已经有一段时间了,所以我有点生气。
如果我从100个人的群体开始,并通过锦标赛选择再次选择50,并且在交叉之后每对产生50个下一代个体,我留下100个第一代个体(将不再重现,不再是“人口”的一部分)和50个当代个体。所以我的锦标赛选择50不会真的有效。比赛选择的人还应该继续下一代吗?或者他们应该以某种方式重现2:1?
感谢您的复习!
答案 0 :(得分:3)
在遗传算法中有很多种方法可以进行选择和交叉,但一般来说,如果你使用锦标赛选择,你最好选择与你的人口一样多的个体并让他们产生相同数量的后代。
有许多方法可以产生与父母相同数量的后代,但是,作为一个例子,如果执行直接的一点交叉,则初始父母的每一半将与另一个父母的另一半结转。这样两个父母产生两个后代。例如
Parent 1: 00000000
Parent 2: 11111111
在第三位之后有一个交叉点。
Offspring 1: 00011111
Offspring 2: 11100000
之后,您可以丢弃整个初始人口,并将其替换为所有后代。
注意:这并未考虑您可能希望包含的任何专业运营商,这可能有助于将最优秀的个人推向每个人群。但那是另一个故事......