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

二维阵列遗传算法中的交叉算法
EN

Stack Overflow用户
提问于 2020-01-06 19:56:46
回答 1查看 764关注 0票数 3

我有以下两条染色体,它们被表示为二维数组。

代码语言:javascript
复制
// First chromosome
[
  [ 12 45 23 ]
  [ 34 01 89 ]
  [ 33 90 82 ]
]

// Second chromosome
[
  [00 45 89 ]
  [00 00 34 ]
]

染色体上的限制是染色体阵列中的每个阵列必须保持在一起。例如,在第一染色体上,[ 12 45 23 ]必须保持在一起。考虑到这一点,我认为采用上述染色体结构进行交叉的方法是随机选择一个水平交叉点。例如:

代码语言:javascript
复制
// 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
]

这是对二维染色体阵列进行突变的正确方法吗,哪些行必须保持完整?如果是这样的话,这个方法有特定的名称吗?或者这会被One-point交叉对待吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-31 09:52:06

此方法有特定的名称吗?或者这会是一个点交叉吗?

在各种关于变长遗传算法的论文中,它被称为单点交叉。

对于可变长度的染色体,通常以一种更一般的方式提出一个点交叉:你可以为每个染色体选择一个不同的交叉点。例如。

代码语言:javascript
复制
C1 = [ A1, A2, A3, A4, A5, A6]

C2 = [ B1, B2, B3, B4]

选择交叉点1表示C13选择C2

代码语言:javascript
复制
C1 = [ A1 | A2, A3, A4, A5, A6]

C2 = [ B1, B2, B3 | B4]


C1' = [A1 B4]
C2' = [B1, B2, B3, A2, A3, A4, A5, A6]

这使得染色体的长度开始增长。视具体问题而定,这可能是一种需求,也可能只是臃肿(在这两种情况下,您可能需要在健身功能中考虑这一点)。

这是对二维染色体阵列进行突变的正确方法吗,哪些行必须保持完整?

这是一个简单的方法(所以是个好方法)。均匀交叉是另一种简单的方法。

同步可变长度交叉:可变长度基因组的有意义交叉 (本杰明·赫特和凯文·沃威克,,第11卷,第1期,2007年2月)描述了其他有趣的(更复杂的)可能性。

最好的交叉是非常问题特有的

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

https://stackoverflow.com/questions/59618187

复制
相关文章

相似问题

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