1

因此,如果我使用以下方法在遗传算法中实现交叉:

Input: Two strings of n bits x and y
Output: Two strings of n bits x' and y'

并像这样应用交叉运算符:

随机选择一个交叉站点(以相等的概率),将每个字符串分成两个非零长度的子字符串:

x = [x1, x2];
y = [y1, y2]

和:

x1.length = y1.length

输出生成为:

x' = [x1, y2]
y' = [y1, x2]

鉴于您从

(x1, y1) = ((1 0 1 0) (1 1 1 1))

指定哪些4 bit strings是仅通过交叉获得的可能值。

那么这是对的吗?

0 1 0 1

我认为将它们加在一起是正确的,但我对此有点迷茫。

4

1 回答 1

1

将它们加在一起是错误的。

基因组长度为 4 意味着存在 3 个可能的交叉点(非零长度)。这些位于 4 位中的每一位之间。

如果选择交叉点 2,输入:

( 1010 ) ( 1111 ) -- x & y --

你得到的字符串是:

( 10 . 11 ) -- x 的前 2 个和 y 的后 2 个。

( 11 . 10 ) -- y 的前 2 个和 x 的后 2 个。

因此很容易找出其他 2 个排列(交叉点 1 和 3)。

我怀疑这是家庭作业,所以我不会为你做这一切:)

于 2012-10-01T11:37:49.370 回答