Я только начинаю использовать DEAP. Раньше я использовал ГА на основе Matlab, который после скрещивания и мутации отбирал лучших особей с заданным размером, а затем обновлял популяцию. Но мне довольно сложно понять, почему в 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
Я пытался удалить этот код, но, похоже, алгоритм никогда не сойдется. И даже я не видел, чтобы они могли обновлять популяцию/потомство, так для чего они нужны. Заранее спасибо!!!