Python 以特定概率对整数列表进行变异

Python 以特定概率对整数列表进行变异,python,genetic-algorithm,mutation,Python,Genetic Algorithm,Mutation,我有以下整数列表: [[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]] 将整个列表作为一个总体,并将其中的每个子列表作为一个个体,如下例所示: 我需要创建一个函数来读取个体并以一定的概率随机变异其中一条染色体,考虑到列表中的数字只能在这个0-3范围内 有人知道什么方法,或者什么方法来开始开发这个吗?我完全迷路了,不知道从哪里开始,

我有以下整数列表:

[[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]]
将整个列表作为一个总体,并将其中的每个子列表作为一个个体,如下例所示:

我需要创建一个函数来读取个体并以一定的概率随机变异其中一条染色体,考虑到列表中的数字只能在这个0-3范围内

有人知道什么方法,或者什么方法来开始开发这个吗?我完全迷路了,不知道从哪里开始,我尝试的每件事都失败了,所以我在寻找如何做的建议

来自随机导入randint,统一;
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]);
def变异个体(ind): 如果一致(0,1)

练习:您可能希望修改程序,使染色体变异为与现有染色体不同的染色体。

为什么不在1、2和3之间选择,添加值,然后包装值?您好,谢谢!实际上,现在我使用的是二进制序列,而不是实际的数字,例如“[[0,0,1,0,1,1,0,1,1,1,1,0,0,0,1],[6],[0]],”(仅列表中的第一项),在这种情况下,它会有一点不同,对吗?因为我只能将1变为0,将0变为1,那么这个变异索引会改变,对吗?如果你使用的是二进制字符串,那么它会改变实际的变异。为了解释这一点,你可以这样做:“ind[mutationIndex]=not ind[mutationIndex]”,就像它是1一样,它会将其更改为0,反之亦然。我可能没有正确理解您的意思,但要清楚,这不应该影响突变指数,因为您仍然需要选择个体中的染色体进行突变。