我有两个大小不同的基因,我想用它们产生后代。染色体的位置对基因没有影响。
我想知道在这种情况下通常会做什么
基因1:
123456789
基因2:
ABCDEFGHIJKL
我可以在每个交叉点中使用一个交叉点
12345.6789
ABCD.EFGHIJKL
有了这个,我有 8 种可能的组合
1. 12345ABCD
2. 12345EFGHIJKL
3. 6789ABCD
4. 6789EFGHIJKL
5. ABCD12345
6. ABCD6789
7. EFGHIJKL12345
8. EFGHIJKL6789
创建所有 8 个后代是否可以,或者我应该只创建 1 个,如果是这样,我是否需要随机化方法或只选择一个并坚持下去?
最佳答案
如果我们谈论的是单点交叉,遗传算法正在模拟生物过程,其中染色体在一点交叉并在交叉点之后交换它们的部分。
如上图所示, parent 在交叉点后交换染色体的“尾部”部分。因此,您只有 2 个 后代/子代由交叉产生。这就是交叉在自然界中发生的方式,生物学家如何描述它。
如果您引用任何涉及遗传算法主题的文献,它们也会说明这一约定,即在使用单点交叉时,父染色体被拆分为 头 和 尾 ,表示为 H/T(参见下面的引文):
H T
123456.789
H T
ABCDEF.GHI
因此,通过这种交叉产生的后代将是:
123456GHI
ABCDEF789
遵循这个约定比创建所有可能的组合然后选择随机或最适合的后代要好得多,因为它在计算上更有效。如果你想解决更复杂的问题,你只需增加种群规模以允许更多的多样性。
或者,您可以使用多点交叉,它遵循类似的约定,其中染色体被分成几部分, parent 交换部分的方式是后代染色体只是 parent 染色体的交替,所以如果您的 parent 有染色体:
A1.A2.A3.A4
B1.B2.B3.B4
|
| this will produce offspring
|
A1 B2 A3 B4
and
B1 A2 B3 A4
这个答案也可能对你有帮助:
Crossover of chromosomes with different length
关于genetic-algorithm - 不同长度基因的交叉模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33783860/