我刚刚开始使用 DEAP。之前我用的是基于Matlab的GA,交叉变异后就是选择指定大小的较好个体,然后更新种群。但是我很难理解为什么在 DEAP 中,在交叉和变异过程之后需要评估具有无效适应度的个体:
invalid_ind = [ind for ind in offspring if not ind.fitness.valid]
fitnesses = map(toolbox.evaluate, invalid_ind)
for ind, fit in zip(invalid_ind, fitnesses):
ind.fitness.values = fit
Run Code Online (Sandbox Code Playgroud)
我尝试删除这些代码,但似乎算法永远不会收敛。甚至我也没有看到那些可以更新人口/后代的东西,那么它们有什么用呢。提前致谢!!!