当我尝试模拟突变过程时,在编写遗传算法时遇到了这个问题:
1.所以我选择随机position = randint(0, len(genes)-1)
其中基因的格式为“ 10101”,并且随机设置1和0
2.我尝试用0或1替换1或0以模拟突变,然后出现很多错误。

我这样尝试过:

position = randint(0, len(genes)-1)
if(genes[position]=="1"):
    genes[position] = "0"
if(genes[position]=="0"):
    genes[position] = "1"


那行不通。
我也尝试过:

if(genes[position_to_mutate]=="1"):
genes_new = ""
    if(position_to_mutate == 0):
        genes_new = "0" + genes[1:len(genes)]
        print "genes z zerowym nowym : ", genes
    if(position_to_mutate!=0):
        genes_new = genes[0:position_to_mutate] + "0" + genes[position_to_mutate+1:len(genes)]
    if(position_to_mutate==4):
        genes_new = genes[0:len(genes)-2] + "0"


那么,如何通过一个符号在字符串中的位置替换另一个符号呢?

最佳答案

字符串是不可变的,您需要重新分配,您可以执行以下操作:

genes = "101010101"
position = randint(0, len(genes)-1)
new_val = "1" if genes[position] == "0" else "0"
genes = genes[:position] + new_val + genes[position+1:]

07-24 19:23