改变具有特定概率的整数列表列表
Mutate a list of lists of integers with specific probability
我有以下整数列表:
[[0, 2, 3, 1, 3, 2, 0, 1],
[0, 3, 2, 1, 2, 3, 0, 1],
[1, 2, 3, 0, 3, 2, 1, 0],
[2, 1, 3, 0, 3, 1, 2, 0]]
将整个列表作为一个总体,将其中的每个子列表作为一个个体,就像这个例子:
Population scheme
我需要创建一个函数来读取个体并以一定的概率随机变异其中一条染色体,同时考虑到列表中的数字只能在这个 0-3 范围内。
有人知道开始开发这个的方法吗?我完全迷路了,不知道从哪里开始,我尝试的一切都失败了,所以我正在寻找如何去做的建议。
from random import randint, uniform;
def mutateIndividual(ind):
if uniform(0,1) < prob: # random probability of mutation
mutationIndex = randint(0, len(ind)) # select one chromosome
ind[mutationIndex] = randint(0,3) # mutate
return ind;
for i in range(0, len(population)): # outer loop on each individual
population[i] = mutateIndividual(population[i]);
练习:您可能想要修改程序,将染色体突变为不同于现有的染色体。
我有以下整数列表:
[[0, 2, 3, 1, 3, 2, 0, 1],
[0, 3, 2, 1, 2, 3, 0, 1],
[1, 2, 3, 0, 3, 2, 1, 0],
[2, 1, 3, 0, 3, 1, 2, 0]]
将整个列表作为一个总体,将其中的每个子列表作为一个个体,就像这个例子: Population scheme
我需要创建一个函数来读取个体并以一定的概率随机变异其中一条染色体,同时考虑到列表中的数字只能在这个 0-3 范围内。
有人知道开始开发这个的方法吗?我完全迷路了,不知道从哪里开始,我尝试的一切都失败了,所以我正在寻找如何去做的建议。
from random import randint, uniform;
def mutateIndividual(ind):
if uniform(0,1) < prob: # random probability of mutation
mutationIndex = randint(0, len(ind)) # select one chromosome
ind[mutationIndex] = randint(0,3) # mutate
return ind;
for i in range(0, len(population)): # outer loop on each individual
population[i] = mutateIndividual(population[i]);
练习:您可能想要修改程序,将染色体突变为不同于现有的染色体。