在DEAP example(Python的框架)有一個代碼:地圖,然後迭代 - 爲什麼?
# Evaluate the entire population
fitnesses = list(map(toolbox.evaluate, pop))
for ind, fit in zip(pop, fitnesses):
ind.fitness.values = fit
爲什麼他們使用map
,然後for
?爲什麼不只是:
for ind in pop:
ind.fitness.values = toolbox.evaluate(ind)
我能想到的唯一原因是,在分配給任何「ind」之前評估所有對「toolbox.evaluate()」的調用可能很重要.fitness.values'必須發生。也許是併發問題?或分配有副作用? – Alfe
也許只是遺體黑客的代碼。也許在舊版本有使用'fitnesses'用於不同的目的兩條線之間的東西。 – Alfe