C# 什么';用遗传算法表示二进制基因组是一种明智的方法吗?

C# 什么';用遗传算法表示二进制基因组是一种明智的方法吗?,c#,encoding,binary,genetic-algorithm,genome,C#,Encoding,Binary,Genetic Algorithm,Genome,我的想法掩盖了我的经验不足,是基于一种假设。现在我聪明多了。(把1和0放在一个字符串中?呸!我对这个建议嗤之以鼻!) 我的问题是,我应该如何编码我的基因组 在纸上,它们看起来是这样的: 01010011010110010 17位,对要测试的参数进行编码(在某些情况下是单独的,在某些情况下是成组的) 这些要求是: 需要可扩展。目前可能有17个,但随着选项的添加、删除或范围的修改,这可能会增加/减少 每个位都需要单独翻转,以表示点突变 理想情况下,应该很容易获取两个基因组的最后X%并将其切换(代表

我的想法掩盖了我的经验不足,是基于一种假设。现在我聪明多了。(把1和0放在一个字符串中?呸!我对这个建议嗤之以鼻!)

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

在纸上,它们看起来是这样的:

01010011010110010
17位,对要测试的参数进行编码(在某些情况下是单独的,在某些情况下是成组的)

这些要求是:

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

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

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

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

    2) 它允许您设置(开或关)、或、和、异或,而不是位

    3) 你可以在最后的x%上循环进行交叉


    4) 有一个允许您输出的ToString。

    位数组中的编码组在对位进行变异或交叉时可能会生成无效的成员。看看其他的编码。