我有一个具有以下基因的人:genes = [8, 2, 300, 2, 25, 10, -64, -61]然后应用以下高斯突变:toolbox.register("mutate", tools.mutGaussian, mu=0, sigma=1, indpb=1)toolbox.mutate(genes)产生新基因:[9, 4, 301, 2, 24, 9, -65, -60]我与这种突变有关的问题是,该个体的高斯统计似乎是使用所有基因而不是每个基因来确定的...而大多数基因的+/- 2突变都很好,该值的起始值应该发生更大的变化。对我来说很奇怪,在docs中没有考虑到这种需求。是否没有使用每个基因的统计信息来建立个体变异的内置机制?我假设使用其所有基因为种群中的每个个体形成了分布。我想要的是使用种群中的所有个体为每个基因形成一个分布。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您可以将sigma设置为列表而不是浮点数。这样,如果每个基因取自不同的范围,则可以调整sigma的值以更好地适合每个基因取的值。如果您不提前知道哪些基因会比其他基因更大,则可以实现自己的突变功能。例如,您可以将高斯的sigma设置为取决于基因的值:def mutGaussian(individual, sigma, indpb): for i in range(len(individual)): if random.random() < indpb: individual[i] = random.gauss(individual[i], sigma*individual[i]) return individual, (adsbygoogle = window.adsbygoogle || []).push({}); 10-08 08:49