我正在用python开发一个遗传算法,因为染色体是由字符串和整数组成的。为了应用遗传操作,我想把这些整数和字符串组转换成位串。在
例如,如果一条染色体是:
["Hello", 4, "anotherString"]
我希望它变成这样:
^{pr2}$
(这不是实际的翻译)。所以。。。我该怎么做?染色体将包含相同数量的字符串和整数,但这些数字可能因算法的不同而有所不同。在
很明显,我想要得到的是连接的染色体中每个元素的位表示。在
如果你认为这不是应用遗传操作的最好方法(比如变异和简单的交叉),告诉我!我乐于接受新的想法。在
非常感谢!
曼纽尔
Tags:
把所有的东西都转换成一个串联的字符串,而不是应用遗传操作似乎不是最好的主意。遗传操作可以破坏很多东西(特别是当你对个体有一些限制的时候),另外这种解决方案的有效性可能很低。我建议采用不同的方法。在
尝试使用超生基因概念(wiki)来实现个体。描述了将其应用于遗传算法的例子here。另外,根据this的说法,它提高了整体遗传算法的性能。
在我看来这会使设计更清楚。我会尝试这种方法。在
一旦您准确地描述了从字符串到位字符串的转换应该如何进行,“如何”应该相当容易。如果遗传算法应该在位级别上工作,那么显然位级字符串是有意义的,但是它可能比使用数字或字符串慢得多。在
您可以使用struct模块将字符串和整数转换为bytestrings(并返回),这正好是一个字节的8位。如果出于某种原因,您希望这些二进制bytestrings作为由
0
和1
字符组成的文本字符串,那么当然可以以二进制形式打印它们。在编辑:忘记提醒您如何在Python2.6或更高版本中将字节格式化为由
0
和1
字符组成的文本字符串:当然,要从这样一个字符串返回到一个字节:
^{pr2}$相关问题 更多 >
编程相关推荐