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

我之前的问题是缺乏经验而且基于一个假设。 现在我更聪明了。 (把1和0放在一个字符串里?Pah!我嘲笑这个建议!)

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

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

01010011010110010 

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

要求是:

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

有人有什么好主意吗? (如果它有用,我正在使用C#。)

像Andrey说的那样,BitArray可能是你最好的答案,它符合你的所有要求。

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

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

3)你可以循环你的最后一个x%做交叉

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

BitArray