当我尝试模拟突变过程时,在编写遗传算法时遇到了这个问题:
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:]