2013-08-23 35 views
2

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) 
+3

我能想到的唯一原因是,在分配給任何「ind」之前評估所有對「toolbox.evaluate()」的調用可能很重要.fitness.values'必須發生。也許是併發問題?或分配有副作用? – Alfe

+0

也許只是遺體黑客的代碼。也許在舊版本有使用'fitnesses'用於不同的目的兩條線之間的東西。 – Alfe

回答

2

我是DEAP開發人員之一。

我們使用地圖,使我們可以很容易地通過並聯地圖更換地圖並行的評測。

在後面的示例中,我們使用一個工具箱,其中註冊了一個地圖(__buitins__.map),可以用multiprocessing.Pool.mapscoop.futures.map替換。您可以查看文檔以瞭解如何分發評估here

+0

遺憾地這樣說,該鏈接不起作用。你能更新鏈接嗎?感謝您的幫助。 –

+0

@ZongzeWu完成! – mitch