【发布时间】:2020-06-15 18:12:36
【问题描述】:
我有一个项目,我必须使用遗传算法的位翻转突变。
到目前为止,我的代码如下所示:
def mutation(pop, mr):
for i in range(len(pop)):
if (random.random() < mr):
if (pop[i] == 1):
pop[i] = 0
else:
pop[i] = 1
else:
pop[i] = pop[i]
return pop
mut = mutation(populations, 0.3)
print(mut)
例如,我有以下内容(取决于我的项目,populations 可能看起来像 populations_1 或 populations_2):
populations_1 = [[1, 0], [1, 1], [0, 1], [1, 0]]
populations_2 = [[1], [1], [0], [1]]
我正在做的是将随机生成的数字分配给populations 中的元素,并检查它是否小于mutation rate。如果是,那么bit-flip mutation 会发生,如果不是,它会照原样发生remain。对于populations_1的情况,如果populations_1 index 2小于突变率,那么它应该变成[1, 0]。对于populations_2 index 3,如果它小于突变率,它应该变成[0]。这是mutation function 的目标。
任何人都可以帮助我将我目前拥有的代码转换为适应诸如 population_1 中的情况吗?我认为我到目前为止的代码仅适用于 population_2。
任何帮助/建议/阅读将不胜感激!谢谢!
【问题讨论】:
-
我不确定
population_1索引 2 会发生什么,其中值为[1,1]。在这种情况下,他们应该变成[0,0]? -
@DavideBrex 如果它满足条件,那么它应该。 [0, 0] 也是如此。
标签: python-3.x mutation