【问题标题】:What's a sensible way to represent a binary genome for a genetic algorithm?为遗传算法表示二进制基因组的明智方法是什么?
【发布时间】:2011-04-26 00:34:44
【问题描述】:

我的previous question 掩盖了我的缺乏经验,并且是基于一个假设。现在我聪明多了。 (将 1 和 0 放在一个字符串中?呸!我对这个建议一笑置之!)

那么我的问题是,我应该如何编码我的基因组

在纸面上,它们看起来像这样:

01010011010110010

17 位编码(在某些情况下单独,在某些情况下作为组)要测试的参数。

要求是:

  1. 需要可扩展。目前可能有 17 个,但随着选项的添加、删除或范围的修改,这可能会增加/减少。
  2. 每个位都需要单独翻转,以表示点突变。
  3. 理想情况下,取两个基因组的最后 X% 并将它们转换(表示交叉)应该很容易。
  4. 必须有一种直接的方式以明文形式表示基因组。这里的重点是方便而不是人工翻译。 (想想 URL 缩短器。)

有人有什么好主意吗? (如果有用的话,我用的是 C#。)

【问题讨论】:

  • BitArray 中的编码组在变异或交叉位时可能会生成无效成员。查看here 了解一些替代编码。

标签: c# encoding binary genetic-algorithm genome


【解决方案1】:

正如 Andrey 所说,BitArray 可能是您的最佳答案,它满足您的所有要求。

1) 可以用构造函数设置位数

2) 它允许您设置(开或关)、或、与、异或、不在位

3) 你可以遍历你最后的 x% 来做交叉

4) 有一个 ToString 可以让你输出它。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 2016-08-05
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 2016-09-06
      • 2011-02-22
      • 1970-01-01
      相关资源
      最近更新 更多