Deap:想要了解创造最佳个体的一代人

时间:2014-07-18 18:29:11

标签: deap

我正在运行一个遗传算法程序,可以在运行结束时找到最好的个体(hof [0]),但我想知道哪一代产生了它。是否有任何hof [0]的属性可以帮助打印个人和创建它的一代。 我试着查看手册和谷歌的答案,但无法在任何地方找到它。 我也找不到可以打印的个人属性列表。有人可以指向正确的链接和文档。

由于

2 个答案:

答案 0 :(得分:0)

没有内置方法可以做到这一点(但据我所知),实现这一点可能是一项相当大的任务。最简单的(最简单的思考,而不是实现)是将个体变为元组,其中tup[0]是个体,而tup [1]是它产生的一代或类似的东西。

如果您正在寻找一种hacky方式,您可以尝试将每一代的孩子写入文本文件,并使用文本文件交叉检查您的最终解决方案;但除此之外,我不确定。

您可以尝试在Google Group上发帖,但可能需要几天时间才能回复。

祝你好运!

答案 1 :(得分:0)

这篇精彩的帖子建议跟踪日志,或将适应性和显性地添加到个人中: https://groups.google.com/g/deap-users/c/r7fZbMwHg3I/m/BAzHh2ogBAAJ

对于后者: 如果您在本地使用算法(建议在教程之外进行操作,因为总会出现诸如添加绘图之类的问题或此类问题),那么您可以修改适应度更新行以使其类似于:

fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
for ind, fit in zip(invalid_ind, fitnesses):
    ind.fitness.values = fit
    ind.generation = gen  # now we can: print(hof[0].gen)

if halloffame is not None:
    halloffame.update(population)