我正在构建一个遗传算法,我想知道用什么数据结构来编码染色体(本质上是一个由0和1组成的长序列)。
我的目标是提高在染色体中随机改变比特和在染色体之间进行交叉的效率。本质上是比特或比特的子序列的大量复制和改变。
到目前为止,我只是使用普通的布尔数组,但我觉得应该有更好的数据结构来有效地处理非常大量的二进制数据。
有什么建议吗?
发布于 2011-08-11 23:27:24
切换到使用int原语来表示二进制值的组,并使用逐位操作和掩码来更改二进制值的组,可以大大提高速度,具体取决于您处理数据的方式。你可以使用随机生成的掩码一次随机地改变基因块。
如果你正在扫描整个东西或者提前知道索引,那么数组是很难被击败的。然而,在数组的其他部分上复制数组的部分可能具有挑战性,但它仍然相当有效。
如果你更关心的是交换固定大小的基因组,那么用每个叶子上的基因组构建一个具有n个分支的2级树可以让你非常快地交换基因组。这些组可能也不需要具有相同的大小。如果你需要将基因进一步分解成染色体,你可以在树中添加一个中间级别。
https://stackoverflow.com/questions/7028391
复制相似问题