我有以下两个以2D阵列表示的染色体。
// First chromosome
[
[ 12 45 23 ]
[ 34 01 89 ]
[ 33 90 82 ]
]
// Second chromosome
[
[00 45 89 ]
[00 00 34 ]
]
对染色体的约束是,染色体阵列中的每个阵列必须保持在一起。例如,在第一个染色体中[ 12 45 23 ]
必须保持在一起。考虑到这一点,我相信与上述染色体结构进行交叉的方法是随机选择一个水平交叉点。例如以下内容:
// First produced off-spring
[
[ 12 45 23 ] // First chromosome
[ 00 00 34 ] // Second chromosome
]
// Second produced off-spring
[
[ 00 45 89 ] // Second chromosome
[ 34 01 89 ] // First chromosome
[ 33 90 82 ] // First chromosome
]
这是对必须保持完整行的2D染色体阵列进行突变的正确方法吗?如果是这样,此方法是否有特定名称?还是会在One-point
交叉下出现?
此方法是否有特定名称?还是会发生单点交叉?
在有关可变长度遗传算法的各种论文中,它称为单点交叉。
对于可变长度的染色体,通常以更通用的方式提出一个点交叉:您可以为每个染色体选择一个不同的交叉点。例如:
C1 = [ A1, A2, A3, A4, A5, A6]
C2 = [ B1, B2, B3, B4]
获得1
的交叉点C1
和3
的选择交叉点:
C2
这使染色体长度开始增长。根据特定的问题,这可能是必要条件,或者只是ating肿(在两种情况下,您可能都需要在适应度函数中加以考虑)。
这是在必须保持完整行的2D染色体阵列上执行突变的正确方法吗?
这是一种简单的方法(很好)。 C1 = [ A1 | A2, A3, A4, A5, A6]
C2 = [ B1, B2, B3 | B4]
C1' = [A1 B4]
C2' = [B1, B2, B3, A2, A3, A4, A5, A6]
是另一种简单的方法。
[Uniform crossover(本杰明·赫特和凯文·沃威克,IEEE演化计算交易,第11卷,第1期,2007年2月)包含其他可能性。
最佳交叉非常特定于问题。