繁体   English   中英

Python中遗传算法的哪些数据类型?

[英]Which data types for genetic algorithms in Python?

我正在用Python实现一个GA,需要存储一个1和0的序列,所以我将我的数据表示为二进制文件。 那个最好的数据结构是什么? 简单的字符串?

如果您的染色体是固定长度的位串,请考虑使用Numpy数组和矢量化操作而不是列表。 这些可能比Python列表快得多。 例如,可以使用一点交叉

def crossover(a, b):
    """Return new individual by combining parents a and b
       with random crossover point"""
    c = np.empty(a.shape, dtype=bool)
    k = np.random.randint(a.shape[0])
    c[:k] = a[:k]
    c[k:] = b[k:]
    return c

如果你不想使用Numpy,那么字符串似乎非常合适; 它们比列表更紧凑,列表存储指向元素而不是实际元素的指针。

最后,一定要看看Pyevolve如何代表染色体; 它似乎是使用Numpy这样做的。

我认为坚持使用琴弦是一个好主意。 你可以轻松地将琴弦切成碎片。 如果您需要将它们作为列表进行操作,可以使用“list(str)”进行转换。 一旦你有了一个列表,你可以改变它并使用“''。join(lst)”将它变回一个字符串。

就个人而言,我不会使用long或其他整数类型来存储为位。 它可能更节省空间,但是当您想要进行重组时处理数据的麻烦将是相当大的。 如果突变由除了翻转之外的某些东西组成,突变也会有问题。 此外,代码将更难阅读。

只需2美分。 希望能帮到你。

您可以尝试使用bitarray 或者你可以玩缓冲区

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM