通过 DEAP 获得每一代中最好的个体

问题描述 投票:0回答:1

我使用 DEAP 学习遗传算法,我想动画显示每一代中最好的个体如何变化。

为此,我使用统计和多重统计类:

stats = tools.Statistics(lambda ind: ind.fitness.values)
stats.register('min', np.min)
stats.register('mean', np.mean)
history = tools.Statistics(lambda ind: ind)
### Here i get the best individual
history.register('hof', lambda population: list(filter(lambda ind: tspDistance(ind) == np.min(list(map(lambda x: x.fitness.values, population))), population))[0])
mstats = tools.MultiStatistics(fitness=stats, history=history)

hof = tools.HallOfFame(consts.HALL_OF_FAME_SIZE)

population, logbook = algorithms.eaSimple(population, toolbox,
                                              cxpb=consts.P_CROSSOVER, mutpb=consts.P_MUTATION,
                                              ngen=consts.MAX_GENERATIONS, stats=mstats,
                                              halloffame=hof, verbose=True)

但这需要很长时间。 这是获得每一代最佳个体的简单方法吗?

python genetic-algorithm population deap
1个回答
0
投票

好吧,这太简单了...

    hof = tools.HallOfFame(consts.HALL_OF_FAME_SIZE)
    stats = tools.Statistics(lambda ind: ind.fitness.values)
    stats.register('min', np.min)
    stats.register('mean', np.mean)
    history = tools.Statistics(lambda ind: ind)
    history.register('hof', lambda pop: hof[0])
    mstats = tools.MultiStatistics(fitness=stats, history=history)
© www.soinside.com 2019 - 2024. All rights reserved.