因此,如果我在遗传算法中使用以下代码来实现交叉:
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我认为将它们加在一起是正确的,但我对此有点迷惑。
发布于 2012-10-01 19:37:49
把它们加在一起是错误的。
基因组长度为4意味着有3个可能的crossover点(非零长度)。它们位于4位中的每一位之间。
如果选择交叉点2,输入为:
(1010) (1111) -- x&y-
生成的字符串为:
(10.11) -x的前2个和y的最后2个。
(11.10) -- y的前2个和x的最后2个。
因此,很容易找出其他两个排列(交叉点1和3)。
我怀疑这是作业,所以我不会为你做所有的事情:)
https://stackoverflow.com/questions/12624022
复制相似问题