2013-08-23 20 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