为遗传算法表示二进制基因组的合理方法是什么?

时间:2010-10-15 15:49:19

标签: c# encoding binary genetic-algorithm genome

previous question认为我缺乏经验,并且基于一个假设。现在我更聪明了。 (将1和0放在一个字符串中?Pah!我嘲笑这个建议!)

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

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

01010011010110010

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

要求是:

  1. 需要可扩展。目前可能有17个,但随着选项的添加,删除或修改范围,这可能会增加/缩小。
  2. 每个位都需要单独翻转,以表示斑点突变。
  3. 理想情况下,应该很容易取两个基因组的最后X%并将它们切换(代表交叉)。
  4. 必须有一种直接用明文表示基因组的方法。这里强调的是方便而不是人类的可译性。 (想想URL缩短器。)
  5. 有人有什么好主意吗? (如果它有用,我正在使用C#。)

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

安德烈说,BitArray可能是你最好的答案,它符合你的所有要求。

1)您可以使用构造函数

设置位数

2)它允许你设置(开或关),或,和,Xor,不在位

3)你可以循环上一个x%来做交叉

4)有一个ToString,允许你输出它。