首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传算法交叉

遗传算法交叉
EN

Stack Overflow用户
提问于 2012-09-27 22:43:01
回答 1查看 578关注 0票数 1

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

代码语言:javascript
复制
Input: Two strings of n bits x and y
Output: Two strings of n bits x' and y'

然后像这样应用交叉运算符:

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

代码语言:javascript
复制
x = [x1, x2];
y = [y1, y2]

通过以下方式:

代码语言:javascript
复制
x1.length = y1.length

输出生成为:

代码语言:javascript
复制
x' = [x1, y2]
y' = [y1, x2]

假设你一开始就

代码语言:javascript
复制
(x1, y1) = ((1 0 1 0) (1 1 1 1))

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

那么这是对的吗?

代码语言:javascript
复制
0 1 0 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)。

我怀疑这是作业,所以我不会为你做所有的事情:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12624022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档