c# – 为遗传算法表示二进制基因组的合理方法是什么?
作者:互联网
我的previous question缺乏经验,并且基于一个假设.现在我更聪明了. (把1和0放在一个字符串里?Pah!我嘲笑这个建议!)
我的问题是,我应该如何编码我的基因组?
在纸面上,它们看起来像这样:
01010011010110010
17位,用于编码(在某些情况下单独地,在某些情况下作为组)要测试的参数.
要求是:
>需要可扩展.目前可能有17个,但随着选项的添加,删除或修改范围,这可能会增长/缩小.
>每个位都需要单独翻转,以表示点突变.
>理想情况下,应该很容易取两个基因组的最后X%并将它们切换(代表交叉).
>必须有一种直接用明文表示基因组的方法.这里强调的是方便而不是人类的可译性. (想想URL缩短器.)
有人有什么好主意吗? (如果它有用,我正在使用C#.)
解决方法:
像Andrey说的那样,BitArray可能是你最好的答案,它符合你的所有要求.
1)您可以使用构造函数设置位数
2)它允许你设置(打开或关闭),或者,和,Xor,Not on bits
3)你可以循环你的最后一个x%做交叉
4)有一个ToString,允许你输出它.
标签:c,encoding,binary,genetic-algorithm,genome 来源: https://codeday.me/bug/20190606/1189620.html