编程语言
首页 > 编程语言> > c# – 为遗传算法表示二进制基因组的合理方法是什么?

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